- 10 December 2019
- Benjamin Anuworakarn
It’s that time again! The PowerVR SDK and Tools have been updated with brand-new features and improvements.
We’ll take a quick look at some of the most important and exciting new updates of this release in this post, but for those of you who can’t wait to get your hands on it, we thought we’d make it easy for you:
For everybody else, some of the highlights of this release are:
- Powerful new features for PVRTune Complete
- Further progress on PVRCarbon
- New OpenCL examples in the SDK
Also, stick around for updates on what our fantastic support team are up to as we close out 2019 and enter the brave new world of 2020.
So let’s get on with it…
PVRTune is our powerful profiling and analysis tool for PowerVR devices. It allows you to analyse your application at a low-level to identify potential performance limitations and bottlenecks. Tune comes with an intuitive GUI which presents CPU and GPU data from the hardware in a clear and easy-to-understand way. Even those who are new to Tune can take a quick look at the monitor window to gain an insight into what’s going on under-the-hood of an application.
PVRTune Complete now includes a new Resource Viewer widget which allows framebuffer capture from OpenGL ES 3.x applications. Tune can capture both default framebuffer and offscreen intermediate buffers from a running GLES3 application.
The Resource Viewer widget can be used to select the desired application by PID and context ID.
The Viewer also shows previews of captured framebuffers with some basic properties. Clicking on these previews will bring up the captured framebuffer in a separate window.
The Image Inspector
If you haven’t got PVRTune Complete yet, there’s no need to worry – we haven’t forgotten about you. PVRTune Developer is constantly updated with new features and fixes. This time we’ve included a lot of improvements related to the Vulkan® client stream, including:
- The visibility and detail of Vulkan client stream information in the GUI has been enhanced. This includes grouping the Vulkan tasks of a particular frame with their corresponding hardware tasks and displaying Vulkan client stream information associated with particular TA, 3D, compute, or TQ hardware tasks, like the renderpass and compute pipeline, in the properties window.
- Creation information for many Vulkan objects is now captured and displayed in PVRTune timeline. Some of these Vulkan objects include: VkPipeline, VkRenderpass, VkFramebuffer, VkImageView, and many more.
- When clicking on the task for many Vulkan commands, including vkBeginCommandBuffer, vkCmdBeginRenderPass, vkCmdDraw, and many more, the properties window will now contain detailed information on the current state of that command.
- PVRTune now also cross-compiles SPIR-V shaders into human-readable GLSL, making it much easier to know exactly what they are doing.
If you don’t know, PVRTune Developer is our slightly more basic version which has fewer features than Complete but is available to everyone. PowerVR SDK and Tools comes bundled with the Developer version of PVRTune, so when you download this latest release it’ll be there ready for you.
As always this is only a really brief summary of all of the updates for PVRTune. For a full list of all improvements and bug fixes take a look at our release notes.
PVRCarbon is our new API tracing tool (currently in beta) which enables the capture and analysis of Vulkan, OpenGL ES, and EGL API calls. At release it will supersede the currently available tool, PVRTrace, by not only capturing both OpenGL® ES and Vulkan API calls, but also providing much better performance and a raft of new features such as the C++ export functionality. C++ export is a really powerful feature which allows the API calls of an application recording to be outputted as a C++ source code, meaning you can debug an application without even having the original source code on hand!
So, what’s new with PVRCarbon?
- The remote recorder now supports Android 10
- The C++ exporter now supports Android makefiles and Wayland
- Additionally, the Player now has EGL support for Wayland
There’s still some work to do on Carbon and plenty of features we want to show you, so keep your eyes open for updates.
If you’re developing a Vulkan, OpenGL ES, or any other application for PowerVR devices, your first port of call should be the PowerVR SDK. The SDK is split into two main parts:
- Framework – a collection of modules designed to make development faster and easier. It includes wrapper code and helper functions to eliminate boilerplate code
- Examples – an extensive set of OpenGL ES and Vulkan examples ranging from rendering a simple triangle to implementing physically-based rendering
Our SDK examples are a great way to see the Framework in action and get some inspiration for your own applications. This update adds a few different example demos as well as plenty of improvements and fixes to make sure your app development experience is as smooth as possible.
Some of the new examples include:
- A new command-line OpenCL SDK example, OpenCL Matrix Multiplication. This is actually a collection of Single Precision General Matrix Multiplication (SGEMM) algorithms.
- A new Vulkan Compute example, GameOfLife, based on Conway’s Game of Life. It shows the use of TextureGather to sample multiple single-channel samples, among with using shared memory to optimise performance.
As usual the SDK has also had plenty of general updates and improvements, including:
- The version of Android build tools, Gradle, and Android Gradle plugin have been updated. Take a look at the release notes if you’re interested in specific version numbers.
- The OpenGL ES and Vulkan versions of our physically-based rendering example, ImageBasedLighting, have been updated so they are in line with each other. The OpenGL ES version now uses a VBO for the sphere instance parameters. Additionally, the shader code bindings and UBO structures were brought inline to each other.
- A new MoltenVK implementation has been added. MoltenVK maps Vulkan to Metal, allowing Vulkan applications to run on macOS and iOS.
- Added touch screen support for non-window system (NullWS) Linux platforms.
- Finally, we’ve greatly enhanced the modularisation of the SDK by improving the use of CMake. Writing examples using the SDK should be even easier and cleaner now, as should adding and removing examples. This is done by using a target-centric CMake approach to asset and resource management. This has resulted in a ~30-50% reduction in the size of the CMakeLists.txt of each example.
Our SDK is also available on GitHub, so if you would like to contribute or just want to have a browse before committing to a download, jump over there and take a look.
The PowerVR Support team is always on hand to help you get the best out of your applications. It’s easy to get in contact with them through our ticketing system or on our forum, so if you’re developing for PowerVR or using the PowerVR Tools and SDK, feel free to get in touch.