为什么我的系统上的 32 位 Steam 游戏使用集成 GPU 而不是专用的 Nvidia 卡?

为什么我的系统上的 32 位 Steam 游戏使用集成 GPU 而不是专用的 Nvidia 卡?

Steam 上的原生 Linux 游戏运行良好,但 32 位游戏(如 Hotline Miami 和 Team Fortress 2)除外。64 位游戏使用我的 NVIDIA 1060 Max-Q,但 32 位游戏使用集成的 Intel 芯片,因此延迟很大。我知道他们没有使用 1060,因为应用程序没有显示在nvidia-smi或中nvtop

我尝试了很多方法,但无法让它们在我的专用 GPU 上运行:

  • primusrun./Hotline 使用英特尔卡

  • __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%使用英特尔卡

  • 使用 Proton 运行 Windows 版本也有同样的问题。我也尝试过用 Lutris 运行它们,但没有成功

我认为问题在于 32 位 Nvidia Open-GL 库未正确安装,因为没有 64 位原生 Linux 游戏出现任何问题。我尝试清除并重新安装 Nvidia 驱动程序,但没有任何变化。

跑步ldconfig -p | grep GL给了我这个:

    libQt5OpenGL.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libQt5OpenGL.so.5
    libQt5OpenGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libQt5OpenGL.so
    libOpenGL.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libOpenGL.so.0
    libOpenGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libOpenGL.so
    libGLdispatch.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLdispatch.so.0
    libGLdispatch.so.0 (libc6) => /lib/i386-linux-gnu/libGLdispatch.so.0
    libGLdispatch.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLdispatch.so
    libGLX_nvidia.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLX_nvidia.so.0
    libGLX_mesa.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLX_mesa.so.0
    libGLX_mesa.so.0 (libc6) => /lib/i386-linux-gnu/libGLX_mesa.so.0
    libGLX.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLX.so.0
    libGLX.so.0 (libc6) => /lib/i386-linux-gnu/libGLX.so.0
    libGLX.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLX.so
    libGLU.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLU.so.1
    libGLU.so.1 (libc6) => /lib/i386-linux-gnu/libGLU.so.1
    libGLU.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLU.so
    libGLEW.so.2.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLEW.so.2.1
    libGLESv2_nvidia.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2
    libGLESv2.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv2.so.2
    libGLESv2.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv2.so
    libGLESv1_CM_nvidia.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1
    libGLESv1_CM.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv1_CM.so.1
    libGLESv1_CM.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGLESv1_CM.so
    libGL.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGL.so.1
    libGL.so.1 (libc6) => /lib/i386-linux-gnu/libGL.so.1
    libGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGL.so
    libEGL_nvidia.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL_nvidia.so.0
    libEGL_mesa.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL_mesa.so.0
    libEGL.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL.so.1
    libEGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL.so

跑步glxinfo | grep OpenGL给了我这个:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 1060 with Max-Q Design/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 460.32.03
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6.0 NVIDIA 460.32.03
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 460.32.03
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

我非常困惑这个问题是什么以及如何解决它。任何帮助我都非常感谢。

相关内容