Shader Optimizations Revived For R600 Gallium3D

Going back to late 2011, Girlin was working on shader optimizations for R600g and he finally found time to revive his work on this code. He said on Wednesday that the code is now mostly done, correct, and featureful -- at least for the Radeon HD 5000 "Evergreen" series. It's still a "work in progress" for the efficiency of generateds shader code and the back-end itself, but he's becoming quite happy with the progress.
Vadim Girlin spent time in 2012 studying the R600 GPU LLVM back-end too, but he decided that it would be easier to implement all of his desired functionality into his own implementation.
In his new mailing list post, Vadim writes, "Currently the branch has no regressions with piglit's quick-driver.tests on evergreen (it doesn't rely on the fallback to unoptimized code for the shaders with relative addressing and other cases unlike the previous branch), and so far I don't see any rendering issues with the apps that I used for testing - Lightsmark 2008, Unigine Heaven 3.0 and some others. There are also some performance improvements with the gpu-bound apps."
The code in its current form can be found in this Mesa branch. In his mailing list post, Vadim provides a lot more detail about the current work and features surrounding this shader optimization code for the open-source R600g driver. It's not known what will ultimately happen of this R600g code, but it's worth checking out. Right now Vadim is seeking the comments and review of other open-source Radeon Linux driver developers.
11 Comments