AMD Radeon RX 7900 XT/XTX on Linux shortly after release:


UPDATE FROM 2023.01.08: Thx to some people in this Github-Issue: "https://github.com/CatWithCode/catwithcode.moe/issues/1" I discovered that Arch is not really working... actually... it kinda works great... IDK. It ONLY works if the iGPU of the CPU is enabled. Nothing is connected to it, but for some unknown reason everything works as long as this condition is checked. NO performance issues or anything! With iGPU disabled everything is extremely broken. As far as everyone can tell, it has something to do with a still outdated version of LLVM (The 7900XT/XTX needs version 15 or higher). For me it is perfectly working so I don't worry about it, but if you don't have a iGPU on your CPU the 7900XT/XTX will still not work without some fixing work! I left some good discoveries and information in the Sources Section if you need a starting point. All this will definitely change in the very near future, but for now that's all we got. When even Arch is too outdated for your hardware you know you bought bleeding edge. Also, some games show multiple ways to display the game (I only have displays on the 7900XT and some games give me the option to display it on one of the three displays with 2 different GPUs each (https://github.com/CatWithCode/catwithcode.moe/issues/1#issuecomment-1374572918). Some games that come as a Flatpack have the issue of relying on some Flatpack dependency that is too outdated to recognize the 7900XT/XTX and only render the game on the iGPU (DXVK-HUD can tell you what the game gets rendered on). XIVLauncher for example. AUR or compiling yourself is the only option currently (Will also definitely change in the near future!).


UPDATE FROM 2022.12.23: Arch has now all the Updates needed to boot and run great. But at the moment the .ISO's are still to old. Install them, update them, install the newest stable Kernel and AFTER that they will run perfectly. I recommend Kernel 6.1.0-1 and newer.


Software-Versions I had at the end:

!!!In a few weeks/months this all will not be necessary anymore. Then firmware and driver will be new enough in the most Linux-Distros!!!

This is done with no more work in mind. That means as soon as Pop OS supports these GPUs all of this is replaced automatically and you don't need to do anything else.

If there is a Linux-firmware update and it, for some reason, does not contain the newest files, with support for the new GPUS you need to copy everything there again and redoo the initramfs thing!

OpenSuse Tumbelweed, Manjaro and Arch did not work or were really broken.

Long story short. I bought a new PC and did not realise how new the Radeon 7900XT actually is (2 days at the time of writing). It did not work on Linux as expected after so little time. But after some research and try and error I found multiple things to get it working.

I tested several Linux Distributions and only ONE kind did work... everything Ubuntu based. Sure with a lot of will, you can get it to work elsewhere, but good luck with that in the long term. I'm sure it has something to with the way mesa is compiled. At least some Arch Reddit entry's suggested that. That's surly why this exact ppa Mesa works so good.



HOW I DID IT:


I USED POP OS! """Easiest""" way to get it working.


Plug a Display into the motherboard if possible or install a different GPU (Or do everything on a different PC until you're done).


Install Pop OS and update it.


Install the newest "Stable" MESA-Driver. NOT THE GIT-VERSION! It is most likely still broke and/or compiled wrong in this use case:

I recomand this (Seems to have been properly compiled with the latest packages for these new GPUs): https://launchpad.net/~kisak/+archive/ubuntu/kisak-mesa

sudo add-apt-repository ppa:kisak/kisak-mesa

sudo apt update

sudo apt upgrade


Now we need to force Pop OS to use the new Repository for MESA.

sudo gedit /etc/apt/preferences.d/kisak-pin-2000

Now put the following into the File:

Package: *

Pin: release o=LP-PPA-kisak-kisak-mesa

Pin-Priority: 2000


Now update again:

sudo apt update

sudo apt upgrade


Make sure that you use a Kernel newer then 6.0 (Pop OS uses "6.0.6-76060006-generic" at the time of writing).


The only thing missing to get Linux to boot with the GPU as the Display-Output is the Firmware. Most Distors will not have the firmware files for some time, so you need to force the Kernel to use them.

Download the newest Linux Firmware .tar.gz: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Now you need to put all AMDGPU files in your Firmware folder (I highlight recommend that you backup "/lib/firmware/amdgpu/" before using this command):

sudo cp "PATH TO ARCHIVE"/linux-firmware/amdgpu/* /lib/firmware/amdgpu/


The only thing missing now is to rebuild the initframfs. After that, the Kernel should recognize the GPU:

sudo update-initramfs -c -k $(uname -r)


I highlight recommend using WAYLAND! XORG is really buggy with this Setup (Crashes and invisible Curser) but WAYLAND works near perfectly (As perfect as Wayland can work):

sudo gedit /etc/gdm3/custom.conf

Now comment out the following line that says:

WaylandEnable=false

After that it sould look like this:

#WaylandEnable=false


If you really want to use X11 you can fix the curser Issue. "Rav8es" on GitHub explained how. Did not test it (Only using Wayland):

https://github.com/CatWithCode/catwithcode.moe/issues/1#issuecomment-1364848537


Reboot (Make sure you are not automatically logged in. You need to change to Wayland!)

On the login-Screen, after you click on your Profile, there is a little gear icon on the bottom right. Click on it and make sure to set it to something like "POP with WAYLAND" or similar (GNOME, KDE ON WAYLAND,...). If there is and option like "Gnome under XORG" then the normal "Gnome" is the Wayland version.

After you logged in, check if you are on Wayland. If yes, check if everything works.


DONE!


Hope I helped you!


THANKS TO EVERYONE IN THE "Sources"-SECTION! Without all your posts I would have never got it to work!

Sources: