AMD RDNA 3 GPU RX 7600 not fully recognized on Tumbleweed (glxinfo, radeontop)

Hey y’all,

I’m relatively new to Linux but I am learning quite quick. I just build a new PC, because I previously had some problems with NVIDIA and I hoped that AMD would be smooth sailing. After getting comfy with my new build I wanted to try to get stable diffusion working ,and I think I will create a separate thread for that, but I couldn’t get it to work. I tried on my host OS Tumbleweed and also on several distroboxes (ubuntu, arch etc.) to no avail. So now I want to figure out where the problem is step by step. So first of all I read a lot and found the necessary debugging tools but in most of them the GPU doesn’t get recognized properly. I don’t know if I have to do something or if it’s just because the GPU is fairly new. Here is what I mean…

When I type lspci -k | grep -A 3 -E "(VGA|3D)" into the console I get:

VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600S/7600M XT] (rev cf)
Subsystem: Sapphire Technology Limited Device e448
Kernel driver in use: amdgpu
Kernel modules: amdgpu

That is the only command that gives me the right result, because when I type glxinfo -B I get:

name of display: :1
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: AMD (0x1002)
    Device: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default) (0x7480)
    Version: 23.1.6
    Accelerated: yes
    Video memory: 8192MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 7232 MB, largest block: 7232 MB
    VBO free aux. memory - total: 15770 MB, largest block: 15770 MB
    Texture free memory - total: 7232 MB, largest block: 7232 MB
    Texture free aux. memory - total: 15770 MB, largest block: 15770 MB
    Renderbuffer free memory - total: 7232 MB, largest block: 7232 MB
    Renderbuffer free aux. memory - total: 15770 MB, largest block: 15770 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 8192 MB
    Total available memory: 24100 MB
    Currently available dedicated video memory: 7232 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.1.6
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

and radeontop tells me:

Unknown Radeon card. <= R500 won't work, new cards might.

Although radeontop works fine, it says radeontop unknown, running on UNKNOWN_CHIP bus 03, 120 samples/sec at the top.

Please help me, I’m slowly going mad.

I don’t have anything as new as yours, so can’t suggest anything based upon experience. I’ve seen it suggested that for newer graphics eglinfo may be more useful than glxinfo.

@Bird This script needs to be run to collect new PCI ID’s… https://github.com/clbr/radeontop/blob/master/getamdgpuids.sh and submitted upstream for your card to be detected…

Stable Diffusion appears to be Nvidia centric?

bird@localhost ~> eglinfo -B
GBM platform:
eglinfo: eglInitialize failed

Wayland platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES 
OpenGL core profile vendor: AMD
OpenGL core profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL core profile version: 4.6 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: AMD
OpenGL compatibility profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 23.1.6
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: AMD
OpenGL ES profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

X11 platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES 
OpenGL core profile vendor: AMD
OpenGL core profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL core profile version: 4.6 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: AMD
OpenGL compatibility profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 23.1.6
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: AMD
OpenGL ES profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

Surfaceless platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES 
OpenGL core profile vendor: AMD
OpenGL core profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL core profile version: 4.6 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: AMD
OpenGL compatibility profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 23.1.6
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: AMD
OpenGL ES profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

Device platform:
Device #0:

Platform Device platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES 
OpenGL core profile vendor: AMD
OpenGL core profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL core profile version: 4.6 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version: 4.60
OpenGL compatibility profile vendor: AMD
OpenGL compatibility profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL compatibility profile version: 4.6 (Compatibility Profile) Mesa 23.1.6
OpenGL compatibility profile shading language version: 4.60
OpenGL ES profile vendor: AMD
OpenGL ES profile renderer: AMD Radeon Graphics (gfx1102, LLVM 16.0.6, DRM 3.52, 6.4.12-1-default)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

Device #1:

Platform Device platform:
EGL API version: 1.5
EGL vendor string: Mesa Project
EGL version string: 1.5
EGL client APIs: OpenGL OpenGL_ES 
OpenGL core profile vendor: Mesa
OpenGL core profile renderer: llvmpipe (LLVM 16.0.6, 256 bits)
OpenGL core profile version: 4.5 (Core Profile) Mesa 23.1.6
OpenGL core profile shading language version: 4.50
OpenGL compatibility profile vendor: Mesa
OpenGL compatibility profile renderer: llvmpipe (LLVM 16.0.6, 256 bits)
OpenGL compatibility profile version: 4.5 (Compatibility Profile) Mesa 23.1.6
OpenGL compatibility profile shading language version: 4.50
OpenGL ES profile vendor: Mesa
OpenGL ES profile renderer: llvmpipe (LLVM 16.0.6, 256 bits)
OpenGL ES profile version: OpenGL ES 3.2 Mesa 23.1.6
OpenGL ES profile shading language version: OpenGL ES GLSL ES 3.20

bird@localhost ~ [1]> 

Same result :frowning:

Should I download the raw file and run it locally?

You can run CUDA applications via ROCm and some webUI’s already support AMD. I know it won’t be easy, but I think I can get it to run :muscle:. One of the things I did wrong was trying to install amdgpu-pro driver in a distrobox, which I now know is just plain dumb :sweat_smile: but apparently you don’t even need the pro driver and just need the opencl module. On that note I installed rusticl and clover opencl just for fun, but clinfo doesn’t seem to recognize these.

Also…

bird@localhost ~> man lspci | grep -i 'q '
man: can't set the locale; make sure $LC_* and $LANG are correct
       -b     Bus-centric view. Show all IRQ numbers and addresses as seen by the cards on the PCI bus instead of as seen by the kernel.
       -q     Use DNS to query the central PCI ID database if a device is not found in the local pci.ids file. If the DNS query succeeds, the result is cached in  ~/.pciids-
              cache  and  it  is  recognized  in subsequent runs even if -q is not given any more. Please use this switch inside automated scripts only with caution to avoid
       -qq    Same as -q, but the local cache is reset.
       -Q     Query the central database even for entries which are recognized locally.  Use this if you suspect that the displayed entry is wrong.
bird@localhost ~> lspci | grep '03:00.0'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600S/7600M XT] (rev cf)
bird@localhost ~> lspci -Q | grep '03:00.0'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600] (rev cf)
bird@localhost ~> lspci -qq | grep '03:00.0'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600S/7600M XT] (rev cf)
bird@localhost ~> lspci -Qqq | grep '03:00.0'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600] (rev cf)
bird@localhost ~> lspci | grep '03:00.0'
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 33 [Radeon RX 7700S/7600S/7600M XT] (rev cf)
bird@localhost ~> 

I forgot to mention this, but this problem persists since I freshly installed tumbleweed. AMD always has these reward programs, where you get a free game with your purchase and I remember that the script also didn’t recognize the GPU, so I send the support all of the inxi and lspci excerpts and it worked out fine. But even back then, the commands only showed a generic AMD Radeon Graphics. Like I said it is no problem if it is just because the GPU is relatively new, but I can’t seem to find an answer anywhere. The GPU works fine and I have no issues, except for the GPU name not showing.

@Bird Just that it’s new and NAVI 33 not in radeontop PCI ID’s.

If you look at the code, the last run for the PCI ID info was kernel 6.1… the header files in the include directory need updating…
https://github.com/clbr/radeontop/tree/master/include

RDNA 3: Support starts with ROCm 5.7.1 for Ubuntu 22.04 and Windows, for SUSE (openSUSE) it is expected with ROCm 6.0.

https://en.opensuse.org/SDB:AMD_GPGPU

Yeah, I already got it to work with a distrobox. I was thinking about writing a tutorial but haven’t gotten around to it.