PowerVR Tools and SDK v3.3 Release 1


  • The PowerVR Graphics SDK v3.3 includes support for the recently ratified OpenGL ES 3.1 in PVRVFrame, our desktop emulation libraries.
  • PVRTrace now includes full recording capabilities on Android 4.4 (KiKat) and the handling of Android Native Buffers has been improved. Developers also now benefit from enhanced search and remote recording capabilities and complete support for OpenGL ES 3.0 API.
  • PVRTune implements a new ‘monitor’ window which provides a simplified and high-level overview of CPU, memory and graphics loading, allowing developers to quickly isolate application bottlenecks. It also has improved highlight and selection capabilities and implements new per-PID stats.
  • In addition, the SDK’s documentation has been comprehensively reviewed and updated.


Full support for the recently ratified OpenGL ES 3.1 API has been added to PVRVFrame. Please note that this support is only intended for early development, as an OpenGL ES 3.1 conformance test has not yet been released. To use it, please download the header files from the Khronos website. We will shortly release a full SDK highlighting the most important features of this new API.


  • ToneMapping: Now it uses point sampling for its float texture.
  • OcclusionQueries: Fixed the name of the texture variable in the effect.pfxs.
  • ShadowMapping: Fixed a typo in the OGLES3 effect.pfx file which resulted in the texture coordinates being uninitialised.
  • EdgeDetection: Moved initialisation of timer to InitView so the first value is valid. This fixes the problem using -fft command-line option.
  • MagicLantern: Moved initialisation of timer to InitView so the first value is valid. This fixes the problem using -fft command-line option.
  • Water: Updated with new assets including a new skybox, ship and terrain.
  • Shaders: Improved command-line parsing so it doesn’t attempt to match any option that begins with -s or -m.
  • DeferredShading: Stencil buffer was not requested in the EGLConfig for ES3, but was assumed and used. Now updated to always request a stencil buffer.
  • TextureStreaming: New example for Android and iOS.
  • Added OGLES3 iOS project files for all examples capable of running on iOS.


  • PVRTString: Added positional variants of the format commands.
  • PVRTTexture: Added PVRTC sRGB texture support.
  • PVRTPFXParser: Fixed crash while processing texture wrap parameters.
  • PVRTArray: Changed the Sort() method to use merge sort instead of bubble sort.
  • PVRTError: Fixed warning in PVRTError.h as the format parameter to printf was not a string literal.
  • PVRTResourceFile: Added a null pointer check in GetFile.
  • Added a new CameraInterface library for Android and iOS which allows quick initialisation and usage of hardware cameras to stream textures to OpenGLES.


  • Improved the Android OS lifecycle.
  • Modified PVRShellOutputDebug on Windows to dynamically allocate its buffer instead of using a fixed size of 1024.

PVRShaman v2.2.0

  • Fixed bug in which the Save POD icon would be greyed out.
  • Added the displaying of POD textures such as bump and specular level to the Material Properties dialog.
  • Fixed bug when using external shader files in a PFX material. The material would fail to pass validation.

PVRTexTool v4.1.2


  • Fixed issue with BC1 Compression producing holes in fully opaque textures when an entire block was the same colour.
  • Fixed memory leak in ETC2 Codec.
  • Integrated latest version of PVRTC codec, which should produce generally better quality images, and manages threads a bit more smartly.
  • Fixed issue with certain ETC textures not compressing correctly under Windows.


  • Font texture generation now outputs white textures rather than black.
  • Fixed channel swapping so that when multiple file sources are selected, it correctly copies the channels.
  • Fixed memory leak when zooming in/out of Diff window.
  • Added RGBA/RGB distinction for PVRTCv1.
  • Added PVRTC sRGB support.
  • “Single” display mode now zooms to/from the mouse position, rather than the corner of the screen.

PVRVFrame v9.8

  • Added OpenGL ES 3.1 support.
  • Fixed vertex_array_object extension not being emulated on OSX.
  • Fixed GLSL translator where reserved identifiers were erroneously added to the GLSL source.
  • Fixed EGL_SUCCESS not being reported by some EGL functions in cases where it should.
  • EGL_BAD_ALLOC now reported by eglCreateWindowSurface on Windows platforms if the application attempts to re-use an HWND for which the pixel format has already been set.
  • Fixed EGL context ids where it would not always be unique.
  • Fixed GL_LUMINANCE texture data clamping to [0,1].
  • Fixed glBindRenderbuffer where it would not work with names not generated by glGenRenderbuffer.
  • Fixed a crash in glDeleteSamplers.

PVRTune v14.73

  • PVRScope library only: Reduced noise in per-core activity counters.
  • PVRScopeStats.h, PVRScopeReadCountersThenSetGroup(): Updated comment to consider standalone performance-tracking applications such as PVRMonitor or a logging app.
  • PVRPerfServer can now send CPU usage info for ‘interesting’ PIDs that it sees: apps that connect via PVRScope, PIDs shown in HWPerf timing data, and PIDs specified on the command line. To enable it, specify “-pid” on the command line. To additionally watch specific PIDs, specify “-pid=A,B” etc.
  • Added per-core task time counters.
  • Added per-PID stats: TA Busy %, 3D Busy %, 2D Busy %, Compute Busy %, 3D SPM %.
  • Dynamic counters created per PID or CID now place the PID/CID number first; gives easier sorting.
  • CPU usage can now be sent per core and per PID.
  • Memory usage can now be sent for the system and per PID. Added counters: Memory use, Memory total, Memory load, PID %u: Memory use.
  • Added new docking window: Monitor. This gives a simplified ‘at a glance’ view of the CPU, memory and graphics loading.
  • Fixed: When connecting, disconnecting and reconnecting, pause was enabled by default.
  • Search window:
    • The “select” tick box has been removed.
    • Mouse-over search results now highlights the relevant time range (if any) in the graph views.
    • Single-click on a result now pans the view, rather than panning + zooming.
    • Double-click on a result now pans and zooms the view.
    • Holding the Ctrl key while doing either of the above also selects the time range. (Similar to how Ctrl+click in a graph view is used to alter the selected time range).
    • Hold Ctrl+Shift to extend the existing selection.
    • Added View\Find – Ctrl+F now works to bring up Search (shows, raises and sets focus to the input box).
  • Graph Views:
    • Now display the highlighted time range.
    • Ensure selection/highlight range draws are always at least 1 pixel wide.
    • If there is a task under the mouse, highlight the entire time range.
    • Ctrl must be held to modify the selection – don’t suddenly allow Shift by itself to extend the selection.
    • Ctrl+clicking on a task now sets the selection to be the entire task time-range – giving ‘snap’ behaviour. Additionally, hold Shift to instead extend the existing selection.
  • Counter Table;
    • Added a new counter table column: Highlight.
    • Counter Table default columns are now: 1s, Selected, View.
  • Counters:
    • Enable SPM counter in Developer build.
    • Renamed some US counters to USC.
    • Increase the maximum graph y-axis value that may be entered.

PVRShaderEditor v2.3

  • Performing a search when the ASM Output widget has focus now searches the ASM widget instead of the main editor.
  • Deleting or moving a file which is currently open in PVRShaderEditor will now correctly prompt whether to discard the file or keep the file in the editor.
  • Fixed bug in which re-opening the editor when closed with a blank file and the option ‘Save Session’ selected would display an IOError.
  • Fixed bug which meant that PFX line cycle counts and errors were only being displayed for the entire GLSL block, rather than per-line, if the GLSL code is embedded.

PVRGeoPOD v2.16

  • Fixed the exporting of .h/.cpp files from Maya and Max.

PVRTrace v3.3


  • Fixed the saving of the wireframe colour to the preferences.
  • The call summary now allows the addition of highlights to the calls in the call viewer, as well as to find all occurrences of that call using the search feature.
  • The call summary now supports multiple selection of calls using Ctrl+left mouse click and Shift+left mouse click.
  • It is now possible to search calls within a specific frame range and by thread.
  • Status bar messages no longer timeout.
  • The minimum number of characters that can now be searched for is 1.
  • Search results can now be selected with Enter when navigating with arrow keys.
  • Tidied up/simplified the Remote Controller interface.
  • The default for the number of search results has been raised from 100 to 500
  • Added the EGL_CONTEXT_PRIORITY enums as recognised values.
  • Tweaked the Find functionality.
  • Render targets are now listed in chronological order.
  • The Android version of the PVRTrace libraries now export a subset of the extensions that the NDK’s version of libGLESv1_CM and libGLESv2 export.
  • Added an extra counter to the profiling that shows the total number of API calls in a frame.
  • Modified the call summary export so the rows and columns are switched.

PVRTrace Recorder

  • Added support for recording on Android 4.4, KitKat.
  • Added support for recording eglImages created from EGL_NATIVE_BUFFER_ANDROID client buffers.
  • Supports JSON-formatted configuration files.
  • It is no longer needed to specify the Android drivers to use when recording in the config file as the recording libraries will locate them as long as they are located in /system/lib/egl or /vendior/lib/egl.
  • Fixed a failure to open the recording file on Android if %pname is used and the process name has slashes in.
  • Renamed some command-line options: –windowsToUse becomes –window, –delayRenderFrame becomes –delay and –iterations becomes –repeat.
  • Fixed multidraw support.
  • Added missing ES3.0 functionality.


  • Extensions: Added GL_EXT_shader_framebuffer_fetch and added EXT_separate_shader_objects.
  • Fixed an error in the User Guide where it incorrectly stated the FSAA command for the PVRShell as “-FSAAMode=N” instead of the new “-aasamples=N”.
  • Fixed an error in the network recording instructions that specified to use ‘Network Panel’ to now correctly reference the ‘Remote Controller’.
  • Fixed an error in the instructions for Installation on Linux where the Scripts folder was not correctly capitalised.
  • Fixed an error in the instructions for Installation on Linux where a space was missing before a closing square bracket in the .bashrc entry.
  • Updated PVRTexTool User Manual.
  • Enhanced PVRScope User Manual.
  • Enhanced PVRTrace User Manual and Quick Start Guide.
  • Enhanced PVRTune User Manual and Quick Start Guide.
  • Enhanced PVRHub User Manual.