Getting low FPS in both Dolphin and Citra emulators

Hello!

Yesterday I assembled my Framework 13 with Ryzen 5 7640U APU, installed Ubuntu 22.04 and the OEM Kernel package “linux-oem-22.04c” (using “6.1.0-1026-oem” currently and, yes, I also made sure it loads by default in the grub config). Today I upgraded to the latest firmware 03.03. It seems to be running alright but the opengl performance is abysmal. I can’t get CITRA (a Nintendo 3DS emulator) or Dolphin to maintain a stable framerate of 60 FPS. Citra, especially, runs dog slow with less than 30 FPS. I tried switching to an X.org session but it did not make a difference.

I don’t quite understand what’s going on but I am also a bit new to GPU drivers on Linux. However, my 5 years old Intel based Fujitsu-Siemens runs Citra and Dolphin quite alright. I installed both emulators from snap (not apt).

Has anybody dug deeper into Linux’ gfx sub system and squeezed out more performance out of this AMD GPU? Should I install proprietary AMD drivers?

Best regards,
Gernoti

No, you only need the proprietary drivers for some computing stuff, and even then they’re a pain to install. Performance of the open source drivers is great and comparable to the Windows drivers.

Is there a way I can check whether amdgpu is up and running correctly? I mean I saw the Kernel module loading and „glxgears -info“ running fine.

Perhaps it’s an issue of these emulators themselves not working nice together with the drivers. That would a bit sad, though, as I was looking forward to finally play „Pilotwings Resort“ upscaled with enhanced gfx on my shiny new laptop and, now, here I am not getting it to run it even beyond 20 fps in its native resolution. :frowning:

Perhaps I’ll try installing Steam first and test more modern games.

Might be able to check with amdgpu_top if it gets into gear.

There seems to be a bug with the EC which doesn’t switch the thermal limits back from power save when it’s been set.

Ensure you are running a kernel that supports amd-pstate-epp and are using the powersave governor set to balanced_performance. If it sets the platform profile to low-power then it won’t get set back until a power cycle.

More info in this thread

Having said that I have tested ryujinx and had no problems. But am using a more up to date mesa sand kernel in fc39

I was too lazy to install a rust build tools but I installed “radeontop” and, interestingly, running “glxgears” w/o vsync (“vblank_mode=0 glxgears”) results into significant load on the gpu according to radeontop:

But with Citra (the 3DS emulator) it does not:

So the emulator is not using my GPU at all.

Weird.

Radeontop doesn’t show you what amdgpu_top does, the interesting bits are the clocks and stuff. Load without clocks/power levels are relatively meaningless here.

Try amdgpu_top instead of radeontop.

6.1 is really old and definately won’t include a heap of amdgpu bits, nor amd-pstate which is really neede for perf/power management on the zen mobile SKUs.

Also what version of mesa is 22.04 shipping ? is it even on 23?

You might be able to at least enable a newer mesa stack from a ppa ; but my advise would be to move to 23.10 if you can or jump to fedora39

Thanks for your input. Was still too lazy to install a rust build chain. But I’ll get back to that later (I guess it would be quite a handy tool).

I started both emulators from the terminal to get more error outputs and look at that I am on to something:

/usr/share/libdrm/amdgpu.ids: No such file or directory
amdgpu: unknown (family_id, chip_external_rev): (148, 8)
libGL error: failed to create dri screen
libGL error: failed to load driver: radeonsi

It seems to be an issue with the snap sandbox not providing the libdrm library. Sigh. Snap. Will it ever not have issues? :wink:

Wait so it is falling back to software rendering there? 20 fps sounds actually kinda impressive then.

1 Like

Yep.

I’ve created issues with the maintainer of the corresponding snaps:

I guess, if I dig myself into it snapcraft a little bit more, I could also issue a PR. Let’s see.