With the release of the updated PowerVR SDK & Tools 2017 R2 last month, it’s time to take a look at some of the new content packaged that is included alongside it. In this post we’ll take a closer look at the PowerVR Low-Level GLSL Optimisation document – our guide to wringing every last drop of performance out of the PowerVR Rogue architecture. GLSL stands for OpenGL Shading Language, which is normally associated with high-level operations, but there are some low-level optimisations a developer can do that are often overlooked.
When it comes to the PowerVR Rogue architecture, shader performance generally depends on the number of cycles required to execute a shader. The architecture offers a variety of options for executing multiple instructions in the USC (Unified Shader Cluster) ALU (Arithmetic and Logic Unit) pipeline within a single cycle, depending on the configuration, of course. It is possible, for example, to execute two F16 SOP (Sum of Products) instructions, any F32 to F16 conversions, and the move/output/pack instruction, all in a single cycle.
Alternatively, you could execute an FP32 Multiply-Add instruction (MAD), along with an FP32/INT32 MAD/UNPACK instruction, a test (conditional) instruction, and the move/output/pack instruction in one cycle. Math expressions should be written in MAD form in order to take advantage of the USC cores.
Another trick to optimising your work involving the PowerVR Rogue architecture is to take advantage of the fact that in some cases modifiers like abs(), neg(), and clamp(…, 0.0, 1.0), are free under certain conditions. When used on an input to an operation, abs() and neg() are turned into free modifiers by the compiler. On the other hand, clamp(…, 0.0, 1.0) turns into a free modifier when used on the output of an operation.
Thanks to these optimisations, your application will not only use less power to run but have lower hardware requirements as well.
Want to know even more ways to optimise your application? Then download the PowerVR Low-Level GLSL Optimisation document for yourself and find even more ways to leverage the PowerVR Rogue architecture in your favour!
Follow Imagination Technologies on social media on Twitter @ImaginationTech and on LinkedIn, Facebook and Google+.
Functional safety is one of the most important features in embedded systems and so it’s no surprise that we’re constantly talking about it with our customers, attending events and monitoring for advancements. It was an honour to be invited back