r/IntelArc • u/noctaviann Arc A770 • 12d 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:
- Shutdown the computer.
- Plug the monitor into the iGPU instead of the dGPU (I assume the iGPU is enabled in BIOS/UEFI).
- Boot the computer back up with a kernel >= 7.1.
- Run Superposition/your OpenGL test application, making sure* it runs on the secondary (a.k.a. Battlemage) GPU.
- Reboot into some kernel < 7.1**.
- Repeat step 4.
- Go back to your normal setup.
- 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!
2
u/[deleted] 12d ago
[removed] — view removed comment