PowerVR Tools and SDK v3.5


In this release, support has been added to PVRVFrame for Android Extension Pack (AEP) as well as new hardware profiles for Dell Venue 8 3840, Lenovo K900, Google Nexus Player, Onda V972, etc. In PVRTune, a new set of counters has been defined for Series6 family to make both high-level and low-level analysis easier, for example, the counters are now categorized under Overview, GPU Advanced, Renderer, Shader, etc. PVRTrace features optimized memory usage as well as an enhanced user interface with a new draw call inspector and better render state machine analysis and browsing. In PVRTexTool, we have added support for ASTC. PVRShaderEditor now supports OpenCL profiling and disassembly. PVRHub supports 64bit platforms and also has an updated configuration file format and relaxed requirements for superuser. The SDK now provides out of the box support for Google’s Android Studio IDE. 


  • Android: Examples are ported to Android Development Studio and Gradle instead of Eclipse and Ant.
  • Android: TextureStreaming – added detection of relevant extensions to allow OpenGL ES 3.0 support and fallback to using OpenGL ES 2.0 shaders if the extensions are not present.
  • FilmTV: Added support for GL_EXT_multisampled_render_to_texture and GL_IMG_multisampled_render_to_texture.
  • PVRScopeExample: updated to also show the PVRScope ‘standard’ counters.
  • OGLES 1 ShadowTechniques: Fixed crash on minimise/restore from android (BRN53618).
  • Glass demo: Used different textures for the two balloons to make it easier to discern between reflection/refraction.


  • Fixed wrong OpenGL ES token use (GL_BGRA was defined and used instead of GL_BGRA_EXT).

PVRShaman v2.3

  • Fixed a textual error in the PFX Semantics window.
  • Fixed a bug where a malformed POD file could be generated by adding an empty material.
  • Fixed a bug where the ‘Cancel’ button wouldn’t work when attempting to close a scene with unsaved changes to a shader.
  • Fixed a bug where the user manual wouldn’t be located if the working directory changed.
  • Updated Scene Explorer and POD Explorer to better reflect the underlying POD structure.
  • Added blender-style camera controls:
    • Rotate: Middle-click + drag.
    • Zoom: Mouse-wheel.
    • Pan: Shift + middle-click + drag.

PVRTexTool v4.1.5

  • Added support for ASTC textures.
  • BRN53734, BRN52880, BRN53241: Fixed loading of KTX textures with mipmaps.


  • Encoded textures now correctly report that they are modified (unsaved) upon creation with an asterisk, and ask if you want to close them without saving.
  • Freshly generated textures (e.g. Composed Cubemaps, New Texture Arrays, etc.) now correctly prompt the user to save.

PVRVFrame v10.1

  • Fixed a bug in glGetVertexAttribPointerv where INVALID_OPERATION would be reported when there is no bound VAO.
  • Fixed a bug in glGetVertexAttribPointerv where null may be returned even when the pointer is set.
  • Fixed depth texture values in ES 3.0 being stored only in the red channel when passed to the fragment shader.
  • Fixed a bug where some texture formats specified using glTexStorage2D would be erroneously translated.
  • Fixed generic VA zero defaulting to 0,0,0,0 instead of 0,0,0,1.
  • Fixed glGetVertexAttrib(GL_CURRENT_VERTEX_ATTRIB) not returning the correct value when index == 0 and VAA 0 is disabled.
  • Fixed a bug in eglChooseConfig where passing nullptr as the configs parameter would return the total configs instead of the number of matching configs.
  • Fixed a bug in glGetActiveUniform where GL_INVALID_VALUE would be reported in cases where it shouldn’t be.
  • Fixed uniforms named ‘texture’ not being correctly queryable when using GLSL ES 1.0 shaders.
  • Fixed an issue with glDraw* calls where the glVertexAttribPointers use client side buffers and the first parameter is not 0.
  • Fixed EGL_BAD_ATTRIBUTE being reported by eglSurfaceAttrib(EGL_SWAP_BEHAVIOR).
  • Fixed GL_INVALID_VALUE being reported by glTexStorage2D(GL_ETC1_RGB8_OES) on AMD systems.
  • Fixed a texture swizzling bug where using GL_ONE would have the effect of GL_ZERO.
  • Fixed a case where SRGB gamma correction might not be disabled for the main framebuffer.
  • Fixed EXT_pvrtc_sRGB compressed textures not being decompressed correctly.
  • Fixed packHalf2x16 not compiling with 3.0 contexts.
  • Added support for EXT_draw_buffers_indexed.
  • Added support for EXT_geometry_shader.
  • Added support for EXT_primitive_bounding_box.
  • Added support for EXT_read_format_bgra.
  • Added support for EXT_separate_shader_objects.
  • Added support for EXT_shadow_samplers.
  • Added support for EXT_texture_border_clamp.
  • Added support for EXT_texture_buffer.
  • Added support for EXT_tesselation_shader.
  • Added support for GL_EXT_gpu_shader5.
  • Added support for GL_EXT_shader_io_blocks.
  • Added support for GL_EXT_texture_cube_map_array.
  • Added a workaround for an obscure Windows/NVIDIA driver bug where in some situations the bound array buffer would get messed up after binding a VAO.
  • Added ‘Context Info’ tab in PVRVFrame GUI which shows basic information about the emulated and underlying OpenGL ES and OpenGL contexts.
  • Added hardware profiles for:
    • Dell Venue 8 3840
    • Lenovo K900
    • Google Nexus Player
    • Onda V972
    • redhookbay
    • Samsung Galaxy Note 3 SM-N9005.

PVRTune v14.111.1


  • Fixed BRN51238. PVRTuneGUI: Connection timeout advise – “Have you remembered to use ‘adb forward tcp:6520 tcp:6520’ to connect to an Android device over USB?” Text is permanently visible and goes bold if the connection does not succeed in 250ms.
  • Preferences dialog box:
    • Added option ‘Draw Marks across all timelines’: fixes BRN48806.
    • Added option ‘Hide empty timelines’: fixes BRN48807.
  • PVRTune window now defaults to mostly-full-screen.
  • Graph view: choose a better default splitter position, so that the table is not larger than the graphs.
  • Changed default docking window layout.
  • Renamed docking window ‘Renderstate Override’ to ‘Render State Override’.
  • Render State Override: Moved tick boxes to the left.
  • Rogue now has two counter groups: Graphics and Compute.
  • PVRTune search: counters now show up in search results as appropriate based on executable (PID name) or PVRScope connection name.
  • PVRTune warnings now immediately pop up in a dialog box, as well as presenting the exclamation mark button in the status bar.
  • PVRTune monitor:
    • Moved CPU and Memory stats to the bottom. This prevents the per-core CPU stats from taking so much space on low resolutions.
    • Now allows the user to specify the time range via a context menu, or the combo box. The combo box has been moved to the bottom, and inside the scroll area; this means it does not forcibly use screen space at low resolutions and can be scrolled away.
  • Counter Table:
    • Counter table now grouped as a tree view with filter options removed.
    • Fixed a rare crash when adding/removing columns.
    • Groups and counter tool tips now have more info about any PID/CIDs mentioned.
    • Enabled dynamic sorting. This keeps the default groups in a sensible order at startup, as apps start & quit.
    • Context menu now says ‘Counter Properties’ rather than just ‘Properties’. Also updated keyboard shortcuts via &’s.
    • The Master table can no longer have the ‘view’ column disabled, this reduces counter pop.
    • Replaced ‘filtering’ with a tree view:
      • Removed counter table ‘filter’ button.
      • Default tree view grouping is by ‘source’.
      • Right-click context menu allows the grouping to be changed to ‘filter’, equivalent to the old filtering option.
      • Removed ‘number’ column.


  • PVRPerfServer for Linux/Android: now outputs a warning if ‘/sys/kernel/debugs/pvr/gpu_tracing_on’ is enabled.
  • Linux: fixed the case where PVRPerfServer is ran as ‘root’ but then apps are run as a user but they can’t connect via PVRScope.
  • Command-line option ‘–pid’ is now enabled by default. Added ‘–nopid’ to allow it to be disabled.
  • Now sends info about all known PIDs when PVRTune connects; fixes missing data about already-running PIDs.

PVRTune Complete only

  • Added HW counter support for PowerVR Series7.
  • Added support for selecting ‘custom counters’ (including e.g. SLC) on Rogue DDK branches that support it.
  • Added (non selectable) data and counters for SLC read/write counters for SGX branches 1.7 and newer.
  • Added all Standard Outputs for any abstract counters that are supported. Just in case they weren’t explicitly created.
  • Renamed ‘Anti-aliasing: samples per pixel’ to ‘TSP samples per pixel’.
  • Counter Table: Debug counters are now hidden by default. They can be enabled via Edit\Preferences. This setting is not registry saved.
  • Added counters:
    • Anti-aliasing: samples per pixel
    • Pixel quad efficiency
    • Shader clock cycles (pixel) per sample
    • Iterators per sample.
  • Bug fixes in PVRTune’s Custom counter group GUI.

PVRShaderEditor v2.6

  • Added support for OpenCL compilers for PowerVR Series6 family.
  • Ability to view disassembly information for OpenCL PowerVR Series6 family.
  • Added section in the manual about GLSL Compiler tool.

PVRGeoPOD v2.16.4

  • Standalone: Fixed BRN53593. Texture names should now be converted to POD for Collada files exported from Maya’s FBX Exporter. Between SDK 3.3 and 3.4 a fix for an unrelated issue broke a workaround for their off-specification texture exporting.
  • 3ds Max: Added support for igame version 17.3.374.0.
  • GUI: Fixed the output of logging information.
  • GUI: Fixed a crash that could occur when doing multiple exports.

PVRTrace v3.5

  • Changed the default file extension to .pvrtrace.
  • Changed the default filename for the exported calls to mention the trace filename as well as the current frame or if it contains all the frames.
  • Fixed the sharing of object names when multiple shared contexts are used.
  • Fixed loading of GLsync variables from trace files recorded with version 3.3 and earlier.
  • Added support for missing functions from extension GL_EXT_separate_shader_objects.
  • New configuration file structure, supporting multiple configurations with wildcard process name matching.


  • Added GL_TEXTURE_CROP_RECT_OES as a recognised enum.
  • Added EXT_Separate_Shader_Object functions to the GUI.
  • Added option to copy a call to the clipboard.
  • Added option to copy the image analysis/texture/fbo attachment contents to the clipboard.
  • Added static analysis entry for EGL sync use.
  • Added a static analysis report for redundant eglMakeCurrent calls.
  • Fixed the ‘clear disabled calls’ right-click option.
  • Fixed reporting of redundant glViewport and glScissor calls.
  • Fixed tab ordering on Preferences dialog. This fixes BRN51760.
  • Overhauled the state, modifications and draw call widgets and removed the texture and shader tabs by merging their functions into a generic object data viewer.
  • You can now view the attachments of framebuffer objects.
  • Rewrote the code that handles jumping back and forth between frames. A result of this change is that frame buffer objects should now display correctly when jumping.
  • Right-click no longer selects a call.
  • Re-arranged the GUI so more things are in dockable widgets.
  • Thread colours are now shown in the find results.
  • Find results will now mention if the search was ‘Incomplete’ due to it hitting the search result maximum limit. This fixes bug BRN52734.
  • Alphatest/discard is no longer represented by red in the PowerVR Depth Complexity to avoid confusion.
  • Static Analysis now correctly handles multi-threaded trace files.
  • The Go To dialog now allows you to jump to a certain call as well as to a frame.
  • The Static Analysis now mentions if it doesn’t find any warnings or errors.
  • Statistics Graph:
    • Added line column to show statistic values for the frame you’re hovering over.
    • Moved the context menu options into file and view menus.
    • Added export currently graphed data option.
    • Added headings to the exported CSV data.
    • Fixed a crash if you load a trace file while the dialog is open.
    • Fixed an ever-growing dialog if you open multiple trace files in a single sitting.
    • Exporting CSV data will now report success or error instead of being silent.
    • The thread tab will now be enabled if you first open a single threaded trace followed by a multi-threaded trace.
    • The statistics graph dialog can now be opened from the statistics dock widget.
    • Ctrl + C will now copy the graph area to the clipboard.
    • Fixed off by 1 frame error.
    • Fixed zooming in and out shortcuts so Ctrl+ is in and Ctrl- is out.


  • Scaling of the default framebuffer now takes into account scissors.
  • Fixed X11 and Window scaling. In the case of the latter we also now take the window decoration into account when scaling.
  • We now playback EGL_KHR_wait_sync and EGL_KHR_fence_sync instead of ignoring their calls.
  • The window list now displays the width and height on start up.
  • Added –config command-line option that allows you to override config attributes. It also supports –config= to override a specific config. However, the trace file will need to have been recorded with 3.5 or newer for this to work.
  • Added command-line option ‘–fake-client-buffers’ which will use textures to fake clientbuffers if their formats match a GL version.
  • We now output a message saying which window will be played if –window is used.
  • If we now fail to find a recorded value and playback value mapping for attribute/uniform/uniform block locations then we attempt to use the recorded value.

PVRTrace Recorder

  • Added a message to tell the user that we’re disabling shader/program binaries.
  • Fixed recording of EXT_separate_shader_objects functions.
  • Tweaked the way we determine the width and height of the window surface. This works around an issue on Android where in rare situations incorrect values would be recorded.
  • Fixed recording of the texture parameter GL_TEXTURE_CROP_RECT_OES.
  • Fixed renderstate override and the frame number in the API timeline on Android KitKat when in profile mode.

PVRHub v2.2

  • A superuser APK is no longer needed to start and stop tracing.
  • Advanced and process-specific PVRTrace settings that are not configurable through PVRHub itself are now retained instead of overwritten in the pvrtraceconfig.json file.
  • Now installs both the 32-bit and 64-bit PVRTrace recording libraries on 64-bit platforms.


  • PVRTrace user manual: Included sections for draw call inspection and current call inspection as a result of GUI changes.
  • PVRShaman user manual: Fixed a problem where some keywords in the PFX semantics table had an incorrect description.
  • PVRTexTool user manual: Added a section for explaining the different encoding modes for PVRTC and ETC.
  • PVRShaderEditor: Added section in the manual about GLSL Compiler tool.
  • BRN51829: Fixed typos in Series6 Compiler ISR.
  • SDK Browser: Added new instructions for building SDK examples on Android using Gradle and Android Development Studio.
  • Added a new separate document for capturing default PVRTune counter list and description.