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.
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.
[ 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:
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.
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.
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
So consider the poor performance part of the problem solved.