We all know that 2020 has been quite a challenging year, but we hope you’re doing well. Over the last few months, here in DevTech, we’ve been working hard to get this new release out for you and the time has now come for our second release of the PowerVR SDK and Tools of 2020.
For anyone who just wants to grab the new version of our tools straight away – click here:
So, what’s new with this latest release? Let’s take a quick look at a few of the major changes.
PVRTexTool is our texture encoding and pre-processing tool which is designed to make it easy to optimise your application textures.
There have been a number of significant updates to PVRTexTool in this release, including some powerful new features and a visual overhaul.
This is the brand new PVRTexTool GUI. As you can see in this image, we’ve added a new dark theme and improved the overall layout and responsiveness of the GUI. The new layout provides as much space as possible for your textures allowing you to examine them in more detail.
Additionally, we’ve updated and redesigned the PVRTexLib libraries we offer. PVRTexLib allows you to use all of the texture processing features of PVRTexTool within your application, including encoding, resizing, and mipmap generation.
We now have three different ways of accessing the PVRTexLib functionality:
A brand new, pure C interface
A re-designed C++ interface which wraps the C interface. This makes it more convenient to integrate PVRTexLib into C++ applications.
A Python binding library, PVRTexLibPy. This enables users to access all PVRTexLib functionality from within a Python script.
All of these interfaces are packaged with PVRTexTool in the Library folder. The C interface can be included in a project using the PVRTexlib.h header file while the C++ wrapper is found in PVRTexLib.hpp.
The PVRTexLibPy interface can be accessed from a Python script using a simple ‘import’ statement when the library file is in the same location as the script.
It is important to note that the new API is not compatible with older versions of the PVRTexLib library.
Equirectangular to Cubemap
We’ve added support for creating a cubemap texture from an equirectangular image. You can do this from the GUI or using a new option in the PVRTexTool CLI, equi2cube. An equirectangular image is a projection of a sphere onto a rectangular image. They are often used for environment maps. The equirectangular image must have an aspect ratio of 2:1 in order to be accepted.
Inf and NaN Highlighting
PVRTexTool now supports visualisation of NaN and Inf pixel values for floating-point formats. These values are highlighted with a particular colour in order to make them more obvious. You can change the highlight colour by going to “View” -> “Change Nan/Inf Colour”.
There also a few additional more minor changes to PVRTexTool:
Our PVRTexTool plugins now support Autodesk 3ds Max 2019/20 and Autodesk Maya 2018. Plugins for older versions of these tools are also still supplied with PVRTexTool.
Added support for ASTC HDR compressed formats, as well as BC4 and BC5 formats
PVRTexTool now supports a greater range of PVRTC modes when compressing texture. The supported PVRTC quality modes include:
Low (2 passes), Normal (4/5 passes), High (6 passes), Very High (8 passes), Thorough (16 passes) and Best (32 passes).
PVRTexLib has been updated to allow loading and saving to KTX2 files
We’ve also added support for BASISU formats including BASISU_ETC1S and BASISU_UASTC
Finally, PVRTexTool now supports RGBM and RGBD (shared multiplier and shared divisor) formats
PVRCarbon is our API tracing and debugging tool for OpenGL® ES and Vulkan®. It allows a deep level of insight into exactly how an application and graphics API interact. It also has a simple application recording interface, allowing you to record API calls on remote devices with just a few clicks. PVRCarbon recordings store the API calls of the application which can be played back in the GUI, allowing the exact reproduction of the application output. Recordings can be played back on any device which can run PVRCarbon for true cross-platform analysis.
We’ve added various new features and bug fixes to this version of PVRCarbon, so it’s easier than ever to debug and refine your application.
One of the major new features of this release is frame analysis.
You can now examine a single frame of your application in detail, including stepping through individual draw calls.
You can also analyse the entire API render state and view objects such as shaders, textures, and framebuffers.
The frame analysis GUI is available for both Vulkan and OpenGL ES applications. You can analyse a frame in your recording by scrubbing to the desired frame and hitting the ‘Analyse the current frame’ button in the Analysis window.
It is important to note that you can only analyse recordings which have been captured on PVRCarbon 20.2 and later. Analysis is disabled on any recordings captured on previous versions.
Analysed frames will appear in a list in this window. Clicking a frame will automatically open the frame analysis tool. Analysis data is stored in pvrcbna files which are completely independent of their original recordings. These files can also be generated using a new command-line tool which is included with PVRCarbon.
PVRCarbon is now packaged with an Android OpenGL ES recording layer. This can be used on Android 10 onwards instead of the driver replacement libraries that are installed by the PVRCarbonInstaller.sh script. This is the recommended and safest way to perform standalone/system recordings on Android 10+ and relegates PVRCarbonInstaller.sh to use on legacy Android versions only.
In addition to this, the remote recorder now utilises Android 10+ functionality to set up PVRCarbon for recording, if available.
The remote recorder is the simplest and easiest way to get a recording from a remote device. In most cases, you won’t need to bother with installing recording layers manually.
OpenGL SC Support
We’ve added an OpenGL SC 2.0 recording library to PVRCarbon. OpenGL SC is OpenGL Safety Critical. It’s designed to help with the development of applications that are safety-critical in markets such as automotive.
OpenGL SC recordings can be played back on both OpenGL ES 3.1+ and OpenGL SC 2.0 drivers.
Finally, we’ve added more options to export and trim your OpenGL ES recordings in PVRCarbon. When you save a recording you have the option to select a frame range. This allows you to trim any unwanted frames from either end of the recording. This functionality is also available in the CLI tool, PVRCarbonTrim, which is packaged with PVRCarbon. You can also do the same when exporting recordings as debuggable C++ projects.
PVRTune is our world-leading hardware profiling and application analysis tool. It collates hardware data sources into hundreds of toggleable counters which are displayed in the GUI. These counters give an idea of exactly how an application is stressing different parts of the GPU and can make it much easier to see where performance bottlenecks are coming from.
PVRTune uses a remote recorder to automatically deploy to a remote device. This means you can gather performance data easily over a network or USB without having to install anything manually on your device.
So, what’s new with PVRTune?
SSH Log Widget
We’ve added a new SSH Log widget. This widget receives the command line output from PVRPerfServer and the application being recorded. PVRPerfServer is a utility that is automatically deployed when using the PVRTune remote recorder. It gathers the performance data and sends it across to PVRTune. The SSH Log can be a really useful debugging tool when trying to identify issues with PVRTune recording or the application itself.
PVRTune Complete – Counter and Counter Group Editing Updates
PVRTune Complete is the fully-featured version of PVRTune. This version provides access to more detailed GPU information, allowing you to perform in-depth performance analysis. PVRTune Complete is only available under NDA so please contact the Developer Technology team ([email protected]) if you would like to request a copy.
We’ve spent a lot of time this release working to improve our counter and counter group editing interfaces. We’ve added options to export or import counter groups as CSV files. This will allow you to store and edit counter groups outside of PVRTune, making it easier for many people in a team to have the exact same counters. You can now also edit CPU counters within counter groups
Additionally, we’ve improved the usability of the Create New Counter dialog by remodelling the GUI. The available counters are now shown in a tree view which should make it much easier to find exactly what you’re looking for, particularly while also using the filter box.
These changes will make it much easier for you to create your own custom counters and counter groups.
The PowerVR SDK consists of our graphics development framework and a set of application examples. The Framework is a collection of modules for common 3D graphics tasks and cross-platform deployment. This means that you can focus purely on writing the graphics application itself instead of rewriting boilerplate code. The SDK examples show you how to use various techniques and tools together to make really high-performance graphics applications. 80+ examples are currently provided which are implemented across multiple APIs such as OpenGL ES, Vulkan, OpenCL and so on.
In this release we’ve created a new matrix multiplication example using Vulkan. This example is a headless Vulkan application which means it is launched from the command line without a window or surface. The example runs a SGEMM (Single Precision General Matrix Multiplication) benchmark using a couple of different methods.
These different methods explore the performance impact of:
different buffer memory layouts
utilising the local memory in different ways
different amounts of work per thread and vector processing
As with most of our SDK examples, this example makes extensive use of the SDK Framework.
PowerVR Tools and SDK 2020 Release 2 is available to download now.