My system refuses to use my dedicated GPU and falls back to the integrated one

Hi,
I built a PC part by part and its finally running now :slight_smile: I use an AMD CPU with integrated graphics as well as a dedicated AMD GPU. I plugged in the HDMI into the GPU port and everything seemed to work at first.
But


glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon Graphics (radeonsi, gfx1200, LLVM 20.1.7, DRM 3.63, 6.15.6-arch1-1)

Odd, isnt it?
But perhaps the system just uses the GPU as a passthrough or a second CPU, I dont know, I am to be honest pretty much a noob :frowning: So I checked, if my PC can even β€œread” the dedicated GPU:

lspci | grep VGA
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 44 [Radeon RX 9060 XT] (rev c0)
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] (rev c1)

It can, so I try to edit the configuration file of my DE:

echo $XDG_SESSION_TYPE
x11
sudo vim /etc/X11/xorg.conf.d/10-amdgpu.conf

with

Section "Device"
    Identifier "AMD"
    Driver "amdgpu"
    BusID "PCI:3:00:0" 
EndSection

and then I tried to force an application to use my GPU. Ive got this solution from here

DRI_PRIME=3 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon Graphics (radeonsi, raphael_mendocino, LLVM 20.1.7, DRM 3.63, 6.15.6-arch1-1)

How is this still not working? :sob: Even neofetch seems to find all the components:

neofetch
                     ./o.                  amdfus@philip-ms7e76 
                   ./sssso-                -------------------- 
                 `:osssssss+-              OS: EndeavourOS Linux x86_64 
               `:+sssssssssso/.            Host: MS-7E76 2.0 
             `-/ossssssssssssso/.          Kernel: 6.15.6-arch1-1 
           `-/+sssssssssssssssso+:`        Uptime: 14 mins 
         `-:/+sssssssssssssssssso+/.       Packages: 1240 (pacman) 
       `.://osssssssssssssssssssso++-      Shell: bash 5.3.0 
      .://+ssssssssssssssssssssssso++:     Resolution: 2560x1440 
    .:///ossssssssssssssssssssssssso++:    DE: Xfce 4.20 
  `:////ssssssssssssssssssssssssssso+++.   WM: Xfwm4 
`-////+ssssssssssssssssssssssssssso++++-   WM Theme: Chicago95 
 `..-+oosssssssssssssssssssssssso+++++/`   Theme: Chicago95 [GTK2], Breeze [GTK 
   ./++++++++++++++++++++++++++++++/:.     Icons: Chicago95 [GTK2], breeze-dark 
  `:::::::::::::::::::::::::------``       Terminal: xfce4-terminal 
                                           Terminal Font: Less Perfect DOS VGA  
                                           CPU: AMD Ryzen 9 9950X (32) @ 5.756G 
                                           GPU: AMD ATI Radeon Graphics 
                                           GPU: AMD ATI Radeon RX 9060 XT 
                                           Memory: 3056MiB / 31127MiB

My friend already suspected, that I dont really have the HDMI plugged into the GPU, so here is some video proof that the HDMI slot on my motherboard is in fact unused.

This forum was great help the last time I was stuck for days, I would be happy about any help I can get <3 How do I force the usage of my dedicated GPU?

Have you checked the settings in your BIOS ?

Yes, I disabled integrated CPU in the BIOS and its still not working. I even did a fresh install now, assuming that endeavour will find the correct drivers for me, but the issue persists :frowning:

lspci | grep VGA
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 44 [Radeon RX 9060 XT] (rev c0)
neofetch
                     ./o.                  amdfus2@philip-ms7e76 
                   ./sssso-                --------------------- 
                 `:osssssss+-              OS: EndeavourOS Linux x86_64 
               `:+sssssssssso/.            Host: MS-7E76 2.0 
             `-/ossssssssssssso/.          Kernel: 6.15.6-arch1-1 
           `-/+sssssssssssssssso+:`        Uptime: 2 mins 
         `-:/+sssssssssssssssssso+/.       Packages: 828 (pacman) 
       `.://osssssssssssssssssssso++-      Shell: bash 5.3.0 
      .://+ssssssssssssssssssssssso++:     Resolution: 2560x1440 
    .:///ossssssssssssssssssssssssso++:    DE: Xfce 4.20 
  `:////ssssssssssssssssssssssssssso+++.   WM: Xfwm4 
`-////+ssssssssssssssssssssssssssso++++-   WM Theme: Arc-Dark 
 `..-+oosssssssssssssssssssssssso+++++/`   Theme: Arc-Dark [GTK2/3] 
   ./++++++++++++++++++++++++++++++/:.     Icons: Qogir-dark [GTK2/3] 
  `:::::::::::::::::::::::::------``       Terminal: xfce4-terminal 
                                           Terminal Font: Monospace 12 
                                           CPU: AMD Ryzen 9 9950X (32) @ 5.756GHz 
                                           GPU: AMD ATI Radeon RX 9060 XT 
                                           Memory: 2010MiB / 31631MiB
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon Graphics (radeonsi, gfx1200, LLVM 20.1.7, DRM 3.63, 6.15.6-arch1-1)

Edit: The kernel should be setup?

lspci -k | grep -EA3 'VGA|3D'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 44 [Radeon RX 9060 XT] (rev c0)
	Subsystem: Sapphire Technology Limited Device 493e
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu

just opengl still gives me AMD radeon

Ok, perhaps this is an issue with mesa labelling the GPU wrongly. Because

lspci | grep -E "VGA|3D"
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 44 [Radeon RX 9060 XT] (rev c0)

Looking at the output of dsmeg


sudo dmesg | grep amdgpu

I get

[    5.691364] [drm] amdgpu kernel modesetting enabled.
[    5.691480] amdgpu: Virtual CRAT table created for CPU
[    5.691491] amdgpu: Topology: Add CPU node
[    5.691610] amdgpu 0000:03:00.0: enabling device (0006 -> 0007)
[    5.695064] amdgpu 0000:03:00.0: amdgpu: detected ip block number 0 <soc24_common>
[    5.695066] amdgpu 0000:03:00.0: amdgpu: detected ip block number 1 <gmc_v12_0>
[    5.695067] amdgpu 0000:03:00.0: amdgpu: detected ip block number 2 <ih_v7_0>
[    5.695068] amdgpu 0000:03:00.0: amdgpu: detected ip block number 3 <psp>
[    5.695068] amdgpu 0000:03:00.0: amdgpu: detected ip block number 4 <smu>
[    5.695069] amdgpu 0000:03:00.0: amdgpu: detected ip block number 5 <dm>
[    5.695070] amdgpu 0000:03:00.0: amdgpu: detected ip block number 6 <gfx_v12_0>
[    5.695071] amdgpu 0000:03:00.0: amdgpu: detected ip block number 7 <sdma_v7_0>
[    5.695072] amdgpu 0000:03:00.0: amdgpu: detected ip block number 8 <vcn_v5_0_0>
[    5.695072] amdgpu 0000:03:00.0: amdgpu: detected ip block number 9 <jpeg_v5_0_0>
[    5.695073] amdgpu 0000:03:00.0: amdgpu: detected ip block number 10 <mes_v12_0>
[    5.695083] amdgpu 0000:03:00.0: amdgpu: Fetched VBIOS from VFCT
[    5.695084] amdgpu: ATOM BIOS: 113-P816G493-P04
[    5.738621] amdgpu 0000:03:00.0: vgaarb: deactivate vga console
[    5.738624] amdgpu 0000:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[    5.738690] amdgpu 0000:03:00.0: amdgpu: VRAM: 16304M 0x0000008000000000 - 0x00000083FAFFFFFF (16304M used)
[    5.738691] amdgpu 0000:03:00.0: amdgpu: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
[    5.738768] [drm] amdgpu: 16304M of VRAM memory ready
[    5.738769] [drm] amdgpu: 15815M of GTT memory ready.
[    5.738827] amdgpu 0000:03:00.0: amdgpu: PCIE GART of 512M enabled (table at 0x00000083DAB00000).
[    5.739490] amdgpu 0000:03:00.0: amdgpu: Found VCN firmware Version ENC: 1.9 DEC: 9 VEP: 0 Revision: 2
[    5.958810] amdgpu 0000:03:00.0: amdgpu: RAS: optional ras ta ucode is not available
[    5.961918] amdgpu 0000:03:00.0: amdgpu: RAP: optional rap ta ucode is not available
[    5.961920] amdgpu 0000:03:00.0: amdgpu: SECUREDISPLAY: securedisplay ta ucode is not available
[    5.961947] amdgpu 0000:03:00.0: amdgpu: smu driver if version = 0x0000002e, smu fw if version = 0x00000032, smu fw program = 0, smu fw version = 0x00664300 (102.67.0)
[    5.961949] amdgpu 0000:03:00.0: amdgpu: SMU driver if version not matched
[    6.022261] amdgpu 0000:03:00.0: amdgpu: SMU is initialized successfully!
[    6.389957] amdgpu 0000:03:00.0: [drm] REG_WAIT timeout 1us * 150000 tries - optc401_disable_crtc line:230
[    6.393272] snd_hda_intel 0000:03:00.1: bound 0000:03:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[    6.421244] amdgpu 0000:03:00.0: amdgpu: program CP_MES_CNTL : 0x4000000
[    6.421248] amdgpu 0000:03:00.0: amdgpu: program CP_MES_CNTL : 0xc000000
[    6.472554] amdgpu: HMM registered 16304MB device memory
[    6.473690] kfd kfd: amdgpu: Allocated 3969056 bytes on gart
[    6.473701] kfd kfd: amdgpu: Total number of KFD nodes to be created: 1
[    6.473739] amdgpu: Virtual CRAT table created for GPU
[    6.473789] amdgpu: Topology: Add dGPU node [0x7590:0x1002]
[    6.473791] kfd kfd: amdgpu: added device 1002:7590
[    6.473798] amdgpu 0000:03:00.0: amdgpu: SE 2, SH per SE 2, CU per SH 8, active_cu_number 32
[    6.473801] amdgpu 0000:03:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[    6.473802] amdgpu 0000:03:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[    6.473803] amdgpu 0000:03:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[    6.473803] amdgpu 0000:03:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 6 on hub 0
[    6.473803] amdgpu 0000:03:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 7 on hub 0
[    6.473804] amdgpu 0000:03:00.0: amdgpu: ring sdma0 uses VM inv eng 8 on hub 0
[    6.473804] amdgpu 0000:03:00.0: amdgpu: ring sdma1 uses VM inv eng 9 on hub 0
[    6.473805] amdgpu 0000:03:00.0: amdgpu: ring vcn_unified_0 uses VM inv eng 0 on hub 8
[    6.473805] amdgpu 0000:03:00.0: amdgpu: ring jpeg_dec uses VM inv eng 1 on hub 8
[    6.478610] amdgpu 0000:03:00.0: amdgpu: Using BACO for runtime pm
[    6.478788] amdgpu 0000:03:00.0: [drm] Registered 4 planes with drm panic
[    6.478789] [drm] Initialized amdgpu 3.63.0 for 0000:03:00.0 on minor 1
[    6.485770] fbcon: amdgpudrmfb (fb0) is primary device
[    6.841207] amdgpu 0000:03:00.0: [drm] REG_WAIT timeout 1us * 150000 tries - optc401_disable_crtc line:230
[    6.917062] amdgpu 0000:03:00.0: [drm] fb0: amdgpudrmfb frame buffer device

I cant find anything wrong with it, please correct me. Furthermore:

[drm] Initialized amdgpu 3.63.0 for 0000:03:00.0 on minor 1

seems like my dedicated GPU is activated. Since gfx1200 is for integrated GPUs in mesa, I checked what GPUs mesa can find:


ls /dev/dri/
by-path  card1  renderD128

which is indeed only one card. I suspected that perhaps some firmware is missing and therefore leading to mesa labelling this wrong, but

sudo dmesg | grep -i firmware
[    3.848026] systemd[1]: Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[    4.868216] [drm] Loading DMUB firmware via PSP: version=0x00011100
[    4.868514] amdgpu 0000:03:00.0: amdgpu: Found VCN firmware Version ENC: 1.9 DEC: 9 VEP: 0 Revision: 2

which looks good to me. Next, I checked the mapping of the PCIs in mesa:

/dev/dri/by-path/
insgesamt 0
lrwxrwxrwx 1 root root  8 17. Jul 12:03 pci-0000:03:00.0-card -> ../card1
lrwxrwxrwx 1 root root  8 17. Jul 12:03 pci-0000:03:00.0-platform-simple-framebuffer.0-card -> ../card0
lrwxrwxrwx 1 root root 13 17. Jul 12:03 pci-0000:03:00.0-render -> ../renderD128

which also just confirms that my dedicated GPU is somehow mapped to the integrated, right? I tried to use mesa-git and deleted the mesa cache, which didnt change anything. Regardless of all that, vulkaninfo recognizes the AMD radeon as dedicated gpu:

vulkaninfo | grep deviceName
WARNING: radv is not a conformant Vulkan implementation, testing use only.
	deviceName        = AMD Radeon Graphics (RADV GFX1200)

I tried then messing around with
RADV_FORCE_FAMILY=navi33 vulkaninfo | grep deviceName

but no family seemed to fit. Any ideas on how to fix this? Should I report this to mesa?