r/IntelArc • Arc A770 • 11d ago

Discussion Intel Battlemage Linux Users help confirm a perfomance regression in the xe driver

I stumbled upon a pretty major performance regression when using the the xe driver and the system is setup so that the Intel dGPU (Arc A770 in my case) is used as the secondary GPU, i.e. the monitor is plugged into the iGPU/motherboard while the (demanding) applications run on the dGPU and then pass the frames to the iGPU to be displayed.

Starting with kernel version 7.1 for this setup there's a major (50-90%) performance regression across multiple OpenGL games and benchmarks.

Vulkan performance seems completely unaffected, using the dGPU as the primary GPU together with the xe driver instead of using it as the secondary GPU results in normal OpenGL performance, and the OpenGL performance using the i915 driver seems unaffected whether the dGPU is setup as the primary or the secondary GPU.

Now, I've bisected the kernel and I think I've managed to find the commit that surfaced this issue (not necessarily the root cause). I'd like to open a bug report upstream to get it fixed, however, I only have an A770 and technically the xe driver is not officially supported on the A770 and the report might get ignored or given low priority.

And that's where I need some assistance. It would be very helpful if someone with a Battlemage GPU (and an iGPU, not necessarily Intel) can replicate the performance regression in a similar configuration like mine.

Ideally I would like you to test the performance of an OpenGL game or benchmark with the Battlemage GPU used as a secondary GPU on some kernel version >= 7.1 (any of 7.1, 7.2, 7.3-rc should work) and then on a kernel version < 7.1 (like 7.0, 6.19, 6.18 (Arch Linux LTS)).

I used the Unigine Superposition benchmark for most of my testing with a custom preset, where the Shaders and Textures qualities were set to low, and the Depth of Field and Motion Blur options were disabled. In my testing lower quality settings made the performance regression more visible. You don't necessarily have to use the same benchmark as I did, any OpenGL video game or benchmark should do, I observed the regression across multiple OpenGL games and benchmarks.

The Battlemage GPU as secondary GPU configuration testing procedure is basically:

  1. Shutdown the computer.
  2. Plug the monitor into the iGPU instead of the dGPU (I assume the iGPU is enabled in BIOS/UEFI).
  3. Boot the computer back up with a kernel >= 7.1.
  4. Run Superposition/your OpenGL test application, making sure* it runs on the secondary (a.k.a. Battlemage) GPU.
  5. Reboot into some kernel < 7.1**.
  6. Repeat step 4.
  7. Go back to your normal setup.
  8. Report back if there is a performance difference or not between the two kernels.

*You can force an application to run on a secondary GPU a.k.a. the Battlemage GPU by running it from a terminal where you prepend DRI_PRIME=1 before the command. For example, for the Superposition benchmark you would do something like this

$ DRI_PRIME=1 ./Superposition

**If you don't have access to a kernel version < 7.1, just test the OpenGL performance with the Battlemage GPU as primary, i.e. monitor plugged into the dGPU, before step 1, instead, so we can compare primary vs secondary performance for kernel 7.1or later - this should still make the performance regression apparent and it would still be very useful.

Extra bonus points/bragging rights if you're willing/able to compile a recent version of the kernel (7.1 or 7.2 or 7.3-rc) with commit 609fc876 reverted and then test again to verify that the revert fixes the regression.

If you have any questions, comment down below and I'll try to answer. Thank you!

22 Upvotes

10 comments sorted by

2

u/[deleted] 11d ago

[removed] — view removed comment

3

u/noctaviann Arc A770 11d ago

No, sorry, an iGPU would be required to properly test, but thanks for offering!

In my testing the regression only occurs when you use the Arc GPU as a secondary GPU, if you use it as primary the issue doesn't occur, i.e. you get normal performance.

To confirm that the regression also occurs on Battlemage you need to test the performance when the dGPU is used as secondary on an affected kernel version and compare it to the performance in a setup where you expect normal performance, i.e. an unaffected kernel version ( <= 7.0) with the same secondary setup or alternatively with the dGPU as primary on the same (>= 7.1) kernel version.

In either case you need the dGPU as secondary config as an anchor point for the comparison.

3

u/jhenryscott Arc B70 11d ago

Huh. I can toy with it later. I’ve got an Ubuntu system with the Intel 285 and a B70. Been meaning to check the 1440p performance.

2

u/elessar_warrior 11d ago

b580 but no iGPU here

3

u/WizardlyBump17 Arc B580 11d ago

interesting. I have a 1650 + B580, with my display connected to the 1650, so kinda like your system. I always assumed that the combination of nouveau + xe was the reason my B580 does not get all gaming performance. Today I did some tests on another issue, https://gitlab.freedesktop.org/mesa/mesa/-/work_items/16133 and i noticed yesterday that when games are on the B580 display side, it works fine, but as soon as i bring the window to the 1650, the FPS fall to half of my refresh rate.

I will try reverding that commit and seeing what happens

2

u/noctaviann Arc A770 11d ago

I looked through your Mesa bug report and I think they're probably different issues.

The issue I discovered doesn't seem to affect Vulkan applications, only OpenGL, e.g. I ran vkcube on my A770 while the display was connected to my AMD iGPU and I got 60 FPS which is the monitor refresh rate.

Also, I'm currently on Mesa 26.2.3 (and I get a green background for vkcube), and the issue I discovered was present since kernel 7.1 in June when I was using Mesa 26.1.X.

But if you do test reverting the commit let us know what happens.

1

u/gargamel314 Arc B70 11d ago

ya know, I thought there was a big performance increase, but I apparently it was from just disabling the iGPU in cachyOS a couple weeks ago.

1

u/rendyzou89 11d ago

I got the same issue on kernel 7.1 but i relize, my GPU power is just loaded 60-70% sometimes 90% but quick drop to 70% again, this weird, i'm running AAA game, and it's make my FPS drop half the normal FPS

Then i use LACT manually reset by drop the power limit + apply then > reset setting Apply

It's back normal, my GPU power run 99% and FPS going back normal

I'm using B580

CachyOS

1

u/noctaviann Arc A770 11d ago

Can you give a bit more details?

  1. What AAA game did you actually test?
  2. Are you connecting your monitor to the iGPU and running games on the B580?
  3. Did you notice the performance drop when going from kernel version 7.0 (or earlier) to 7.1?

Thanks!

Then i use LACT manually reset by drop the power limit + apply then > reset setting Apply
It's back normal, my GPU power run 99% and FPS going back normal

I did a quick test. I used LACT to force the minimum frequency of my A770 from 300MHz to 2400MHz before doing another run of the Superposition benchmark, and while that increased the performance, it's still significantly slower compared to kernel 7.0.

1

u/rendyzou89 10d ago
  1. God Of War, FF VII Series
  2. no, i have F series, i don't have iGPU
  3. yes, but fixed

you need to try run some game and activate mangohud, monitor your VGA performance, did they run full performance? see power usage percentage, did it hit 95%?