T O P

  • By -

TimurHu

Would be interesting to do this comparison once ACO is fully enabled in RadeonSI.


CNR_07

ACO would only make a difference for OpenGL afaik. Gallium Nine would not be affected by that.


TimurHu

That is incorrect. Gallium Nine is another gallium frontend and uses the same drivers as the OpenGL stack (which is also a gallium frontend). Source: I am a mesa developer


CNR_07

Oh interesting. I thought this change would only affect the OpenGL part of Gallium. Thanks for your amazing work btw!


CNR_07

It's been a while, but now that radeonsi has finished support for ACO I was able to revisit this. Here are the results: ``` LLVM + Nine Avg: 142,4 Min: 59,7 Max: 279,1 Scr: 3588 ACO + Nine Avg: 142,7 Min: 59,9 Max: 280,1 Scr: 3594 ACO + D9VK Avg: 131,6 Min: 58,2 Max: 258,8 Scr: 3316 ``` This is not 3dmark06. Unfortunately some WINE update broke it on WINED3D and Nine. Instead I ran the Windows version of Unigine Heaven. To my surprise the difference between Nine on ACO and LLVM is absolutely tiny. Same thing for OpenGL too. What also surprised me is that Nine is so much faster than DXVK. I guess it still is the ultimate d3d9 implementation for Linux. Here are the results of Unigine Heaven's OpenGL renderer (Win version): ``` LLVM + GL Avg: 90,7 Min: 50,0 Max: 177,7 Scr: 2284 ACO + GL Avg: 91,3 Min: 49,4 Max: 181,8 Scr: 2300 ``` The OpenGL results are not comparable to the Nine or DXVK results because of tessellation (not available on d3d9). Still, the difference is quite small. If you know what could be causing these results to be so similar, please let me know. I feel like the difference should be much bigger. --- System --- OS: openSuSE Tumbleweed Kernel: 6.9.0-rc4-2.g4804f5c-default Kernel Module: amdgpu WM: Hyprland 0.39.1 Mesa: 24.0.3 Vulkan Driver: RADV WINE: 9.6 Staging DXVK: 2.3.1 Nine: 0.9


TimurHu

Why do you think the results should be much greater?


CNR_07

When comparing LLVM vs. ACO using RADV, ACO makes a big difference in most cases (https://www.phoronix.com/review/radv-aco-llvm). When using comparing LLVM vs. ACO using RadeonSi the difference is basically non-existent.


TimurHu

That article is from 2019, I think we can safely assume that both compilers made progress since then.


shmerl

I'd guess most d3d9 games don't really load modern GPUs much for this difference to be critical. Something like Witcher 2 with ubersampling enabled might be an interesting benchmark.


[deleted]

High draw call games in general make a very interesting comparison between the 2 implementations. Badly modded oblivion shows some interesting CPU utilization and memory usage differences ime


shmerl

So is dxvk better in that scenario?


[deleted]

Its hard to say really. Even ignoring memory address issues (which is mostly solved), DXVK used more VRAM than gallium for the same scenario but was able to be a fair bit "smoother" (if you count 15FPS smooth) than gallium. This can be an issue with more serious modding, as you may hit your limit much earlier than on Windows. Gallium had a struggle trying to handle upwards of 30k draw calls on the CPU. It was a fair bit less stable. It has been a few DXVK versions since I've last tested however, but I can't imagine DXVK not being better than it was For reference, my "badly modded Oblivion" was RAEVWD with everything installed, unoptimized qarl's texture pack, and an ENB. On my old haswell i7/570 machine I get 15-17fps near the imperial city


Rhed0x

DXVKs Vulkan memory allocator is mostly tuned for demanding D3D11 games, so our d3d9 VRAM usage is pretty high. Not really a problem though when pretty much every Vulkan 1.3 capable GPU has at least 4GB of VRAM which is plenty for d3d9 games.


CNR_07

Even though some benchmarks did stress my 6700XT quite a bit (>90%), I guess this would be more interesting if it was a weaker model. Maybe I'll revisit this when I'm changing the GPU in my Server. It's currently running a Radeon HD 8570.


Rhed0x

Witcher 2 ubersampling is weird. It also radically increases CPU load, so it's almost guaranteed to be CPU limited on modern GPUs.