It may only seem like five minutes since our last release at Christmas, but here we are again with the latest updates to our PowerVR SDK and Tools.
Our first release of 2019 has plenty of improvements as usual, but the highlights we’re going to talk about today are:
- The PowerVR SDK
- PVRTune – our hardware profiler
- PVRCarbon – our graphics API debugger and tracer.
We’ll also give a brief mention to our growing developer community.
So, without further ado, here’s what you need to know:
Our SDK makes developing for PowerVR much easier, with our Framework providing helper functions, wrappers, and boilerplate code to simplify application development with OpenGL ES and Vulkan.
Our graphics techniques are one of the most popular parts of our SDK, which we share in some of our examples. This time, we are releasing the code used to generate Irradiance and Prefiltered maps for ImageBasedLighting. This is a command-line example called VulkanImageBasedLightingMapsGenerator which uses Vulkan® without a surface (headless).
We’ve also been applying some polish to our existing examples, including:
- Various fixes for both the Vulkan and OpenGL ES™ ImageBasedLighting examples, giving much better visuals.
- ImageBasedLighting and PostProcessing examples now use unclipped environment maps captured from real scenes.
- The PostProcessing example now uses runtime-generated templated shaders for Gaussian blurs. These modes have been massively optimised by avoiding the overhead of sampling from buffers within shaders. The flexibility of modifying kernel sizes has been retained without needing to modify shaders.
We’ve also made the following more general improvements to our SDK to make your life easier:
- Rewritten the cmake build system to use a target-centric system and embrace various cmake best practices.
- Integrated glslang into our SDK as a cmake external project, so you can use runtime generation of SPIR-V modules. Our Vulkan PostProcessing example now takes advantage of this to runtime-generate shaders.
- glslangValidator is now built and installed to SDK/bin/<platform_name>/Release. When cross-compiling, it will be built using the host configuration.
- Now you can use std smart pointers such as std::shared_ptr and std::weak_ptr, replacing the use of the hand-rolled RefCounted.h.
To find out more about these changes, and the other numerous under-the-hood updates, take a look at our Release Notes.
PVRTune has always been our must-have tool for hardware profiling on PowerVR devices. With access to both GPU and CPU hardware counters, and a GUI which clearly presents the data you need, it makes identifying bottlenecks and optimising your application much easier.
In this release, the updates for the Complete version of PVRTune include:
- A new “Source View” window (accessed via the Properties tree) which gives full syntax highlighting of captured GLSL shader source code.
- GLSL compiler performance statistics, such as USC utilisation and cycle count, which will be displayed in the Properties view if Profiling Compilers are available.
- Tracking of new OpenGL ES events “glDispatchCompute” and “glDispatchComputeIndirect” which allows correlation of the currently-bound OpenGL ES compute shaders with their corresponding compute HW tasks. Also, compute workgroup dimensions are now available.
The Developer version of PVRTune is available for everyone, but with reduced functionality compared to the Complete version. PVRTune Complete is only available under NDA, due to the low-level nature of what it can access. We’re more than happy to receive NDA requests through our support portal.
PVRMonitor can be thought of as a quick and dirty version of PVRTune which gets stats directly on your device. It is fantastic when you need to check something quickly without the overhead of PVRTune.
If you haven’t already heard about the release of the souped-up version of our PVRMonitor app overlay in the Play Store, we recently wrote a blog post about it. The app now gives you all the hardware counters available from PVRTune and also has improved customisation.
The source is available on GitHub too, if you want to get more involved.
PVRCarbon is our eventual replacement for our OpenGL ES API tracing tool, PVRTrace, and is currently in beta. Unlike PVRTrace, PVRCarbon supports Vulkan alongside OpenGL ES. It has been written from the ground up for much better performance.
Did you know? One of the outstanding features of both PVRTrace and PVRCarbon is the ability to capture API calls not just from single or multiple frames, but also from the whole application.
We’re working hard to bring you all the functionality you’re used to with PVRTrace to PVRCarbon, plus lots more besides. We’d love to have your feedback on this exciting new tool through our support portal.
One highlight of this release is that PVRCarbon’s C++ exporter now supports OpenGL ES as well as Vulkan.
PowerVR Developer Community
We’re excited to announce our new Meetup group. We’ll shortly be arranging meetups where you can join us and fellow graphics developers, for informal talks and discussions on a range of topics. You’ll hear more about it soon, but in the meantime we’d love for you to join now, even if you aren’t sure if you can come along to the meetups in person.
Speaking of community, we often have input from various GitHub users and we’d like to take this opportunity to thank you for helping us make our SDK even better! As previously mentioned, we also have the PVRMonitor source available on GitHub, so if you want to get involved or know more about either, have a wander over to our GitHub area.
We also welcome discussion and questions about anything PowerVR-related on our active developer forum, so why not take a look if you haven’t visited before? Or if you want to contact us directly, use our support portal.
There are many more bug fixes and improvements under the hood for our tools and SDK – far too many to list here, but if you’re interested, take a look at the Release Notes.
PowerVR Tools and SDK 2019 Release 1 is available to download now – why wait?