Issues with steam and proton with Nvidia on a pretty standard EOS install (terrible FPS on arch pacman steam vs. flatpak steam)

So I’m listing this partially to document a fix to an error I was receiving andand partially as a question for additional problems I’m still facing.

So I was getting this error with the standard steam install from arch linux’s repositories.

glx: failed to create dri3 screen
failed to load driver: nvidia-drm
10/22 04:13:39 minidumps folder is set to /tmp/dumps
10/22 04:13:39 Init: Installing breakpad exception handler for appid(steamsysinfo)/version(1759461205)/tid(87312)
Running query: 1 - GpuTopology
CVulkanTopology: failed create vulkan instance: -9
CVulkanTopology: failed to create vulkan instanceFailed to query vulkan gpu topology

Failed to query vulkan gpu topology
Response: 
Exit code: -2

Installing lib32-nvidia-utils as suggested here (I was also having trouble launching 32-bit games like FF9 too) fixed both this error in running steam from the command line and the ability to launch a variety of games from within steam.

However, I’m still getting terrible frame rates not only in FF7remake ( 4 frames per second) but also FF9 (2-3 frames per second).

I bought two 3090s in late 2022 in the midst of the bitcoin crash to putz around with deep learning, and that’s still what I’m running. I’ve had to reinstall EOS a couple of times since I first started running it (first because Windows recovery wiped out my EOS installation on a different booting drive, and a second time because bad memory corrupted my BTRFS file system - setting up a backup and recovery system is a project for later). So I’ve had this third install running from February of this year. I can’t remember if my last install was running X11 or Wayland (it would have been installed at some point in 2023, but I kind of remember it transitioning towards Wayland one day), but I for sure am running Wayland.

Of note, I installed the Steam flatpak and installed another copy of FF9 and I was getting 60 fps from this version. So I’m pretty certain that I must be missing some other nvidia component.

When I run pacman -Qs "(mesa|nvidia|nouv|xf86-video|optimus|vulkan)", I get the following output. Do you guys have any idea as to what I’m missing?

local/cuda 13.0.2-1
    NVIDIA's GPU programming toolkit
local/cudnn 9.14.0.64-1
    NVIDIA CUDA Deep Neural Network library
local/egl-gbm 1.1.2.1-1
    The GBM EGL external platform library
local/egl-wayland 4:1.1.20-1
    EGLStream-based Wayland external platform
local/egl-x11 1.0.3-1
    NVIDIA XLib and XCB EGL Platform Library
local/ffnvcodec-headers 13.0.19.0-1
    FFmpeg version of headers required to interface with Nvidias codec APIs
local/glu 9.0.3-2
    Mesa OpenGL utility library
local/lib32-glu 9.0.3-2
    Mesa OpenGL utility library (32 bits)
local/lib32-libvdpau 1.5-3
    Nvidia VDPAU library
local/lib32-mesa 1:25.2.5-1
    Open-source OpenGL drivers - 32-bit
local/lib32-nvidia-utils 580.95.05-1
    NVIDIA drivers utilities (32-bit)
local/lib32-vulkan-icd-loader 1.4.328.1-1
    Vulkan Installable Client Driver (ICD) Loader (32-bit)
local/libnvidia-container 1.17.9-1
    NVIDIA container runtime library
local/libvdpau 1.5-3
    Nvidia VDPAU library
local/linux-firmware-nvidia 20251011-1
    Firmware files for Linux - Firmware for NVIDIA GPUs and SoCs
local/mesa 1:25.2.5-1
    Open-source OpenGL drivers
local/mesa-utils 9.0.0-7
    Essential Mesa utilities
local/nccl 2.28.3-1
    Library for NVIDIA multi-GPU and multi-node collective communication primitives
local/nvidia 580.95.05-6
    NVIDIA kernel modules
local/nvidia-container-toolkit 1.17.9-1
    NVIDIA container toolkit
local/nvidia-hook 1.5.2-1
    pacman hook for nvidia
local/nvidia-inst 25.10-1
    Script to install/uninstall nvidia driver packages in EndeavourOS
local/nvidia-lts 1:580.95.05-4
    NVIDIA drivers for linux-lts
local/nvidia-utils 580.95.05-1
    NVIDIA drivers utilities
local/opencl-nvidia 580.95.05-1
    OpenCL implemention for NVIDIA
local/qt6-shadertools 6.10.0-1 (qt6)
    Provides functionality for the shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and Direct3D, in addition to OpenGL
local/spirv-tools 1:1.4.328.1-1 (vulkan-devel)
    API and commands for processing SPIR-V modules
local/vulkan-headers 1:1.4.328.1-1 (vulkan-devel)
    Vulkan header files and API registry
local/vulkan-icd-loader 1.4.328.1-1 (vulkan-devel)
    Vulkan Installable Client Driver (ICD) Loader
local/vulkan-tools 1.4.328.1-1 (vulkan-devel)
    Vulkan tools and utilities

3090 GPU is recommended to use nvidia-open instead of nvidia.
I recommend using command

nvidia-inst --test

first to see the recommended packages. Please show the output here too.

And nvidia-open-dkms could be a better choice as well.

Oh snap, the Nouveau drivers are that good now?

I did try out the nouveau drivers (I couldn’t use nvidia-inst because the Rstudio build’s dependency on specific versions of the boost and boost-lib packages are out of sync) and I was getting the same frame rates. Would sharing what freedesktop nvidia packages I have installed and presumable what the steam flatpak is using be helpful in figuring out what’s causing these problems? I don’t think I’m using the open drivers there either.

So I don’t completely understand yet the Linux kernel and how dkms and systemd work, but I thought the arch and EOS way of doing things discouraged using dkms. I installed nvidia-open and nvidia-open-utils in lieu of nvidia and nvidia-utils.

Nvidia-open is not Nouveau. Nvidia-open is developed by Nvidia, although open-source. Nouveau on other hand is completely free software developed by community.

This. When we talk about nvidia-open (or nvidia-open-dkms), we’re referring to the NVIDIA drivers with open-source kernel modules, which are the recommended ones for Turing and newer GPUs (that is, post-Pascal architectures). They have nothing to do with Nouveau.

Cheers.

I don’t know where this idea comes from. Personally (and I think it’s attitude in Linux circles in general, there can be exceptions of course) my approach is that “if it works, use it”.

Especially considering GPU drivers this is something that goes before anything.

So don’t be discouraged to use dkms. So, if it works, use it. :slightly_smiling_face:

Using dkms alternative involves building packages locally and that may make upgrading packages slower.

But the prebuilt alternative like nvidia is dependent on kernel compatibility, and sometimes the kernel package is not updated along with the nvidia release which most likely causes nasty issues.
The dkms alternative can avoid this problem.
Also, the dkms alternative works with other kernels if you want them installed.

Sorry for the belated update guys, and thank you for your help so far (I’ve been bragging about how friendly the EndeavourOS community is). I finally got some time to look at this again now that the holidays have rolled around.

When I launch the steam flatpak and it reports the GPU topology, I get the following:

Running query: 1 - GpuTopology
Response: gpu_topology {
  gpus {
    id: 1
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 2
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 3
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 4
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 5
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 6
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 7
    name: "llvmpipe (LLVM 21.1.7, 256 bits)"
    vram_size_bytes: 3221225472
    driver_id: k_EGpuDriverId_MesaLLVMPipe
    driver_version_major: 25
    driver_version_minor: 2
    driver_version_patch: 6
    luid: 0
  }
 
 default_gpu_id: 1
}

When I launch steam from the arch repository, it reports the following:

Running query: 1 - GpuTopology
Response: gpu_topology {
  gpus {
    id: 1
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  gpus {
    id: 2
    name: "NVIDIA GeForce RTX 3090"
    vram_size_bytes: 26027753472
    driver_id: k_EGpuDriverId_NvidiaProprietary
    driver_version_major: 590
    driver_version_minor: 48
    driver_version_patch: 1
    luid: 0
  }
  default_gpu_id: 1
}

So the other day, I launched a system update before heading to the shower. I can’t remember whether I’d heard about arch switching to the nvidia-open drivers before then. But while it was downloading and running this stuff, I jumped in the shower. When I got back, my screen had somehow into systemd-boot mode that you can sometime see if you have your computer go to sleep and wake it up or if you log out. Since I’m not all that familiar with what I can do in this mode, I just pressed control + C a few times after it seemed to be stuck and that got me back into the login screen. The screen was rendering some crazy highly saturated colors. When I tried to rerun the system updatte, it told me there was a db.lck, indicating the updates did not finish exiting gracefully. So I removed the file and ran the update and it basically reported there was nothing for it to do. So I decided to reboot the system to see if the weird screen rendering would get fixed on reboot. So, when I rebooted, I learned that the systemd-boot endeavouros kernel entries were gone. So I downloaded the new Ganymede ISO and archrooted into my system. I uninstalled steam, zed (editor), nvidia-settings, nvidia-open-dkms, lib32-nvidia-utils, and nvidia-utils.

I then installed nvidia-open, xorg-server-devel (since it listed it as an optional dependency that sounded like it could be useful), nvidia-settings, lib32-nvidia-utils, and I tried to unstall lib32-nvidia-vulkan-utils but it didnt’ work.

I then for good measure ran dracut-rebuild and reinstall-kernels.

After rebooting and entering my system, I re-installed steam, zed, eslint, pyright, gamescope, gamemode, and lib32-game mode.

When I run nvidia-inst --test --remove-nothing, I get the following output:

2025-12-27 17:49:55: Info: 09:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3090] [10de:2204] (rev a1) (prog-if 00 [VGA controller])
43:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3090] [10de:2204] (rev a1) (prog-if 00 [VGA controller])
2025-12-27 17:49:55: Info: Currently installed packages related to Nvidia:
2025-12-27 17:49:56:       cuda 13.1.0-1
2025-12-27 17:49:56:       cudnn 9.17.1.4-1
2025-12-27 17:49:56:       egl-gbm 1.1.2.1-1
2025-12-27 17:49:56:       egl-wayland 4:1.1.21-1
2025-12-27 17:49:56:       egl-wayland2 1.0.0.rc.r51.gada1c37-1
2025-12-27 17:49:56:       egl-x11 1.0.4-1
2025-12-27 17:49:56:       ffnvcodec-headers 13.0.19.0-1
2025-12-27 17:49:56:       lib32-libvdpau 1.5-3
2025-12-27 17:49:56:       lib32-nvidia-utils 590.48.01-1
2025-12-27 17:49:56:       libnvidia-container 1.18.1-1
2025-12-27 17:49:56:       libvdpau 1.5-3
2025-12-27 17:49:56:       libxnvctrl 590.48.01-1
2025-12-27 17:49:56:       linux-firmware-nvidia 20251125-2
2025-12-27 17:49:56:       nccl 2.28.9-2
2025-12-27 17:49:56:       nvidia-container-toolkit 1.18.1-1
2025-12-27 17:49:56:       nvidia-hook 1.5.3-1
2025-12-27 17:49:56:       nvidia-inst 25.12-1
2025-12-27 17:49:56:       nvidia-open 590.48.01-3
2025-12-27 17:49:56:       nvidia-settings 590.48.01-1
2025-12-27 17:49:56:       nvidia-utils 590.48.01-1
2025-12-27 17:49:56:       opencl-nvidia 590.48.01-1
2025-12-27 17:49:56: Info: inxi -Gza
Graphics:
  Device-1: NVIDIA GA102 [GeForce RTX 3090] vendor: ZOTAC driver: nvidia
    v: 590.48.01 alternate: nouveau,nvidia_drm non-free: 550-580.xx+
    status: current (as of 2025-11; EOL~2026-12-xx) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-2023 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 16 link-max: gen: 4 speed: 16 GT/s ports: active: none empty: DP-1,
    DP-2, DP-3, HDMI-A-1 bus-ID: 09:00.0 chip-ID: 10de:2204 class-ID: 0300
  Device-2: NVIDIA GA102 [GeForce RTX 3090] vendor: ZOTAC driver: nvidia
    v: 590.48.01 alternate: nouveau,nvidia_drm non-free: 550-580.xx+
    status: current (as of 2025-11; EOL~2026-12-xx) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-2023 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 16 link-max: gen: 4 speed: 16 GT/s ports: active: DP-5,DP-6
    empty: DP-4,HDMI-A-2 bus-ID: 43:00.0 chip-ID: 10de:2204 class-ID: 0300
  Device-3: EVGA XR1 Pro Capture Box Video
    driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB rev: 3.0
    speed: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 bus-ID: 2-2.3:8
    chip-ID: 3842:310b class-ID: 0300 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.21 with: Xwayland v: 24.1.9
    compositor: kwin_wayland driver: X: loaded: nvidia unloaded: modesetting
    alternate: fbdev,nouveau,nv,vesa gpu: nv_platform,nvidia,nvidia-nvswitch
    d-rect: 5360x2640 display-ID: 0
  Monitor-1: DP-5 pos: primary,top-left model: Dell U2412M serial: <filter>
    built: 2012 res: mode: 1920x1200 hz: 60 scale: 160% (1.6) to: 1200x1920
    dpi: 94 gamma: 1.2 size: 518x324mm (20.39x12.76") diag: 611mm (24.1")
    ratio: 16:10 modes: max: 1920x1200 min: 640x480
  Monitor-2: DP-6 pos: bottom-r model: Dell AW3423DW serial: <filter>
    built: 2022 res: mode: 3440x1440 hz: 175 scale: 100% (1) dpi: 108 gamma: 1.2
    size: 810x350mm (31.85x13.94") diag: 883mm (34.8") modes: max: 3440x1440
    min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia platforms: device: 0 drv: nvidia device: 1
    drv: nvidia device: 4 drv: swrast gbm: drv: nvidia surfaceless: drv: nvidia
    wayland: drv: nvidia x11: drv: nvidia inactive: device-2,device-3
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 25.3.2-arch1.1
    glx-v: 1.4 direct-render: yes renderer: NVIDIA GeForce RTX 3090/PCIe/SSE2
    memory: 23.44 GiB display-ID: :1.0
  API: Vulkan v: 1.4.335 layers: 7 device: 0 type: discrete-gpu
    name: NVIDIA GeForce RTX 3090 driver: nvidia v: 590.48.01
    device-ID: 10de:2204 surfaces: N/A device: 1 type: discrete-gpu
    name: NVIDIA GeForce RTX 3090 driver: nvidia v: 590.48.01
    device-ID: 10de:2204 surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: nvidia-settings,nvidia-smi
    wl: wayland-info x11: xdpyinfo, xprop, xrandr
2025-12-27 17:49:59: Info: nvidia-inst version 25.12-1
2025-12-27 17:49:59: Info: Command line: nvidia-inst --test --remove-nothing
2025-12-27 17:49:59: Info: Selected mode: nvidia (Nvidia's open source)
2025-12-27 17:49:59: Note: Package nvidia-settings is set for install but it is installed already.
2025-12-27 17:49:59: Note: Package lib32-nvidia-utils is set for install but it is installed already.
2025-12-27 17:49:59: Note: Package nvidia-hook is set for install but it is installed already.
2025-12-27 17:49:59: Info: Installing packages: nvidia-open-dkms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMMANDS TO RUN:
    pacman -Syuq --noconfirm --noprogressbar --needed nvidia-open-dkms

So even before the system upgrade snafu I was able to get the steam flatpak to read my Steam library saved to another NVMe drive, the same copy that I’m trying to run using native steam from Arch’s repository. Even with the nvidia-open-dkms package, I had Final Fantasy VII remake running at 90+ fps in engine launched from steam flatpak, while I only ever got 2-4 fps in the game menu launching from the native steam package.

Today, after I replaced nvidia-open-dkms with nvidia-open, native steam downloaded the shader cache, and after steam flatpak processed the shaders, it was running at that 90+ fps. Meanwhile with native arch steam, whether I use gamemoderun or not, I’m getting only 2-4 fps in the game menu. Remember in the both the flatpak and arch repository steam, I have the flag set to have it use the DirectX 11 api instead of DirectX 12. Flatpak steam is set to use gamemoderun in its launch command.

So one thing I noticed from the flatpak gpu topology report was that it listed llvmpipe as a driver. This left me with the idea that maybe whatever picks the Vulkan or OpenGL driver might be picking a software rendering one? I don’t know. Each of these is always an opportunity to learn more about how Linux and operating systems work.

Ok, guys, I finally figured it out. So, basically this was a proton/vulkan problem with two identical gpus. Basically, it was loading the game on to one (spare) card’s memory, but it was using the identical display connected driver to render the game. For whatever reason, the flatpak steam was laoding and rendering Final Fantasy VII remake on on the same display connected GPU, but steam from Arch’s repository was not. However, when I tried Bauldur’s Gate III on Flatpak steam, I ran into the same issues I made this post complaining about.

So using the tips in section 3.1 worked for Final Fantasy VII Remake, but not Bauldur’s Gate III: https://wiki.archlinux.org/title/Vulkan#Switching_between_devices

I installed vulkan-mesa-implicit-layers, vulkan-mesa-layers, and lib32-vulkan-mesa-layers.

Both GPUs had the same vendorID and deviceID, so I couldn’t select one using those. So I just tried to make it use the default one (which turned out to be displays connected one) using MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE=1

Again that worked for FF7Remake, but not Bauldur’s Gate III (I got the following error when trying that: [Vulkan Loader] ERROR: vkGetDeviceQueue: Invalid device [VUID-vkGetDeviceQueue-device-parameter]). I had also tried installing switcheroo-control as a recommended by a KDE wiki page via their gui in the menu editor (and I guess through our wiki: https://discovery.endeavouros.com/hardware/switcheroo-control/2025/02/) but that hadn’t worked. But this link suggested using the commandline: https://www.reddit.com/r/linux_gaming/comments/1pfeqfl/dri_prime_and_mesa_vk_device_select_for_user/

And the command line worked. However, whether I set gpu=0 or gpu=1, it still uses the displays connected GPU.

Thanks everybody. I learned a lot. My previous experience trying to use the dkms system to install kernel modules, I was trying to install rocm drivers in PopOS! at the start of the pandemic for my rx 580 8gb. Needless to say, I didn’t really understand it and it quickly broke and I didn’t really understand it well enough to fix it, given the difference between PopOS! and Ubuntu, and the lack of PopOS! documentation. My annoyance with it and Gnome extensions finally had me trying EndeavourOS as my next attempt. And I’ve crashed and burned a few times (the Grub error, Nvidia drivers bricking my Windows OS installation, and the recovery system wiping my linux drive instead of my Windows drive, my memory going bad (I think a couple of bits got flipped on one of the sticks) and corrupting my btrfs file system, and finally the Christmas eve fiasco a few days ago, haha.

But I’ve learned a lot from each of these experiences, and each has helped me be better equipped to figure out the next (archroot which I learned from the grub fiasco came in handy to help me recover from the btrfs filesystem corruption, and the problems I ran into on Christmas Eve updating the system.