Updated: It has been merged into Mesa, just before I clicked publish on this—what timing! From what they said, it should be available in Mesa 19.3 and it can be enabled with the "RADV_PERFTEST=aco" environment variable (source).
Original article:
Back in early July, Valve announced their work on a new AMD GPU shader compiler for Mesa named ACO and now they're trying to get it pulled into Mesa directly.
Their main aims with ACO were to get the "best-possible code generation for game shaders, and fastest-possible compilation speed" and to replace the currently used shader compiler from the massive LLVM project. It has certainly seemed promising, improving both shader compile time resulting in less stuttering and so helping to improve overall FPS and smoothness in Linux games when played on supported AMD GPUs.
Just this week, a merge request was opened to get ACO into Mesa officially and so far the reception does seem quite positive. It's not in yet though and it may need more work doing and adjustments before it's actually accepted. It's likely far too late for Mesa 19.2 which is due to release very soon, so hopefully Mesa 19.3 currently due towards the end of the year will see it.
You can see Valve's original announcement with more details about ACO here, although with the new Steam display view for news and events it doesn't load for me so use the Wayback Machine if you have the same issue.
To see a little more discussion about it, there's people testing it in our forum.
So what happens is (simple case, not covering complex ones like translation layers and Wine), that your shader written in high level language like GLSL or HLSL is compiled into portable intermediate representation (bytecode) i.e. SPIR-V during your development. This shader is shipped with the game. When the game runs, it passes the shader to the graphics backend (i.e. Vulkan "driver"). It has to use a compiler, to compile that SPIR-V shader into GPU machine code. That compiler is arleady specific to the GPU it's targeted at. I.e. the same game would work with Intel, AMD or Nvidia, in each of those cases, relying on different compilers to turn SPIR-V into machine code to be executed on the GPU.
This way developers themsleves don't need to compile shaders before hand into machine code, which makes games more portable and future proof. I.e. if you'd be shipping machine code shaders with your game, it would break on each new GPU generation or so, plus you'd need to compile for every existing GPU architecture yourself, and then select it at runtime yourself too. Basically - too messy.
Until now, Mesa used amdgpu (llvm based) compiler for AMD cards for Vulkan and OpenGL use cases:
* https://github.com/llvm-mirror/llvm/tree/master/lib/Target/AMDGPU
* https://github.com/llvm-mirror/llvm/blob/master/docs/AMDGPUUsage.rst
* https://llvm.org/docs/AMDGPUUsage.html
Now developers are working on standalone compiler, that's not relying on llvm. Again, this has nothing to do with Steam service, but Valve developers are leading the effort though.
Last edited by Shmerl on 19 September 2019 at 10:09 pm UTC
Quoting: ShmerlQuoting: torbidoIs there any review or an article to backup your words?
That's what it is. A shader compiler for the Vulkan driver (radv). I.e. why do you assume it's something to do with Steam (service)? If you think so, you should have a source for such assumption, not the other way around.
Because in its announcement they mentioned "online compilation of game shaders", and I asked where can we download these game shaders, and no one knew the answer, and when I used Steam, I found that it automatically downloading these shaders before running the game, so I assumed that it will be only available for Steam games only, because they are not available anywhere else.
Last edited by torbido on 19 September 2019 at 6:15 pm UTC
Quoting: torbidoBecause in its announcement they mentioned "online compilation of game shaders
Do you have an exact quote? I'm not sure what "online compilation" means. Possibly just on demand, during game execution.
Last edited by Shmerl on 19 September 2019 at 6:10 pm UTC
Quoting: ShmerlQuoting: torbidoBecause in its announcement they mentioned "online compilation of game shaders
Do you have an exact quote? I'm not sure what "online compilation" means. Possibly just on demand, during game execution.
Quoting: ShmerlQuoting: torbidoBecause in its announcement they mentioned "online compilation of game shaders
Do you have an exact quote? I'm not sure what "online compilation" means. Possibly just on demand, during game execution.
They removed the direct link to the announcement, but it is still number 2 in their news page, you just need to scroll down in this link
https://steamcommunity.com/games/221410/announcements
I don't know if we excluded online game shaders, it will give the same result or not, because no one made any reviews.
Last edited by torbido on 19 September 2019 at 6:28 pm UTC
Last edited by Shmerl on 19 September 2019 at 6:28 pm UTC
Quoting: ShmerlI think by online compilation they mean what I said above.And what this option in Steam does exactly?!Online→ runtime. That should make it more clear. Simply compilation of shaders on your computer during game execution. Nothing to do with online as "on the network".
Last edited by torbido on 19 September 2019 at 6:46 pm UTC
Quoting: ShmerlThat's Steam backend compiling shaders for specific architecture on the server, and then downloading and using it for local games. Not what they called online in the above quote.Ok, I hope that you are right about that.
https://github.com/srmojuze/Refresh2025/releases
RADV/ACO
and you can start it with RADV_PERFTEST=llvm ./Refresh2025.x86_64
then it is just RADV
Quoting: ShmerlOk, I hope that you are right about that.It's common terminology.
off-line compilation = shipping pre-compiled binaries for your GPU. You'd do this on consoles.
on-line = the opposite, i.e. letting your graphics driver do the job locally during execution.
Last edited by YoRHa-2B on 21 September 2019 at 4:15 pm UTC
See more from me