When reading the following slide from ARM Getting the most out of OpenGL ES 3.0, one of the first feature presented is Separate Shader Objects, which involve using the new Program Pipeline feature of OpenGL ES 3.1. However, when grep-ing the Mali's Android SDK code for pipeline, the only results I got was some references in HTML documentation files and comments.
pipeline
The question is :
The Apple documentation seems to encourage the use of pipelines in their Best Practices for Shaders documentation, however they target other GPU so I'm wondering if SSOs and pipelines play well compared to monolithic programs on Mali GPU specifically ?
Ah ! Thanks for these precious informations Daniele Di Donato !
Interesting to see that drivers can do Whole Program Link Time Optimisations on standard shaders programs.I'll keep that in mind when analysing the performance of OpenGL programs.
Does the Offline Mali Shader Compiler provide an overview of potential link-time optimisations when combining two shaders in a program ?
Anyway, I'll keep using standard programs when possible.
Hi Myy,
The Offline Mali Shader compiler works only on single shader files. That means it can perform optimization on single shader level but not on the whole program since it can run only on a single shader.
Regards,
Daniele