Here’s an early Christmas present for graphics developers – the release of the latest version of our PowerVR Tools and SDK! The headline features for this release include some exciting new examples demonstrating new techniques in our SDK, and some very useful new functionality for our performance profiling tool, PVRTune.
You can download the new PowerVR Tools and SDK immediately and then read on to see what you’re going to be unwrapping!
We’re really pleased to share our new and updated examples, which showcase some handy new techniques, optimised for PowerVR.
Our brand-new image-based lighting example shows you how to achieve physically-based rendering (PBR) efficiently on mobile platforms. There are two modes:
- Spheres – which demonstrates the effects of varying roughness and metallic material properties when using PBR.
- Helmet – which showcases a model with multiple material properties.
Our post-processing example has been completely rewritten, and now demonstrates a set of heavily optimised bloom post-processing techniques using Gaussian Blur, as well as some other implementations seen in recent games.
These techniques are as follows:
- Reference implementation of a separated Gaussian Blur.
- Linear sampler-optimised separated Gaussian Blur.
- Sliding average compute-based separated Gaussian Blur.
- Linear sampler-optimised separated Gaussian Blur with samples of negligible value truncated. This means the approximate blurs can be achieved with far fewer samples.
- Hybrid Gaussian Blur using the truncated separated Gaussian Blur along with a sliding average-based Gaussian Blur.
- Kawase Blur.
- Dual Filter.
- Pyramidal Filter hierarchy bloom.
“Introducing PVRVk” example
This is another new example for this release. “Introducing PVRVk” is aimed at developers looking for extra guidance when writing Vulkan applications using our Framework. It has the same functionality as our existing example “Introducing PVRShell“, but this time you can see how using PVRVk reduces boilerplate code and provides strongly-typed enums and reference counting. This means you can get to the same result as in “Introducing PVRShell” but with much less code, much less hassle, and most importantly – much quicker.
SDK in general
We’ve also been looking more closely at colour space – in particular sRGB – throughout the SDK. You’ll now find that where sRGB framebuffers are supported, when it’s appropriate, we’ll be making use of them in OpenGL ES and Vulkan. Where it is not supported, you can still use sRGB, but the conversion will be made manually in shaders.
This new sRGB-correctedness applies to all the textures we use and the framebuffer. If you switch to the latest version of our emulation library PVRVFrame, this has also just been updated for sRGB correctness, so make sure you’re using this latest SDK version with it.
And of course, we’ve been making the usual improvements, including restructuring our CMake files to make them easier to work with. We’ve also made updates to support the latest versions of Vulkan, added support for Android Studio 3.2, and updated our version of VMA to 2.1.
Moving over to our tools, PVRTune has the focus for this second release of 2018. As well as lots of more general optimisations throughout, we want to draw your attention to some new features.
PVRPerfServer is now automatic
One of our biggest changes affects how you use PVRPerfServer. This is our command-line application that runs on your PowerVR device and retrieves the graphics core performance data for use by the PVRTune GUI. That same GUI will now let you deploy and automatically launch PVRPerfServer on Linux (via ssh) or rooted Android (via adb) devices. So essentially, you can now just “click and connect” instead of installing it manually.
Statistics Report window
Giving you yet another way of analysing graphics performance in your application, the new Statistics Report window can be accessed via the Monitor window. It has two modes:
- Frame mode – an entire frame’s worth of data consolidated into a manageable layout for inspection.
- Range mode – you can define a selected range on the timing graph, and see the counters inside that range.
The information from both modes can also be exported in JSON format.
We’ve had a few tweaks here. The GPU memory counters that were previously measured in words per second are now represented as bytes. Plus, we’ve added a new GPU memory counter – “GPU memory interface load” which shows the percentage of GPU memory bus utilisation.
PVRTune Complete – NDA only
PVRTune Complete is our enhanced version, which requires you to have an NDA which you can apply for through our support portal. For PowerVR developers, the ‘Complete’ version of PVRTune will be a huge benefit when optimising your graphics application. Explaining it all is beyond the scope of this blog post, but click the link to read more about the advantages of PVRTune Complete.
For this release, we’ve added support for Vulkan and OpenCL client streams and events, subject to DDK compatibility, and a new timeline showing Vulkan Debug markers.
We’ve also added support for two new host (kernel module) stream packets:
- Host Device Info: this shows the current device health status
- Host Info: this shows the per-PID driver memory usage statistics.
To support these new stream packets, we have also added some new host memory usage counters covering total host memory usage, graphics memory usage, and kernel memory usage.
As usual, our engineers have been hard at work making internal optimisations and bug fixes across our tools and SDK. We’ve also added support throughout our tools for the latest versions of other libraries and applications, including supporting 3ds Max 2019 in PVRGeoPOD.
You may have spotted a new tool – PVRCarbon. Built from the ground up to improve capture and analysis performance, PVRCarbon captures Vulkan calls where PVRTrace does not. It is in beta and still being developed, so while there are significant performance improvements over PVRTrace, it does not yet have all the features. For this release, the biggest additions are OpenGL ES support, and the ability to export multi-threaded Vulkan recordings as debuggable C++ code. Feedback is welcome through our ticketing system.
We’re also in the process of improving the quality of our documentation. Our SDK browser now looks (and reads) a lot better, and we’ve improved the presentation of our tools manuals. Some of our documents, including our very popular performance recommendations, have been reworked to improve readability. This is just the start – watch this space for major documentation developments coming soon!
Come join us!
We love what we do, and right now the Developer Technology team is expanding. We have a few vacancies both here in the UK (our modern campus in a lovely village just outside London) and in China. If you’re interested or know somebody then please take a look at the top positions.
And if you haven’t already – go download the PowerVR Tools and SDK 2018 Release 2 now!