The PowerVR Developer Technology team is delighted to announce the latest version of our PowerVR Tools and SDK – 2018 Release 1. Following on from our major SDK Framework overhaul in our release late last year, this is yet another significant iteration.
For starters, we have made further improvements to our SDK Framework, including new examples and documentation. We have also made other enhancements and bug fixes throughout our tools to make your development life easier. You can read all about this further down.
PVRTune Complete upgrade
However, the big news for this release is the major upgrade of our PowerVR performance profiler, PVRTune Complete. We’re exposing more data than has been previously possible on mobile/embedded hardware, giving a major boost to your optimisation sessions. PVRTune Complete was announced back in March at GDC 2018 and is now available for you to download under NDA upon request.
We’re really proud of our major update to PVRTune Complete. Both versions (including PVRTune Developer) of our PowerVR GPU performance analysis tool have always provided developers with real-time visualisation of various performance metrics being emitted by the GPU. You can experience fast and efficient profiling sessions fully tailored to PowerVR architectures.
With this new release of PVRTune Complete, you are able to get even lower level information than ever before from the underlying hardware and driver. This is achieved through “API Awareness”.
How does API Awareness work?
PVRTune Complete is able to retrieve and present events that have been generated by the API client drivers such as OpenGL® ES and EGL™. This lets you view application-level API calls (e.g. glDraw*) in the PVRTune GUI and trace a piece of work from the application level through the PowerVR driver and onto the hardware for execution.
In this way, you can see how work that was submitted at the application level directly affects the behaviour and performance of both the driver and hardware. PVRTune Complete can also provide other information from the client driver such as surface format, size and shader details. It currently supports OpenGL ES / EGL APIs, with Vulkan® support to follow.
This is the first time a mobile GPU vendor is exposing so much low-level driver and hardware information.
And to make all that new low-level information even easier to understand, we’ve given the UI a shiny makeover too. Navigation is now more intuitive than ever, and the clarity of data presentation has been much improved.
So what’s happening with PVRTune Developer?
PVRTune Developer is still being developed in tandem with PVRTune Complete and is available for download as usual with the rest of the tools and SDK. PVRTune Developer has many of the same features as PVRTune Complete, including the UI upgrade, but with reduced functionality and does not include features such as API Awareness mentioned above. More information about PVRTune Developer can be found here.
PVRTune Complete is available under NDA for Linux, Windows, and macOS. Feel free to contact us directly to obtain the latest version.
SDK Framework and examples
What’s new with the SDK?
The Framework was the major focus of our last release. In going from 4.X to 5.0, we separated out OpenGL ES and Vulkan and made the latter much easier to get to grips with. Now with version 5.1, the work continues.
This time, it is all about streamlining!
On a superficial level, the first thing you may notice is that we’ve restructured the SDK hierarchy so that it is now shallower and easier to follow. However, once you look further, you’ll see there’s a lot more going on too.
- We have completely removed our old build system with all the project files and replaced it with CMake. We still directly support Windows, Android, Linux, iOS, macOS, QNX, but adding more platforms is now very easy.
- The Vulkan Memory Allocator (VMA) is now supported and integrated in the Framework, and our examples make extensive use of it.
- The Framework now uses exceptions rather than return codes to signify errors, giving the developer absolute control on error handling. Exceptions substantially reduce the complexity of the examples and also removes the need to check and propagate return codes.
- We added support for VK_EXT_DEBUG_MARKER and VK_EXT_DEBUG_REPORT. Objects can now easily be named in PVRVk, so that they show up with their user-selected names in debugging applications.
- Our sprite rendering library, PVRUIRenderer, has been upgraded to make use of Indirect Drawing. This is very important for Vulkan, as it enables the developer to modify text elements without the need to re-record command buffers.
Examples and Documentation
We also want to draw your attention to the rewrite of our beginner examples HelloAPI and IntroducingPVRShell for Vulkan. If you’re starting out with Vulkan, these are a fantastic place to start as they offer you a complete walkthrough of the Vulkan API with clear and detailed step by step explanations. Not sure if Vulkan is the right move? We’ve also written a new document about the whys and the hows of migrating from OpenGL ES to Vulkan.
We also have a new example – 3D Navigation for Vulkan and OpenGL ES. This shows techniques helpful for navigation such as frustrum culling, geometry techniques for processing maps, and using per-tile command buffers (Vulkan).
If you’re not already using our Framework for your development work, particularly with Vulkan, we strongly suggest you take a look, as it has so many benefits, not least the reduction in tedious boilerplate code and our useful helpers. You can find it on our GitHub page or install it from the link at the bottom of this post.
Love our API-call-capturing tool PVRTrace, but wish it supported Vulkan? You’re in luck! We have a new addition to our tools, currently in beta, called PVRCarbon. Much has changed in the graphics world since PVRTrace was first written, so we have taken the opportunity to write PVRCarbon from scratch. With optimisations for speed and memory amongst others, you will find it a much better experience.
One of the biggest features that developers have been asking for is the ability to export to C++, and PVRCarbon now gives you that. Currently only available for single-threaded applications, the whole PVRCarbon capture can now be exported into C++. Out of the box, PVRCarbon supports Windows and Linux (X11, XCB window systems) but over time we’ll be adding support for other key platforms and window systems. In the meantime you can hand-modify the C++ if required.
PVRCarbon does not yet have the full functionality of PVRTrace, but we’re actively working on it and you can expect to see more features in later releases. Not just the best parts of PVRTrace, but also new features designed and developed specifically for PVRCarbon as well.
As mentioned, PVRCarbon is currently in beta, so feedback and bug reports are very welcome via our Support Portal.
Bits and pieces
We’ve mentioned the big updates, but there are some little updates many of you may find handy as well:
- PVRGeoPOD now has added support for Physically Based Rendering (PBR) materials for 3DSMax and Blender.
- PVRTrace now plays back captured Android native buffers on Linux using DRM dumb buffers. It also now works with Android P.
And, as always, the usual optimising and bug fixing behind the scenes. You can see more in our release notes.
See for yourself. You can download and install PowerVR Tools and SDK 2018 Release 1 from our website.
Don’t forget, you can always raise issues or ask questions through our PVRInsider support forums which have recently been upgraded to a better system. Alternatively, you can contact us privately through our ticketing system, particularly if you are interested in obtaining PVRTune Complete under NDA.
We’re very proud of the free support we give, and we have made a lot of developers very happy!