Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

32-bit Nvidia drivers fail to load because libnvidia-glsi.so.x.y.z is not found #358

Open
1 task done
smcv opened this issue Jan 25, 2024 · 3 comments
Open
1 task done
Labels
jira keep-open Label for the github action. Keeps it open even if issue is abandoned type/bug Something isn't working

Comments

@smcv
Copy link

smcv commented Jan 25, 2024

Ensure there isn't an existing issue for this and check the wiki

  • This issue is not a duplicate and I have checked the wiki.

Current Behavior

To reproduce, open Steam's Help -> Steam Runtime Diagnostics.

On a working system, you should have both i386 and x86_64 accelerated GLX, EGL and Vulkan drivers, and ideally also VDPAU.

Steam has a diagnostic tool for this, which means it should be very easy to verify whether the Snap app and Valve's official .deb work equally well.

In this Snap app, 64-bit drivers seem to be OK (VA-API is missing, but that's normal for Nvidia):

    "x86_64-linux-gnu" : {
      "can-run" : true,
      "libdl-LIB" : "lib/x86_64-linux-gnu",
      "libdl-PLATFORM" : "haswell",
      "runtime-linker" : {
        "path" : "/lib64/ld-linux-x86-64.so.2",
        "resolved" : "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"
      },
      "library-issues-summary" : [
      ],
      "graphics-details" : {
        "x11/vulkan" : {
          "renderer" : "NVIDIA GeForce GTX 1080",
          "version" : "535.154.05",
          "devices" : [
            {
              "name" : "NVIDIA GeForce GTX 1080",
              "api-version" : "1.3.242",
              "vulkan-driver-id" : 4,
              "driver-name" : "NVIDIA",
              "driver-version" : "535.154.05",
              "vendor-id" : "0x10de",
              "device-id" : "0x1b80",
              "type" : "discrete-gpu"
            }
          ]
        },
        "x11/vdpau" : {
          "renderer" : "NVIDIA VDPAU Driver Shared Library  535.154.05  Thu Dec 28 15:49:31 UTC 2023\n",
          "version" : null
        },
        "x11/vaapi" : {
          "messages" : [
            "libva info: VA-API version 1.14.0",
            "libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so",
            "libva info: va_openDriver() returns -1",
            "vaInitialize (va_display, &major_version, &minor_version) failed: unknown libva error (-1)"
          ],
          "renderer" : null,
          "version" : null,
          "issues" : [
            "cannot-draw"
          ],
          "exit-status" : 1
        },
        "glx/gl" : {
          "renderer" : "NVIDIA GeForce GTX 1080/PCIe/SSE2",
          "version" : "4.6.0 NVIDIA 535.154.05",
          "library-vendor" : "glvnd"
        },
        "egl_x11/gl" : {
          "renderer" : "NVIDIA GeForce GTX 1080/PCIe/SSE2",
          "version" : "4.6.0 NVIDIA 535.154.05",
          "library-vendor" : "glvnd"
        },
        "egl_x11/glesv2" : {
          "renderer" : "NVIDIA GeForce GTX 1080/PCIe/SSE2",
          "version" : "OpenGL ES 3.2 NVIDIA 535.154.05",
          "library-vendor" : "glvnd"
        }
      },

but 32-bit Vulkan doesn't work:

  "architectures" : {
    "i386-linux-gnu" : {
      "can-run" : true,
      "libdl-LIB" : "lib/i386-linux-gnu",
      "libdl-PLATFORM" : "i686",
      "runtime-linker" : {
        "path" : "/lib/ld-linux.so.2",
        "resolved" : "/usr/lib/i386-linux-gnu/ld-linux.so.2"
      },
      "library-issues-summary" : [
      ],
      "graphics-details" : {
        "x11/vulkan" : {
          "messages" : [
            "vkEnumeratePhysicalDevices (instance, physical_device_count, NULL) failed: ERROR_INITIALIZATION_FAILED (-3)"
          ],
          "renderer" : null,
          "version" : null,
          "issues" : [
            "cannot-load",
            "cannot-draw"
          ],
          "exit-status" : 1,
          "devices" : [
          ]
        },

32-bit VDPAU is just entirely missing:

        "x11/vdpau" : {
          "messages" : [
            "Failed to open VDPAU backend libvdpau_nvidia.so: wrong ELF class: ELFCLASS64",
            "vdp_device_create_x11 (display, screen, &device, &vdp_get_proc_address) failed: 1"
          ],
          "renderer" : null,
          "version" : null,
          "issues" : [
            "cannot-draw"
          ],
          "exit-status" : 1
        },

32-bit GLX loads a software renderer:

        "glx/gl" : {
          "messages" : [
            "WARNING: unknown fbconfig attribute from server: tag 0x20b3 value 0x0",
...
            "did not find extension DRI2_Flush version 1",
            "Not downgrading visual rating",
            "Disabling server's aux buffer support",
            "Disabling server's tfp mipmap support"
          ],
          "renderer" : "llvmpipe (LLVM 15.0.7, 256 bits)",
          "version" : "4.5 (Compatibility Profile) Mesa 23.3.3 - kisak-mesa PPA",
          "library-vendor" : "glvnd",
          "issues" : [
            "software-rendering"
          ]

and 32-bit EGL doesn't work:

        "egl_x11/gl" : {
          "messages" : [
            "Waffle error: 0x2 WAFFLE_ERROR_UNKNOWN: eglGetDisplay failed with error EGL_BAD_PARAMETER(0x300c)"
          ],
          "renderer" : null,
          "version" : null,
          "library-vendor" : "glvnd",
          "issues" : [
            "cannot-load"
          ],
          "exit-status" : 1
        },
        "egl_x11/glesv2" : {
          "messages" : [
            "Waffle error: 0x2 WAFFLE_ERROR_UNKNOWN: eglGetDisplay failed with error EGL_BAD_PARAMETER(0x300c)"
          ],
          "renderer" : null,
          "version" : null,
          "library-vendor" : "glvnd",
          "issues" : [
            "cannot-load"
          ],
          "exit-status" : 1
        }

Much of this information comes from 32- and 64-bit copies of the wflinfo utility. If you get a shell inside the Snap environment, you can run them like this:

$ ~/.steam/root/ubuntu12_32/steam-runtime/run.sh ~/.steam/root/ubuntu12_32/steam-runtime/usr/libexec/steam-runtime-tools-0/i386-linux-gnu-wflinfo --platform glx --api gl
Waffle platform: glx
Waffle api: gl
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 15.0.7, 256 bits)
OpenGL version string: 4.5 (Compatibility Profile) Mesa 23.3.3 - kisak-mesa PPA
OpenGL context flags: 0x0

Running with LD_DEBUG=files in the environment reveals why: /var/lib/snapd/lib/gl32/libGLX_nvidia.so.0 requires libnvidia-glsi.so.535.154.05 which is not found anywhere in the search path.

When running Steam Linux Runtime or Proton games, this manifests as a warning like this one, as also seen on #347:

i386-linux-gnu-capsule-capture-libs: warning: Dependencies of libGLX_nvidia.so.0 not found, ignoring: Missing dependencies: Could not find "libnvidia-glsi.so.535.154.05" in LD_LIBRARY_PATH "/snap/steam/171/graphics/lib/i386-linux-gnu:/snap/steam/171/graphics/usr/lib:/snap/steam/171/usr/lib/i386-linux-gnu:/snap/steam/171/lib/i386-linux-gnu:/snap/steam/171/usr/lib/i386-linux-gnu/pulseaudio:/snap/steam/171/usr/lib/x86_64-linux-gnu/alsa-lib:/snap/steam/171/usr/lib/x86_64-linux-gnu/pulseaudio:/snap/steam/171/graphics/usr/lib/i386-linux-gnu:/snap/steam/171/graphics/usr/lib/x86_64-linux-gnu:/var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl/vdpau", ld.so.cache, DT_RUNPATH or fallback /lib:/usr/lib

Similarly, running the i386-linux-gnu-check-vulkan diagnostic helper (in the same directory) with no arguments reveals that 32-bit Vulkan is broken, and running it under LD_DEBUG=files shows us why:

     29797:     file=libnvidia-glsi.so.535.154.05 [0];  needed by /var/lib/snapd/lib/gl32/libGLX_nvidia.so.0 [0]

but that library cannot be found.

Expected Behavior

Accelerated 32-bit graphics drivers should be provided. These are required by 32-bit games, either native Linux games or Windows games via Proton.

I would have expected that the maintainers of this app would have noticed these warnings during testing and rectified the situation, before recommending this app to the public. This is a regression when compared with installing Steam as a .deb package.

Steps To Reproduce

Open Steam's Help -> Steam Runtime Diagnostics and look for indications of potential brokenness.

Or, try to launch a 32-bit game and observe it running slowly.

Environment

"Unable to collect hardware information due to missing plugs"

(This is an Ubuntu 22.04 system with an Nvidia GTX 1080, which works correctly in a non-Snap environment.)

gaming-graphics-core22 version

kisak-fresh (default)

Anything else?

No response

@ErickLandowski
Copy link

ErickLandowski commented Feb 3, 2024

You did upgrade your NVIDIA driver recently, didn't you?

I reported this at #311

@ashuntu ashuntu added the keep-open Label for the github action. Keeps it open even if issue is abandoned label Feb 13, 2024
@FoxMcCloud45
Copy link

FoxMcCloud45 commented Aug 14, 2024

I can confirm this is still a problem today. All of Valve's older titles that are still 32-bit (such as Half-Life (1, 2 and the Episodes), Portal, Portal 2, Counter-Strike: Source...) are unable to use the NVIDIA card. On laptops, this will cause the game to fall back to the Mesa implementation running on the integrated Intel chipset silently.

EDIT: My comment seems to be ill-timed; this issue is apparently tied to the way snapd provides the host libs to the container and 2.63.1 should be released very soon to fix this: canonical/snapd#14308

@FoxMcCloud45
Copy link

Well I was wrong again; the stable Steam snap just received an update that fixed this very issue.

Truly the most ill-timed intervention of all time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
jira keep-open Label for the github action. Keeps it open even if issue is abandoned type/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants