Support us on Patreon to keep GamingOnLinux alive. This ensures all of our main content remains free for everyone. Just good, fresh content! Alternatively, you can donate through PayPal. You can also buy games using our partner links for GOG and Humble Store.
Testing new Mesa ACO shader compiler for AMD
Page: «2/5»
  Go to:
Shmerl Jul 4, 2019
What mesa version is this ACO shader compiler forked from. Is it 19.1.X or the unreleased 19.2?
Doing comparisons against the wrong mesa version won't mean anything.

They probably rebase it on Mesa master periodically. But you can compare it to itself. I.e. simply disable ACO using environment variable, and it will use the default llvm path:

RADV_PERFTEST=llvm

So no need to build stock Mesa separately for testing.
dubigrasu Jul 4, 2019
Short test of Rise of the Tomb Raider with Proton, Very High settings:

Average FPS, LLVM > ACO
Spine of the Mountain: 84.1 > 88.8
Prophets Tomb: 66.0 > 67.4
Geothermal Valley: 65.1 > 66.4

And here are the frametimes (all three tests combined):

![](https://i.imgur.com/xsV80u0.jpg)

Clearly better frametimes for ACO.
Shmerl Jul 4, 2019
How did you build the graph? And did you collect the data using Mesa Vulkan overlay log?
sr_ls_boy Jul 4, 2019
Curious, the last tag in the ACO repository is:
Date: Mon Jan 29 11:27:18 2018 +0000
Update version to 18.0.0-rc3

The developer must have been working on this for a while. They have
mesa's commits but none of the tags.
dubigrasu Jul 4, 2019
How did you build the graph? And did you collect the data using Mesa Vulkan overlay log?
The game itself dumps the frametimes in a folder. The graph is built with gnumeric.
Shmerl Jul 4, 2019
The developer must have been working on this for a while. They have
mesa's commits but none of the tags.

They must have been working on it for a while. Making a compiler takes time.
tuubi Jul 4, 2019
The developer must have been working on this for a while. They have
mesa's commits but none of the tags.

They must have been working on it for a while. Making a compiler takes time.

According to the announcement on the Mesa mailing list, "a little over one year". That's actually not that long considering the size of the team and the nature of the project.
Shmerl Jul 4, 2019
According to the announcement on the Mesa mailing list, "a little over one year". That's actually not that long considering the size of the team and the nature of the project.

Yeah, though it's not ready to be merged yet, it's in good shape to be tested.
sr_ls_boy Jul 4, 2019
So far, I haven't found a title that Mesa/ACO has a problem with.
I once was able to run 'Outlast 2' but it won't work anymore and I
don't know way. I'll keep looking.
dubigrasu Jul 4, 2019
So far, I haven't found a title that Mesa/ACO has a problem with.
I once was able to run 'Outlast 2' but it won't work anymore and I
don't know way. I'll keep looking.

Have you tried Dying Light?
sr_ls_boy Jul 4, 2019
Have you tried Dying Light?
I just did and the colors looked almost washed out. It almost looked like it was Black and White.
dubigrasu Jul 5, 2019
Have you tried Dying Light?
I just did and the colors looked almost washed out. It almost looked like it was Black and White.
Ah, thanks. Similar with what I found.
Shmerl Jul 5, 2019
So I tried compiling Mesa myself for the first time. Before I used the ppa referenced in the news article on GoL. I used your script @Shmerl but that did not work. I built the newest version of meson 0.51 but it kept looping endlessly on regenerating build files. Then I figured it is due to the compiler option meson --native-files and I deleted that. After that everything compiled and I tried launching vulkaninfo and games with LD_LIBRARY_PATH and VK_ICD_FILENAMES referenced to the build but all die saying bad driver.
What am I missing?

Just FYI, the script assumes you place your built Mesa in /opt/mesa-${mesa_branch} (which is normally /opt/mesa-master).

My custom Mesa deployment looks like this:

/opt/mesa-master
/opt/mesa-master/x86_64
/opt/mesa-master/x86_64/libglapi.so.0.0.0
/opt/mesa-master/x86_64/libglapi.so.0
/opt/mesa-master/x86_64/libglapi.so
/opt/mesa-master/x86_64/libVkLayer_MESA_overlay.so
/opt/mesa-master/x86_64/libvulkan_radeon.so
/opt/mesa-master/x86_64/libGLX_mesa.so.0.0.0
/opt/mesa-master/x86_64/libGLX_mesa.so.0
/opt/mesa-master/x86_64/libGLX_mesa.so
/opt/mesa-master/x86_64/libgbm.so.1.0.0
/opt/mesa-master/x86_64/libgbm.so.1
/opt/mesa-master/x86_64/libgbm.so
/opt/mesa-master/x86_64/libEGL_mesa.so.0.0.0
/opt/mesa-master/x86_64/libEGL_mesa.so.0
/opt/mesa-master/x86_64/libEGL_mesa.so
/opt/mesa-master/x86_64/pkgconfig
/opt/mesa-master/x86_64/pkgconfig/dri.pc
/opt/mesa-master/x86_64/pkgconfig/gbm.pc
/opt/mesa-master/x86_64/pkgconfig/egl.pc
/opt/mesa-master/x86_64/pkgconfig/gl.pc
/opt/mesa-master/x86_64/radeonsi_dri.so
/opt/mesa-master/x86_64/radeonsi_drv_video.so
/opt/mesa-master/share
/opt/mesa-master/share/vulkan
/opt/mesa-master/share/vulkan/icd.d
/opt/mesa-master/share/vulkan/icd.d/radeon_icd.x86_64.json
/opt/mesa-master/share/vulkan/explicit_layer.d
/opt/mesa-master/share/vulkan/explicit_layer.d/VkLayer_MESA_overlay.json
/opt/mesa-master/share/drirc.d
/opt/mesa-master/share/drirc.d/00-mesa-defaults.conf
/opt/mesa-master/share/glvnd
/opt/mesa-master/share/glvnd/egl_vendor.d
/opt/mesa-master/share/glvnd/egl_vendor.d/50_mesa.json


I recommend placing it there, since configured paths are written in the built files.

You can change the location in the build script if you want to place it somewhere else.
sr_ls_boy Jul 5, 2019
I managed to get Outlast 2 to work with vanilla wine without using the staging patches.

+
EDIT: Far Cry 4 is another title that can no longer work if the staging patches are
applied.
sr_ls_boy Jul 6, 2019
I just tried Mad Max with the backend branch/commit d271fd and it worked.
medicalcannabis Jul 6, 2019
This was trivial to set up in Gentoo. I took the existing mesa-9999 ebuild, copied it to mesa-9999-r1.ebuild and changed the git address in the file to point at ACO's repo. Once I recompiled (and keyworded llvm/clang v8 to ~amd64), everything worked.

On AMD Raven Ridge hardware (Ryzen 5 2400G), this has been a night-and-day difference. Games like No Man's Sky (beta Vulkan renderer) would crash after loading all shaders due to the lag required to build motion blur on the fly. This not only solved that issue, but I'm able to do 30fps with all settings maxed, when before it was a complete slideshow. On emulators such as Cemu and Dolphin, shaders are compiling fast enough that I don't even have to run through each Mario Kart 8 level once to build a sufficient shader cache.
dubigrasu Jul 7, 2019
Shadow of the Tomb Raider tested with Proton, Highest settings:

Average FPS:
LLVM = 50.1
ACO = 52.8

Not that much of a difference in terms of average FPS, but the ACO frametimes still look better:

![](https://i.imgur.com/MZy0Vfb.jpg)
sr_ls_boy Jul 10, 2019
I just tried Mad Max with the backend branch/commit d271fd and it worked.

Still not working for me, I am running the vulkan beta tho of it, dunno theorethically it should work.

I've should have thought of that. I'll try it out. I was indeed using the games default opengl renderer.
gort818 Jul 10, 2019
Star Citizen gives me a gpu hang on my vega 56, I created an issue for it https://github.com/daniel-schuermann/mesa/issues/70
Shmerl Jul 12, 2019
So I tried compiling Mesa myself for the first time. Before I used the ppa referenced in the news article on GoL. I used your script @Shmerl but that did not work. I built the newest version of meson 0.51 but it kept looping endlessly on regenerating build files. Then I figured it is due to the compiler option meson --native-files and I deleted that. After that everything compiled and I tried launching vulkaninfo and games with LD_LIBRARY_PATH and VK_ICD_FILENAMES referenced to the build but all die saying bad driver.
What am I missing?

It's actually a bug in Meson 0.51.1. See: https://github.com/mesonbuild/meson/issues/5505

It's fixed in Meson master, but 0.51.1 is broken with temporary native config files the way I was using it.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register