Low-Level GLSL Optimisation for PowerVR

Share on linkedin
Share on twitter
Share on facebook
Share on google

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 LinkedInFacebook and Google+.
 

Please leave a comment below

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback. However, all comments are manually moderated and those deemed to be spam or solely promotional will be deleted. We respect your privacy and will not publish your personal details.

Search by Tag

Search for posts by tag.

Search by Author

Search for posts by one of our authors.

Featured posts
Popular posts

Blog Contact

If you have any enquiries regarding any of our blog posts, please contact:

United Kingdom

benny.har-even@imgtec.com
Tel: +44 (0)1923 260 511

Related blog articles

Product and event round-up from the experts in GPU and AI

It’s certainly been a busy few months for Imagination. Towards the latter end of last year, we released a raft of new products and initiatives, and a new CEO took the helm giving us real momentum for 2019. At the

How AI is conducting the future of music technology

“We tend to think of technological advances as destroying what’s gone before, but that doesn’t usually happen. This could lead to a different way of making music.” – Jarvis Cocker, former Pulp frontman, solo artist, writer and broadcaster In recent

Why you should join Imagination at Embedded World 2019

Our technology is focussed entirely on offering SoC manufacturers low power, high-performance options for building groundbreaking products in a range of markets, from automotive to smart devices such as smart speakers to the latest smartphones. Embedded World is one of

Stay up-to-date with Imagination

Sign up to receive the latest news and product updates from Imagination straight to your inbox.

  • This field is for validation purposes and should be left unchanged.