runtime: Ignore nvidia-vaapi-driver when capturing VA-API drivers

Simon McVittie requested to merge wip/dota2-issue2392-ignore-nv-vaapi into main

Normally, we can rely on driver modules such as DRI, VA-API, Vulkan and GLX having relatively minimal, low-level dependencies, which are not too much trouble to import into the container. However, nvidia-vaapi-driver pulls in GStreamer core libraries, all of GLib, elfutils' libdw, and several compression libraries.

The more libraries we import into the container, the more likely we are to have one of the failure modes that our container is designed to avoid: either a library that causes trouble for some reason (like libbz2 in Dota-2#2392), or a game developer accidentally relying on application-level functionality of a newer operating system that our container cannot guarantee to provide in a portable way.

GStreamer is particularly problematic here, because it has its own plugin architecture. Importing a driver that links to GStreamer, but none of GStreamer's plugins, is unlikely to work as desired: it will be unable to encode or decode any videos, likely making nvidia-vaapi-driver essentially useless.


This is one of two possible solutions to Dota-2#2392; the other is !573 (merged). I think pressure-vessel will be most robust if we do both.

/cc @denittis @timo

Merge request reports