FW16 dGPU causes segfaults/very poor Performance on Linux

Hi,

Unfortunately I cannot run games on my dGPU. Whenever I force a game to run via the dGPU via DRI_PRIME=1 the laptop nearly freezes. Like I get a new Frame every ten seconds. The OS is completely unusable in this state, requiring me to kill the process from another TTY. When I force games like Xonotic or OpenArena to run on the dGPU they segfault. Internal GPU is fine for steam and non-steam games. Forcing glxgears/vkcube to run on the dGPU does not cause problems.

Is this a hardware issue or more likely a software issue? I’m running Fedora 40 KDE on the Framework 16.

My only experience is on Ubuntu, but I had to install the closed source drivers before I could really use the dGPU.

Are you using the internal screen or an external attached? Something to try would be plugging a monitor into the USBC/Displayport port directly on the dGPU and see if that makes a difference. Maybe the issue has something to do with backfeeding the video through the iGPU to get to the onboard display.

Same thing. Playing Doom 2016 it immediately drops to 1 FPS when the menu screen loads.

Running the Unigine Superposition Benchmark it works just fine. Using the dGPU. Weird. This benchmark has been the only thing I could get to run on the dGPU.

On a live USB Ubuntu 24.04 system I am able to run openarena on the dGPU just fine.

Sounds more and more like a software issue

This is a relevant snippet from dmesg:

[  550.590510] [drm] PCIE GART of 512M enabled (table at 0x00000081FEB00000).
[  550.590569] amdgpu 0000:03:00.0: amdgpu: PSP is resuming...
[  550.646701] amdgpu 0000:03:00.0: amdgpu: reserve 0x1300000 from 0x81fc000000 for PSP TMR
[  550.741569] amdgpu 0000:03:00.0: amdgpu: RAS: optional ras ta ucode is not available
[  550.749017] amdgpu 0000:03:00.0: amdgpu: RAP: optional rap ta ucode is not available
[  550.749020] amdgpu 0000:03:00.0: amdgpu: SECUREDISPLAY: securedisplay ta ucode is not available
[  550.749026] amdgpu 0000:03:00.0: amdgpu: SMU is resuming...
[  550.749032] amdgpu 0000:03:00.0: amdgpu: smu driver if version = 0x00000035, smu fw if version = 0x00000040, smu fw program = 0, smu fw version = 0x00525b00 (82.91.0)
[  550.749037] amdgpu 0000:03:00.0: amdgpu: SMU driver if version not matched
[  550.789428] amdgpu 0000:03:00.0: amdgpu: SMU is resumed successfully!
[  550.791711] [drm] DMUB hardware initialized: version=0x07002A00
[  552.070469] [drm] kiq ring mec 3 pipe 1 q 0
[  552.075049] [drm] VCN decode and encode initialized successfully(under DPG Mode).
[  552.076388] amdgpu 0000:03:00.0: [drm:jpeg_v4_0_hw_init [amdgpu]] JPEG decode initialized successfully.
[  552.076905] amdgpu 0000:03:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[  552.076909] amdgpu 0000:03:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[  552.076910] amdgpu 0000:03:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[  552.076912] amdgpu 0000:03:00.0: amdgpu: ring comp_1.2.0 uses VM inv eng 6 on hub 0
[  552.076914] amdgpu 0000:03:00.0: amdgpu: ring comp_1.3.0 uses VM inv eng 7 on hub 0
[  552.076915] amdgpu 0000:03:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 8 on hub 0
[  552.076917] amdgpu 0000:03:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 9 on hub 0
[  552.076918] amdgpu 0000:03:00.0: amdgpu: ring comp_1.2.1 uses VM inv eng 10 on hub 0
[  552.076920] amdgpu 0000:03:00.0: amdgpu: ring comp_1.3.1 uses VM inv eng 11 on hub 0
[  552.076921] amdgpu 0000:03:00.0: amdgpu: ring sdma0 uses VM inv eng 12 on hub 0
[  552.076923] amdgpu 0000:03:00.0: amdgpu: ring sdma1 uses VM inv eng 13 on hub 0
[  552.076925] amdgpu 0000:03:00.0: amdgpu: ring vcn_unified_0 uses VM inv eng 0 on hub 8
[  552.076927] amdgpu 0000:03:00.0: amdgpu: ring jpeg_dec uses VM inv eng 1 on hub 8
[  552.076928] amdgpu 0000:03:00.0: amdgpu: ring mes_kiq_3.1.0 uses VM inv eng 14 on hub 0
[  552.078930] amdgpu 0000:03:00.0: [drm] Cannot find any crtc or sizes
[  552.079883] [drm] ring gfx_32809.1.1 was added
[  552.080262] [drm] ring compute_32809.2.2 was added
[  552.080586] [drm] ring sdma_32809.3.3 was added
[  552.080618] [drm] ring gfx_32809.1.1 ib test pass
[  552.080652] [drm] ring compute_32809.2.2 ib test pass
[  552.080750] [drm] ring sdma_32809.3.3 ib test pass
[  553.226885] zenity[6192]: segfault at 7fa39c34dc44 ip 00007f5b9ca2f575 sp 00007fffd98f8070 error 4 in libEGL_mesa.so.0.0.0[7f5b9ca12000+2d000] likely on CPU 7 (core 3, socket 0)
[  553.226897] Code: 0f 16 87 70 01 00 00 0f 11 46 18 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 53 89 fb 48 83 ec 08 e8 90 9e 00 00 48 85 c0 74 2b <83> 78 44 01 75 25 8d 83 69 ff ff ff 3d 13 01 00 00 77 18 48 8d 15

And this is what coredumpctl info has to say about it:

           PID: 6871 (quake3)
           UID: 1000 (user)
           GID: 1000 (user)
        Signal: 11 (SEGV)
     Timestamp: Wed 2024-06-19 21:21:26 CEST (17min ago)
  Command Line: /usr/bin quake3 +set com_basegame baseoa +set com_homepath .openarena +set fs_basepath /usr/share/openarena +set com_protocol 71 +set com_legacyprotocol 71 +set sv_master1 dpmaster.deathmask.net +set cl_motd 0 +set com_hunkMegs 128
    Executable: /usr/bin/quake3
 Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.konsole@8fd5918d5f424f06832a8e7867877f44.service
          Unit: user@1000.service
     User Unit: app-org.kde.konsole@8fd5918d5f424f06832a8e7867877f44.service
         Slice: user-1000.slice
     Owner UID: 1000 (user)
       Boot ID: 634016edeaac4039b57a0d91a9329c2e
    Machine ID: 18313fabbb1744c6b5a9e1d80038aa29
      Hostname: deepthought
       Storage: /var/lib/systemd/coredump/core.quake3.1000.634016edeaac4039b57a0d91a9329c2e.6871.1718824886000000.zst (present)
  Size on Disk: 1.4M
       Package: quake3/1.36-46.svn2102.fc40
      build-id: 0d8e7eb87ae6c98f0c04f958a543386a41fa92c0
       Message: Process 6871 (quake3) of user 1000 dumped core.
                
                Module libpciaccess.so.0 from rpm libpciaccess-0.16-12.fc40.x86_64
                Module libtinfo.so.6 from rpm ncurses-6.4-12.20240127.fc40.x86_64
                Module libedit.so.0 from rpm libedit-3.1-51.20240517cvs.fc40.x86_64
                Module libdrm_intel.so.1 from rpm libdrm-2.4.121-1.fc40.x86_64
                Module libdrm_amdgpu.so.1 from rpm libdrm-2.4.121-1.fc40.x86_64
                Module libelf.so.1 from rpm elfutils-0.191-4.fc40.x86_64
                Module libdrm_radeon.so.1 from rpm libdrm-2.4.121-1.fc40.x86_64
                Module libsensors.so.4 from rpm lm_sensors-3.6.0-18.fc40.x86_64
                Module radeonsi_dri.so from rpm mesa-24.1.1-5.fc40.x86_64
                Module libxshmfence.so.1 from rpm libxshmfence-1.3.2-3.fc40.x86_64
                Module libxcb-sync.so.1 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libxcb-present.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libxcb-dri3.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libwayland-server.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
                Module libdrm.so.2 from rpm libdrm-2.4.121-1.fc40.x86_64
                Module libxcb-xfixes.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libxcb-randr.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libxcb-dri2.so.0 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libX11-xcb.so.1 from rpm libX11-1.8.9-1.fc40.x86_64
                Module libexpat.so.1 from rpm expat-2.6.2-1.fc40.x86_64
                Module libglapi.so.0 from rpm mesa-24.1.1-5.fc40.x86_64
                Module libgbm.so.1 from rpm mesa-24.1.1-5.fc40.x86_64
                Module libEGL_mesa.so.0 from rpm mesa-24.1.1-5.fc40.x86_64
                Module libEGL.so.1 from rpm libglvnd-1.7.0-4.fc40.x86_64
                Module libdecor-0.so.0 from rpm libdecor-0.2.2-3.fc40.x86_64
                Module libxkbcommon.so.0 from rpm libxkbcommon-1.6.0-2.fc40.x86_64
                Module libwayland-cursor.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
                Module libwayland-egl.so.1 from rpm wayland-1.22.0-3.fc40.x86_64
                Module libffi.so.8 from rpm libffi-3.4.4-7.fc40.x86_64
                Module libwayland-client.so.0 from rpm wayland-1.22.0-3.fc40.x86_64
                Module libzstd.so.1 from rpm zstd-1.5.6-1.fc40.x86_64
                Module liblzma.so.5 from rpm xz-5.4.6-3.fc40.x86_64
                Module liblz4.so.1 from rpm lz4-1.9.4-6.fc40.x86_64
                Module libcap.so.2 from rpm libcap-2.69-8.fc40.x86_64
                Module libsystemd.so.0 from rpm systemd-255.7-1.fc40.x86_64
                Module libdbus-1.so.3 from rpm dbus-1.14.10-3.fc40.x86_64
                Module libSDL2-2.0.so.0 from rpm SDL2-2.30.3-1.fc40.x86_64
                Module libXau.so.6 from rpm libXau-1.0.11-6.fc40.x86_64
                Module libxcb.so.1 from rpm libxcb-1.17.0-1.fc40.x86_64
                Module libogg.so.0 from rpm libogg-1.3.5-8.fc40.x86_64
                Module libvorbis.so.0 from rpm libvorbis-1.3.7-10.fc40.x86_64
                Module libGLdispatch.so.0 from rpm libglvnd-1.7.0-4.fc40.x86_64
                Module libXext.so.6 from rpm libXext-1.3.6-1.fc40.x86_64
                Module libX11.so.6 from rpm libX11-1.8.9-1.fc40.x86_64
                Module libGLX.so.0 from rpm libglvnd-1.7.0-4.fc40.x86_64
                Module libz.so.1 from rpm zlib-ng-2.1.6-5.fc40.x86_64
                Module libjpeg.so.62 from rpm libjpeg-turbo-3.0.2-1.fc40.x86_64
                Module libspeexdsp.so.1 from rpm speexdsp-1.2.1-6.fc40.x86_64
                Module libspeex.so.1 from rpm speex-1.2.0-17.fc40.x86_64
                Module libvorbisfile.so.3 from rpm libvorbis-1.3.7-10.fc40.x86_64
                Module libGL.so.1 from rpm libglvnd-1.7.0-4.fc40.x86_64
                Module libSDL-1.2.so.0 from rpm sdl12-compat-1.2.68-2.fc40.x86_64
                Module quake3 from rpm quake3-1.36-46.svn2102.fc40.x86_64
                Stack trace of thread 6871:
                #0  0x00007f06031d2575 dri2_wl_visual_idx_from_pipe_format (libEGL_mesa.so.0 + 0x23575)
                #1  0x00007f06031d373c dri2_wl_add_configs_for_visuals (libEGL_mesa.so.0 + 0x2473c)
                #2  0x00007f06031d6ac2 dri2_initialize_wayland (libEGL_mesa.so.0 + 0x27ac2)
                #3  0x00007f06031cbfb8 dri2_initialize (libEGL_mesa.so.0 + 0x1cfb8)
                #4  0x00007f06031ba778 eglInitialize (libEGL_mesa.so.0 + 0xb778)
                #5  0x00007f060ce89078 SDL_EGL_LoadLibrary.part.0 (libSDL2-2.0.so.0 + 0xc1078)
                #6  0x00007f060ced6595 Wayland_GLES_LoadLibrary (libSDL2-2.0.so.0 + 0x10e595)
                #7  0x00007f060ce96de3 SDL_GL_LoadLibrary_REAL (libSDL2-2.0.so.0 + 0xcede3)
                #8  0x00007f060ce95427 SDL_CreateWindow_REAL (libSDL2-2.0.so.0 + 0xcd427)
                #9  0x00007f060d657851 SDL_SetVideoMode (libSDL-1.2.so.0 + 0xd851)
                #10 0x000056225f4db458 GLimp_StartDriverAndSetMode.lto_priv.0 (quake3 + 0xc9458)
                #11 0x000056225f4bd563 InitOpenGL (quake3 + 0xab563)
                #12 0x000056225f4c22c2 RE_BeginRegistration (quake3 + 0xb02c2)
                #13 0x000056225f42b227 CL_StartHunkUsers (quake3 + 0x19227)
                #14 0x000056225f44b2a3 Com_Init (quake3 + 0x392a3)
                #15 0x000056225f41a87f main (quake3 + 0x887f)
                #16 0x00007f060d235088 __libc_start_call_main (libc.so.6 + 0x2a088)
                #17 0x00007f060d23514b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a14b)
                #18 0x000056225f41b395 _start (quake3 + 0x9395)
                
                Stack trace of thread 7018:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7015:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7019:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7023:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7022:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7021:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7026:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7024:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7025:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7016:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7020:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                
                Stack trace of thread 7017:
                #0  0x00007f060d29d919 __futex_abstimed_wait_common (libc.so.6 + 0x92919)
                #1  0x00007f060d2a02e9 pthread_cond_wait@@GLIBC_2.3.2 (libc.so.6 + 0x952e9)
                #2  0x00007f06008a7cfd cnd_wait (radeonsi_dri.so + 0xa7cfd)
                #3  0x00007f0600884acb util_queue_thread_func (radeonsi_dri.so + 0x84acb)
                #4  0x00007f06008a7c2c impl_thrd_routine (radeonsi_dri.so + 0xa7c2c)
                #5  0x00007f060d2a11b7 start_thread (libc.so.6 + 0x961b7)
                #6  0x00007f060d3233cc __clone3 (libc.so.6 + 0x1183cc)
                ELF object binary architecture: AMD x86-64

I can provide more in depth information. But I am not sure what would be important/helpful.

I found this stack overflow that describes a similar message to yours - firmware - amdgpu SMU driver if version mismatch overrides power limit - Unix & Linux Stack Exchange

The question never got a response, but OP updated saying that it turns out the message in question happens when the dGPU goes into a low power mode and offloads compute responsibility to the iGPU. Are you running the game with DRI_PRIME=1 in the launch options? You could also try explicitly turning on the dGPU in bios to see if it’s related to the hybrid graphics switchover.

Yes I am making use of DRI_PRIME=1. I don’t see an option to disable the iGPU in the BIOS.

Another thing I noticed:

  • glmark2 - works
  • DRI_PRIME=1 glmark2 - works
  • glmark2-wayland - works
  • DRI_PRIME=1 glmark2-wayland - segfaults

Ok so the 1FPS issue in steam games is because DRI_PRIME=1 switches to software rendering via llvmpipe. Using DRI_PRIME=1 DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 7700S (RADV NAVI33)" does work as intended. The segfaults seem to be related to SDL titles on wayland.

1 Like

im pretty sure if you are using vulkan you need to use DRI_PRIME=1! to forcibly apply it anyway. for dxvk, i believe that DXVK_FILTER_DEVICE_NAME="[your gpu]" on its own should be enough (and your DRI_PRIME=1 is doing nothing). If you omit the ! from DRI_PRIME it only affects opengl titles, which cannot choose the gpu themselves.

its also possible to use vendor id and device id with DRI_PRIME (see mesa documentation on environment variables). so DRI_PRIME=1002:7480! should reliably force usage of your dGPU regardless of what order the devices appear in (which can be determined by running vulkaninfo --summary and looking under the “Devices” section)

(this vendor id and product id are those that my laptop reported as belonging to the dgpu using lspci -nn | grep VGA).

This does work very reliable, thanks. Doom 2016 refused to run on the dGPU with all other DRI_PRIME variablles. However openarena, xonotic and various benchmarks still seem to cause segfaults :thinking:

So consider the poor performance part of the problem solved.

1 Like