
What's New in PowerVR SDK v3.1
PowerVR SDK v3.1
Release 1, Update 1
PVRShaman v2.1.2
- Added 64bit support. This fixes a crash on start-up on systems running OSX 10.7 Lion and OSX 10.6 Snow Leopard.
Release 1
Builds
- Rebranded the SDK icons.
- Updated GLES headers.
- The builds folder has been restructured. The various headers can now be located in Builds/Include and libraries can be located in //Lib. As part of this rearrangement the Linux common and platform makefile includes have been modified. They now handle dependencies better and have made it easier to build examples for multiple APIs if the need arises.
- Removed the inclusion of --rpath=/usr/lib from the HelloAPI Linux makefiles as it was causing problems tracing when on some platforms.
- Removed references to the splash screen from the BlackBerry 10 projects.
- Updated the global SDK location variable for BlackBerry10 from IMG_SDK_HOME to PVRSDKDIR.
Examples
- Updated demos with new logo.
- Fixed the file wrapping of shaders and effects in the Visual Studio projects so they are wrapped as strings instead of binaries.
- Fixed the wrapping of POD files in the OGLES3 Visual Studio projects for x64 builds.
- Added ldpi, mdpi and xhdpi Android icons.
- Removed the API from the menu name of the applications in Android and iOS. The API is now contained in the icon.
- Enhanced usage of DiscardFramebufferEXT/InvalidateFramebuffer in examples that use Frame Buffer Objects.
- Removed erroneous calls to TestEGLError from the HelloAPI examples.
- BinaryShader : Fixed the shader path allocation.
- Shaders: Updated OGLES2/3 to use new PVRTextureHeader.
- The iOS projects no longer list the .pvr source pngs.
PVRTools
- Added drop shadow to Print3D fonts.
- Fixed rounding issue for Print3D layout when font is scaled.
- Updated Print3D to use different shaders for the font and logo.
- Updated the logo used by Print3D to the new branding.
- OGLES Print3D now unbinds the texture at the end of the flush.
- Changed the default texturing filtering method to bilinear filtering.
- Added PVRTCII support to texture loading code for OpenGL ES 2 and 3.
- PVRTMatrixQuaternionMultiplyF now uses a temporary variable for calculating the multiplied quaternion. This fixes a problem where the destination quaternion is also used as an input quaternion.
- The OGL extension loading code now first attempts to load GL_ARB_framebuffer_object and if that isn't present falls back to GL_EXT_framebuffer_object.
- Added fix to PVRTC decompression to force access to PVRTCWords via individual members, which caused an issue with the Android gcc compiler.
- Updated OpenGL/ES texture loading codes to correctly handle loading from a specified MIP Map level.
- Modified how PVRTBackground.cpp is destroyed, as previously allowing Graphics API release mechanisms could crash the app if the API context was destroyed prior to the background class being destroyed.
- The OGL extension loading code now loads GL_ARB_framebuffer_object instead of GL_EXT_framebuffer_object.
- PFXParser: Fixed an issue in which some GLES implementations require square brackets in the call to glGetUniformLocation if the uniform name in the shader is an array.
- The OGLES2 Print3D now resets the program and the bound 2D texture.
PVRShell
- The Android shell will now display any set exit message as a “toast” on exit.
- Fixed an infinite loop that can occur in the Android shell if the application returns false from InitApplication.
- The GLX part of the PVRShell now sets up GLX_SAMPLE_BUFFERS and GLX_SAMPLES if the option -aasamples isn't set to 0.
- FSAMode has been replaced with prefAASamples and -aasamples. Now when you want to use aa you define the number of samples you wish to use.
- Removed OpenVG setup code.
- OpenGLES: Shell now automatically discards depth and stencil data from main framebuffer after a render. Options to turn these discards and discarding colour on/off have been added. Discarding for framebuffer objects still needs to be performed manually.
- EGL: Added EGL extensions to the '-info' output of PVRShell
All Utilities
- Fixed problem on Linux KDE that impeded opening the applications when the splash screen was activated.
PVRShaman v2.1
- Stopped disabling inactive effects in material view. Their name is now simply displayed in red.
- Fixed bug in which a warning would repeatedly pop-up if a POD file had invalid materials.
- Fixed bug saving to read-only files.
- The Scene panel and Editor panel can now be floated in separated windows. These are however, mutually exclusive.
PVRTexTool v4.02
GUI
- Fixed mis-aligned encode dialogue options on Mac/Linux.
- Fixed console output warning about missing slot in "Spin_Width".
- Added ETC1 to OpenGL ES 1.x compression types.
- GUI now remembers your choice for PVRTC/ETC compression quality.
- Removed unused "context help" buttons from dialog windows.
- Updated Status Bar. Now displays current surface (MIP Level, Cube Map Face and Array Member).
- Updated Display Dock to show currently viewed face when viewing a cube map.
- Added file extension check to make sure that the filter affects the saved output correctly.
- Fixed issues with reloading a window after encoding and then saving it.
- Updated error message on failed file load to be a little more accurate.
- Renamed "Current" option in channel editor to "Current Texture" to be clearer.
- Renamed "Swap Channels" button in channel editor to "Apply Changes", as original wording was unclear.
- Added padding to BCn texture compression, allowing NPOT and non-block-sized textures to compress successfully.
- Fixed offset when using linear and cubic resize methods, so that lower right pixels are no longer near-duplicates of their neighbours, and data isn't shifted slightly to the upper left.
- Fixed occasional crash in pixel lookup when switching between MIP Map levels.
Command-line
- Filetype checking is no longer case sensitive, uppercase file extensions are now correctly parsed.
- Flip argument with "flag" parameter now works correctly as expected.
- Default output name now inserts ".Out" if the auto-generated output name matches the input filename.
- Fixed Legacy PVR file io for cubemaps and texture arrays
Library
- Modified CPVRTextureHeader to ensure const-correctness, rather than using "mutable".
- Added forward declarations of MetaDataBlock and CPVRTString so that their interfaces are exposed in the dynamic library.
- When setting EAC texture formats via the OpenGL formats, now correctly sets the colour space to be lRGB instead of sRGB.
PVRVFrame v9.5
- Added support for ES 3.0 texture parameters.
- Fixed a bug where glGetShaderSource would sometimes erroneously trim off the last character of the output buffer.
- Added glTexStorage2D support for compressed textures.
- Fixed a bug where PVRVFrame would be unable to create a suitable OpenGL context on some low-end systems when the host profile was selected.
- Improved the way PVRVFrame selects underlying OpenGL context configurations, leading to a greater number of EGL configs being available and increased support on lower-end systems
- Fixed a bug in oes_matrix_palette where zero-stride array formats would not be correctly traversed.
- Added support for EGL_PRIORITY context attributes.
- Fixed a bug in GLSL translation where precision modifiers may cause invalid GLSL to be generated if they are directly followed by a newline character.
PVRTune v14.12
- Added software counters which can be queried via PVRTrace recording.
- Added real-time ‘Render State’ overrides. Requires PVRTrace recording application.
- Added new counter filter dialog which allows the user to filter different counter types. This replaces various controls in the Counter Table widget.
- Added tooltip for TA/3D checkbox to describe the control.
- Fixed widget-layout when starting the application.
- Moved PVRPerfServer control widget to a new dialog activated via Connection > PVRPerfServer > Details...
- 'Active Group' selector has been copied to the Counter List widget. It also remains in the PVRPerfServer dialog.
- The tab bar is now hidden if only one tab is open. Opening extra tabs displays the tab bar.
- Fixed spacing of some GUI elements on OS X.
- Removed toolbar.
- Removed counter number labels in Counter Properties widget and Counter List widget.
- Reduced graph CPU usage; performance improvement when PVRTune is CPU limited.
- Improved graph/mouse hit-testing accuracy.
- Now show the AppLib window, and place it on the right, by default.
GLSL Compiler
- Updated Series5 and Series6 offline compilers to 1.9@2256488 and 1.0@2259268.
- BRN38900: Watch for file changes in PVRShaderEditor.
PVRShaderEditor 2.1
- Fixed tabbing on OS X when many tabs are open.
- Re-added templates for PFX for both OpenGL ES and OpenGL.
- Added tooltips to the profile widget labels.
- Added improved OS-specific shortcut keys, mainly differentiating between OS X and Windows/Linux.
- Changed shortcut keys to indent selection to be more consistent with other applications on a given OS.
- Commands that are not available (such as requiring a selection yet not having a selection) are disabled by default.
- Undo/Redo commands will not disable/enable if the action is not available.
- Added new Go to Line dialog activated with Ctrl/Cmd+J
- Added more keyboard shortcuts to various GUI commands.
- Set a more appropriate default file path when first using the utility.
- Jump to line when double clicking a warning or error now centres the cursor in the edit panel.
- Fixed OpenCL number formatting for syntax highlighting match.
- Added OGLES3.0 uint scalar and vector types to syntax matching.
- Changed Find/Replace widget with new Find/Replace dialog which is more reliable and easier to use.
- Fixed endless loop in ReplaceAll if certain flags were set.
- Added ability to reveal the current file in Finder, Explorer, or equivalent file browser on Linux.
- Added ability to display whitespace and tabs in source file.
- Improved handling of UTF8 source files.
- Fixed issue after application crashed the second run would report 'Connection refused'.
- Fixed broken Compile Dialog UI being too small in some instances.
- Fixed RegEx for custom compile on Unix systems as / was not being matched properly.
- Added functionality to attempt to optimize GLSL and GLSL ES source code.
- Fixed bug not clearing compile outputs when switching to a document type that cannot be compiled.
- BRN38898: Implemented ability to change tab size.
- BRN39089: Fixed formatting of output of OpenCL compiler.
- Changed the output window font to be monospaced.
- Implemented Ctrl+Mouse Wheel to increase/decrease font size in Output window, and source code window.
- Fixed BRN38895: Double click to jump is missing in PVRShaderEditor.
PVRGeoPOD 2.14.2
- Standalone: Fixed a bug in the calculation of the animated rotation quaternion for some scenes.
- Standalone: Fixed a crash that may occur if doing repeated exports.
- Standalone: Fixed the importing of a COLLADA scene which was using an id of "" to identify the visual scene.
- PVRGeoPOD plug-ins for Max and Maya no longer supports versions before 2010.
- Added support for dragging and dropping files from Outlook and other programs.
- Added support for dragging and dropping shortcuts/symlinks to supported files types.
- Blender: Fixed crash on OSX if you cancel the export options dialog.
PVRTrace v3.1.3
- Added shader analysis capabilities: Pixel picker, pie chart cost overview, texture usage, etc.
- Added PowerVR Depth Complexity Image Analysis mode.
- Added Heat-map Analysis Image mode.
- Added OGLES3 Support in Recording and Playback
- Added Real Time Shader Modification
- Added ‘save as’ a range of selected frames
- Added capabilities to disable calls in real-time
- Highlighting is now controlled via clicking the calls in the CallView widget.
- Added new settings for enable/disable highlighting, and highlight colour.
- Enhanced primitive hiding capabilities: scrubber, single and range.
- Added new search option (by Function Name). Improved search speed.
- Added event filter to handle OS X FileOpen events correctly.
- Added buttons next to scroll bar for OS X to replace arrow buttons on Lion and Mountain Lion.
- Added code to navigate the call list via the keyboard.
- Added new option in pvrtrace.cfg for adding Process ID as prefix to trace output file. (Android)
- Added EGL IMG Priority Extension support in recorder.
- Added support for MemoryLimit option: Only a small part of the file will be kept in memory.
- Playback for OGLES1 now properly matches recorded and playback texture id (GenTexture/BindTexture)
- Added option to reload trace file when the user change the Image Analysis enable option.
- Fixed Image Analysis corruption when OES FrameBuffer is been used.
- Fixed drag and drop on OS X.
- Enhanced glXXXPointer functions handling of Attribute Locations.
- Fixed Image Analysis corruption when OGLES 1 Matrix Controller is used.
- Fixed Image Analysis corruption when glTexParameterf is used.
- Depth Complexity Image Analysis mode forces the clear colour to be black for better visualisation.
- Fixed several issues in the Network Controller and made it more verbose.
- Fixed non-frame, 0 records playback.
- Fixed several issues with OGLES Extensions in Playback
- Fixed Image Analysis issues with Render State Tracking (shader, programs, textures, FBO)
- Added more error handling to the GUI
- Fixed Frame Buffer Viewer corruption.
- Fixed MapShader attached. Now it is incremental.
- Fixed a problem in the GUI when there are 1x1 textures in the trace.
- Fixed a bug in Linux Build (changed linking libraries order)
- Fixed a bug when the texture in not properly converted for the GUI (1x1 texture)
- PVRTrace now explicitly sets the content type for GLES VS/FS file types instead of relying on autodetection which isn't reliable enough.
- Fixed a critical bug in glDrawArray/glDrawElement when decoding block data
- Fixed a bug cleaning memory when recording using the Network option
- Fixed a bug with No Record trace for OGLES1 (TexParameter)
- Moved the current Size of the Screen in the playback to EglEnvironment.
- Fixed Active Texture in Playback Render State OGLES2
- Fixed a problem with ViewPort in Playback on Linux Ubuntu
- Fixed a wrong implementation of ‘exclude process’ in Trace Recorde
- Fixed combo box Search Dialog.
- Fixed problems with Uniforms and Texture Render State / Recorder
- The verbose debug info level now outputs the function name being called.
- Fixed an issue with FBO's when a non-default FBO is still bound at the end of a frame.
PVRTrace Setup
- Fixed crash when you remove all the numbers from the Network buffer size box.
- Fixed crash when you set the start/end frame too large in the UI.
- Increased the default buffer size to 2048.
- Fixed the movement of the check boxes on some devices when the Debug output was changed from off.
- A blue border is now shown if the PVRTrace libs installed are different to the ones packaged.
- Added welcome warning message that shows the first time the application is ran.
- The start and end frame options are now greyed out if network is enabled.
- In the UI we moved the edit text boxes into their own table so if the app resizes them they won't force the checkboxes off of the screen.
- Now includes a profile option that will disable tracing and enable features that will be used in conjunction with PVRPerfServer and PVRTune.
- Now updates the UI's options if the config file is modified.
- Will by default set the host libraries to Android's shim libraries until PVRTrace is enabled.
Documentation
- All utilities documents updated with new features.
- Added documentation on how to use PVRTracePlayback on Android.
- New branding.
Installer
- The call to GKSUDO has been removed from the .desktop entries on linux as it is no longer required.
- The default source directory on OSX has been changed to /usr/shared.
- On OSX, if the source folder is not in the applications folder an alias file will be created
that points to it. - The BlackBerry10 SDK has been added to the installer as a target platform.
- The "Target Platform and API" page has had a redesign to allow for more platform combinations. As a side effect you will now got all the selected APIs for all selected OSs.
- An information page has been added after the above page that will display the packages to be downloaded.
- Fixed bug that meant the link to the PVRTune manual and PVRFrameGUI were not been placed into the start menu
PowerVR SDK v3.0 R2
Builds
- Added Blackberry10 SDK
- Added Android SDK as add-on to Google’s Android SDK Manager for Eclipse
- Utilities for Linux Ubuntu 64-bit does not longer requires “sudo” to run
- Updated eglext.h
Examples
- OGLES2Shaders deletes m_Surface in ReleaseView as the array is allocated in InitView.
- Shaders: Updated OGLES2/3 to use new PVRTextureHeader.
- Navigation3D resets the state variable and reloads the assets if InitView is called multiple times due to loss of context. This fixes undefined behaviour on Android if the example is opened and closed multiple times.
- OGLES3CubeShadowMapping: Updated the colour component to use GL_R32UI instead of GL_R32F.
- OGLES3RenderToTexture: Modified the multisamples framebuffer to use RGB8 for its colour attachment format. This fixes the GL_INVALID_OPERATION error returned by glBlitFramebuffer.
- OGLESShadowTechniques: Tweaked the light position as due to a change in the maths tool code the kettle now touches the edge of the texture during the render to texture mode.
- OGLESSkinning: Fixed non-skinned mesh rendering path.
- PVRScopeRemote: Added missing Android permission "android.permission.INTERNET". This permission is required for it to work.
PVRTools
- Added fix to PVRTC decompression to force access to PVRTCWords via individual members, which caused an issue with the Android gcc compiler.
- PVRTModelPOD: Fixed use of SafeAlloc in CopyFromMemory, PVRTModelPODCopyNode, PVRTModelPODCopyMesh and PVRTModelPODFlattenToWorldSpace functions.
- PVRTModelPOD: PVRTModelPODCopyMesh now correctly copies the interleaved data if the original has padding.
PVRShaman v2.0.1
- Fixed double-clicking to open file in PVRTexTool.
- Fixed BRN38875: PVRShaderEditor does not save font configuration correctly.
- Fixed crash when opening a POD from the command line or via Windows file association double click, and the POD file has missing materials.
PVRTexTool v4.0.1
GUI
- Fixed extra space in front of "Portable Network Graphics" in the open file dialog
- Fixed open file error to check a file exists and return an appropriate error message, rather than a generic one.
- Users should now be able to drag and drop additional data into PVRTexTool; for example Microsoft Outlook attachments - Currently Windows only
- Now capable of resolving shortcuts and symlinks when attempting to open them in PVRTexTool.
- Fixed crash caused by attempting to reload a file which no longer exists on the filing system. Now outputs an appropriate error message.
- Fixed Legacy PVR file management for cubemaps and texture arrays
- Fixed rare decompression bug with BC formats causing artefacts to appear in decompressed image. Compression unaffected.
- Added file extension check to make sure that the filter affects the saved output correctly.
- Updated error message on failed file load to be a little more accurate.
- Fixed failure to load specific texture/file combination (ktx file/bgra texture).
- Fixed crash on invalid texture data load.
- Fixed crash on Linux when selecting a background colour.
- Added message warning the user to save when attempting to close modified textures.
Command Line
- Fixed open file error to check a file exists and return an appropriate error message, rather than a generic one.
- Changed output for rectangular textures - now only says "Warning" instead of "Error".
- Power Of Two resize with "-" flag now works as expected.
- Filetype checking is no longer case sensitive, uppercase file extensions are now correctly parsed.
- Flip argument with "flag" parameter now works correctly as expected.
- Fixed issue with trying to encode to 1 or 2-channel textures failing to encode.
Library
- Added fallback code to threaded PVRTC compression, avoiding errors on some systems.
- Updated ktx support with additional formats. Now correctly supports:
- R3_G3_B2
- RG8_SNORM
- All Luminance/Alpha formats (e.g. LUMINANCE8_ALPHA8_SNORM, ALPHA8)
- Normalised Short Formats (e.g. R16, RG16_SNORM)
- RGB10
3DSMax
- Fixed bug in plug-in causing it to not read files correctly in 3DSMax 2013.
PVRVFrame v9.4
- Fixed possible crash in glShaderSource. Added support for KHR_debug.
- Fixed a bug where it was not possible to create a multisampled render to texture with depth and stencil attachments
- Fixed a bug where calling glBindFramebuffer with an invalid framebuffer name would not automatically create the framebuffer object.
- Added support for oes_draw_texture.
- Shader information is now output by calling glCompileShader instead of glShaderSource.
- Fixed a bug where GL_MATRIX_PALETTE_OES would not be accepted by glIsEnabled and glGetFloatv.
- Fixed a bug where PVRVFrame would attempt to retrieve the shader info log length from the shader validator library even when it is disabled.
- Fixed a possibility of heap corruption occurring in calls to glShaderSource.
- Fixed a bug where gl_PointSize would stop working after destroying the context and creating a new one.
- Fixed a bug where some GL capabilities would be incorrectly enabled on initialization.
- Fixed a bug where GL_MAX_SAMPLES_IMG would not be queried from the host driver if the information was not available from the profile
- Fixed a bug where GL_POINT_SIZE_ARRAY_POINTER_OES would not be accepted by glGetPointerv.
- Fixed a bug where the lifetime of shader objects was not being synchronized correctly with OpenGL, sometimes leading to incorrect error codes being reported.
- Fixed where GL_UNSIGNED_INT wasn't being accepted by glDrawElements even when the appropriate extension is supported.
- Fixed a bug where some parameter combinations were not being accepted by glTexImage2D in cases where they should.
- Fixed a bug in glBindTexture where GL_TEXTURE_2D_ARRAY would not be accepted in some cases.
- Fixed a bug where the GL_RGB565 internal format was not being translated to a valid OpenGL format.
- Fixed a bug where shaders testing '#if GL_ES' would not compile.
- Fixed a bug in the G6200 profile where extensions would not be supported in OpenGL ES 1.1/2.0 applications.
- Fixed a bug where glCompressedTexSubImage2x would not work correctly with PVRTC formats.
- Fixed a bug where GL_PROGRAM_POINT_SIZE was not being enabled by default.
- Fixed a bug where GL_POINT_SIZE_ARRAY and GL_MATRIX_INDEX_ARRAY_OES were not being accepted by glIsEnabled.
GUI
- Added support for handling multiple PVRVFrame instance applications at once.
- Fixed a bug where the splash screen would appear before the window opens.
- Fixed a bug where the user could use the keyboard to select the separator items from the profiles combo box.
PVRTune v14.11
- Counters updated with new descriptions.
- Improved GUI responsiveness/performance.
- Improved scrollbar behaviour.
- When the counter name column is added to the per-graph list, it is now filled with data instead of being left blank until the counters are next initialised
- Graph view: can no longer completely collapse either side of the splitter.
- Dragged-away items are now completely deleted; also prevents drops onto the source grap
- Fixed pressing delete and Ctrl+Delete on the per-graph counter list.
- PVRPerfServer remote control GUI:
- Controls now “debounced”
- "More" button is now always available.
- "active group" drop down box is now cleared on disconnect, clearing up some confusion
- "active group" drop down box wasn't being enabled on a second connection.
- Restore state to initial state on a purge.
- When files are saved (in addition to when they are loaded), PVRTune now adds them to the recently used files list.
- The Remote Editor's list of connections now shows the executable name and the string passed into pplInitialise, in the tool tip, if available.
- Complete build: can now export user counters. This is available through the menu option "File\Export user counters to CSV", and via the command-line option: --export-csv-usercounters=filename.csv
- Support for additional command-line options. It continues to support a file or server on the command-line: this allows PVRTune to be associated with .pvrtune files. If used, the new command line options will be executed and then PVRTune will quit; the GUI will not appear.
- The PVRTune remote editor GUI that allows editing of the remotely-editable-items submitted through PVRScope is now functional again:
- Support for the new types (bool, int, enum) has been added.
- Items are now displayed in a tree view, using "." characters in the names as delimitors of collapsible levels.
- Added Android command-line version of PVRPerfServer.
- Fixed BRN38966: layout of dock windows and splitter bars is now stored between runs
- Dock windows are now visible on the "connect" screen, rather than appearing after a connection is made.
- Added a menu option to allow the user to specify (override) the clock speed - normally only useful if the clock speed is known and non-varying.
- Fixes for auto- zoom and centering the view when the selected region is very short.
- Fix a case where renders from different applications might be grouped together when their frame numbers align.
PVRShaderEditor v2.0.1
- Fixed bug which would cause lockup while performing Replace All under some conditions.
- Added dialogbox which displays number of replacements performed when Replace All is used.
- Fixed issue after application crashed the second run would report 'Connection refused'.
- Fixed BRN38792: Incorrect comment parsing in PVRShaderEditor. Previous implementation didn't handle some cases involving single-line and multi-line comments.
- Fixed BRN38875: PVRShaderEditor does not save font configuration correctly.
- Fixed Compile Dialog UI being too small in some instances.
- Fixed RegEx for custom compile on Unix systems as / was not being matched properly.
PVRGeoPOD 2.13
- Removed the semicolons from the file filters for the file dialogs.
- Fixed the push button for the user defined data script option for Max and Maya.
- Fixed the A3 check box being incorrectly enabled when playing with Profiles.
- Fixed the post process commands. Target and Working Directory were the wrong way around.
- The [Current] profile now mentions the saved profile it is based on.
- We now save out the [Current] profile's link to a saved profile.
- Added %POD replace to the Post Export command-line arguments. That string will get replaced with the POD filename. This feature was documented but was missing from the last release.
- The PVRGeoPOD MEL command now also takes a profile name as an input.
- Changed the default options so exporting texture-coordinates is enabled by default.
- Fixed naming of the Profile settings in Max 2012.
- Fixed the suppression of the Options dialog in 3DSMax.
- The Export option is now the default button in the Options Dialog allowing you to press Enter to export
- Added support for iGame version 15.5.121.0. Needed by the latest 3DSMax 2013 update.
PVRTrace v3.01
- Fixed crash when you remove all the numbers from the Network buffer size box.
- Fixed crash when you set the start/end frame too large in the UI.
- Android installer: Fixed check boxes on some devices when the Debug output was changed from off.
- Android installer: The start and end frame options are now greyed out if network is enabled.
- Fixed glGenRenderBufferOES for OGLES1
- Disabled Debug Log in Playback
- Added RenderState OGLES Push/Pull Matrix Support (Load matrix is still missing)
- Enhanced glViewport support for OGLES1
- Fixed a bug in glPointSizePointerOES
- Fixed issue with Extensions when opening the trace: all OGLES1 extensions were assigned to OGLES2
- Added Control not to open trace file with a not compatible version number
- Fixed several bug with OGLES 1. Extension(FBO), Buffer, Textures
- Fixed a wrong implementation of ProcessNameExcluded configuration option in Trace Recorder
- Fixed a crash in OGLES1 when matrix is NULL
- Removed OGLES1 Trace debug messages
- Fixed random texture corruption.
- Enhanced search capabilities in GUI
- Removed duplicates in shader list
- Fixed setNetworklock size bug in recorder configuration file.
- Fixed a bug in OGLES2 FBO tracking
- Fixed a bug in OGLES2 Texture Render tracking
- Fixed a wrong OGLES2 shader extraction and export
Documentation
- POD Specification: Fixed an error in the pod specification in the description of animation scaling where the description incorrectly described itself as containing "rotation" rather than "scaling" animations.
Installer 3.0.2
- The Linux Installer will now create .desktop entries in the /usr/share/applications folder for each utility that is installed.
- The Linux Installer will now copy icons PNGs into /usr/share/icons/hicolor.
- If selected, the Linux Installer will register various file types to be opened by their respective utilities (as covered in the installation instructions).
- Added mime types and default applications to the linux installer for any file type the user decides to register
- 15 Extra filetypes have been added to both the linux and windows installer.
- Improved the file association menu to allow for more file types to be associated, various shader files, model files and texture files. By default only the Imagination specific extensions are ticked.
- Added dual location support, allowing users of the installer to separate the location of the PowerVR utilities and the PowerVR SDK. This fixes a problem where users were forced to write source into locations where it may not be possible to compile due to a lack of write permissions. By default, both locations are the same and write to the same location as the previous installer to maintain backwards compatibility.
- Added new file-association icons for all utilities
PowerVR SDK v3.0 R1
Installer
The SDK has a new cross platform installer. This installer is now the single entry point for all Utility and SDK packages, collating the user’s requirements, and ensuring that only exactly what is needed is downloaded. Internet access is required during the installation.
Builds
- LinuxX86 and WindowsX86 SDKs now support 64-bit.
- EGLint in the egl headers is no longer khronos_int64_t for 64-bit builds.
- Renamed all Linux Platforms to conform to a more coherent convention. Please see the user guide to see the PLATFORM value you should use.
- Added PVRTC2 defines to gl2extimg.h.
- Removed the ‘Extras’ folder which contained the PVREngine source example.
Examples
- Demos and Training courses have been merged into a single Examples directory divided into three categories: Beginner, Intermediate and Advanced.
- New OpenGL ES 3.0 SDK including the following examples:
- CubeShadowMapping, Instancing, MultipleRenderTargets, OcclusionQueries, ShadowMapping, TextureArray, TransformFeedback, UniformBufferObjects and DeferredShading.
- Added OGLES2DeferredShading example.
- Added OGLES2ParticleSystem example.
- Added OpenGL ES 1.1, 2.0 and 3.0 PVRScope usage examples.
- OpenGL ES 1 ShadowTechniques: Fixed a bug where the EGL rendering context was not set up correctly when using PBuffers.
- HelloTriangle has been renamed to HelloAPI to account for non-graphical APIs.
PVRShell
- Android: Fixed the PVRShell so it exits correctly if InitApplication or InitView fails.
- Android: Added PVRShellGet prefAndroidNativeActivity that allows the user to retrieve the Android ANativeActivity.
- Android: The PVRShell has been updated so it works as intended when the prefInitRepeats preference is used.
- We now map swipes to key presses. Directional swipes map to their specific direction. Tapping the screen on the left or right maps to Action1 and Action2 respectively. This feature can be disabled by defining DISABLE_SWIPE_MAPPING.
- iOS: Added new macro to print GL errors.
- On windowed systems the default screen resolution is increased to 800x600.
- Added GL_EXTENSIONS when the "-info" flag is passed on application start-up.
PVRTools
- PVRTMap: Fixed missing NULL check in "GetDataAtIndex" function.
- PVRTMap: Fixed a small bug in the remove function not removing items properly.
- PVRModelPOD: The function PVRTModelPODToggleFixedPoint has been removed.
- PVRTString: Simplified the assign function.
- PVRTString: Fixed a crash in the format functions when used on OSX x64.
- PVRTString: Fixed potential infinite loop in the == and != operators if the string pointer passed in is NULL
- PVRTString: Added find function.
- PVRTTexture: Removed separate EAC_R/RG signed and unsigned enums - sign can be represented by var type flag.
- PVRTTexture: Added 2-planar formats to PVRT Pixel Formats. Added the formats to the various format functions.
- PVRTTexture: Changed comment in all "PVRTextureLoadFrom...." functions to say they accept a PVRTextureHeaderV3 rather than a legacy header, as this was incorrect.
- PVRTTexture: Fixed ETC Support in OpenGL ES 2.
- PVRTResourceFile: Fixed an allocation of a string which wasn't taking the null character into account.
- PVRTArray: Added insert function.
- PVRTStringHash: Added comparison against PVRTHash.
- PVRTPFXParserAPI: Fixed documentation on a number of functions declerations.
Utilities
- PVRGeoPOD v2.12
- Collada2POD now falls under the PVRGeoPOD name. CL and GUI binaries can be found in the PVRGeoPOD Standalone folder.
- Added Max and Maya 2013 support.
- Added Blender 2.63 support.
- The POD specification is now accessibly from the Help menu.
- Added support for %POD to the Post Export command-line arguments. That string will get replaced with the POD filename upon execution.
- Added UI option to choose the mapping channel used when generating tangent-space data.
- The fixed point option has been removed. Vertex data can be exported as fixed point but transformations, material, colours, etc. cannot.
- The option in 3D Studio Max to export the bones as geometry has been removed.
- The PVRGeoPOD UI has been redesigned and now uses Qt.
- PVRGeoPOD now supports profiles allowing you to save your export configurations.
- Modified the way the interleaved data is aligned. Now each vertex attribute will get aligned to a 32-bit boundary instead of each vertex.
- 3DSMax: Fixed the export of a scene supplied by a developer that had a skinned character where a couple of vertices weren't correct.
- Maya: The bump map texture is now correct.
- Blender: Fixed the decomposition of the transformation matrix in certain cases where an object has been mirrored.
GLSL ES Compilers v1.9
- Renamed folder from PVRUniSCo to Compilers and renamed compilers themselves to glslcompiler_xxx.
- Updated the offline GLSL compilers for SGX535, SGX540 and SGX543 with latest versions.
- Added offline GLSL compiler for G6x00
PVRShaderEditor v2.0
- Renamed PVRUniSCoEditor to PVRShaderEditor.
- Completely overhauled PVRShaderEditor which now uses Qt GUI framework across all platforms.
- A number of stability fixes on Unix systems when the compiler is invoked.
- Compilers are now built-in to application.
- Added G6x00 compiler.
- Improved shader edit panel with cursor matching.
- Improved search highlighting.
- Fixed bug BRN36872 (crashing on compile on OSX). This was due strange 64bit PVRTString formatting issues.
PVRShaman v2.0
- PVRShaman's GUI interface has been converted to Qt to provide a much better look and feel across all platforms.
- Added support for OpenGL ES 3.0
- Added the ability to define ‘user semantics’ which allow the creation of arbitrary semantics of types supported by the rendering API.
- Removed generic unneeded items under an effect within the container tree panel.
- Added the display of semantics under an effect within the container tree panel. Hovering over these items displays the data they contain.
- Added a number of new semantics including cos(time), cos(time)*2PI, etc.
- Added a new dialog which allows editing of user-defined semantics.
- Fixed SimplePostProcess.pfx as it had mipmapping enabled for a texture with no mipmaps.
- Fixed crash in container panel were textures may have been accessed if they didn't exist.
- Fixed bug in which only post process passes were setting their render-to-texture as written. Changed so all passes set render-to-texture flag to written if they have a render-to-texture. This means data in container panel is more visible.
- PFX format description is now accessible from the help menu.
- Removed throw of exception if POD options cannot be loaded. Just uses defaults and outputs a warning.
- Added arrow keys to allow navigating in FPS mode.
- Re-designed MaterialPropsDialog to use tab widget instead of having all controls on one page.
- Compilers are now built-in to application.
- Added G6x00 compiler.
- Improved shader edit panel.
- Fixed BRN36623 "PVRShaman crashes on certain PFX code". This was due to multiple 'shader' blocks with duplicate names. The fix accommodates this use-case and handles the shader selection list more robustly.
PVRTexTool v4.0
- Added 3DSMax and Maya 2013 plug-ins
- Added Windows Explorer plug-in to preview PVR files in the file browser
- Added more robust KTX file support, including support for OpenGL ES 3.0 formats
- Added more robust DDS file support, including support for DirectX10 style headers
- Added support for more DirectX11 texture formats
- Added support for all core OpenGL ES 3.0 texture formats
- Modified behaviour so that failing to save a file no longer has the possibility of leaving behind an empty file
- Modified ETC behaviour so that NPOT textures can now be encoded
- Removed ETCMedium and ETCMediumPerceptual from the ETC compression options
- Modified "Bleed" behaviour to be more aggressive
Command Line
- Added new interface. Old interface still works, but will output deprecation warning. See manual, or -help for new usage. Most common arguments remain largely the same, with the exception of the style and specific parameter values
- TGA and GIF are no longer supported
- Side-by-side compression and decompression is now available via the new interface
Command Line (Deprecated Interface)
- Fixed issue causing encoding failure when loading from texture files
- Fixed power-of-two check for PVRTC and ETC
- Inconsistent behaviour with the "border" option - the option now consistently ADDS a border, rather than maintaining the original size, which was different from the GUI, the Library and previous incarnations of PVRTexToolCL
- Border option was not adding the correct width to PVRTC 2bpp textures, instead always adding a 4x4 border. Now an 8x4 border size is correctly used when compressing to PVRTC2
- Fixed bleed filter - previously the flag did nothing, and warning was always output
GUI
- Added a small pop-up informing the user that the utility is still doing something when encoding a texture
- Pre-Processing dialogs no longer exist, instead a toolbox with equivalent functionality is now provided
- Added icons to the quick bar for diffing
- Added support for more recent DirectX11 and OpenGL ES 3.0 formats. DirectX11 support includes filtering down to 9.3 and 10.1 feature sets
- Removed legacy OpenVG and DirectX9 formats
- Due to now large number of supported formats per-API, a new encoding dialog has been created with the ability to filter formats based on user requirements
- Encoding a texture now results in a new texture window being created which can be worked on in the same way as the original. Diffing is available as more generic functionality between any two texture windows, as long as the textures match in size. User can specify automatic generation of a diff window when encoding
- Comparing two textures now has more options, with the traditional colour diff available alongside a new tolerance diff, and a blend of the two textures
- TGA and GIF are no longer supported
Library
- Moved PVRTexLib into the PVRTexTool package. Can now be found under ".../Utilities/PVRTexTool/Library/"
- Moved header files from PVRTexLib folder to a sub-folder "Include"
- Fixed crash when trying to encode to DXT/BC when textures have dimensions that are not multiples of 4
- Changed line "#elif _WINDLL_IMPORT" to "#elif defined(_WINDLL_IMPORT)" to avoid preprocessor problems
PVRTrace v3.0
GUI
- New QT version
- Enhanced docking system
- Added new enhanced search facilities
- New Program/Shader view with cycle counts and syntax highlight
- Redesigned the Image view
- Added debug output
- Redesigned the Image Analysis View with comprehensive primitive selection methods and primitive highlight and hide capabilities
- Added new render state entries (FBOs, VBOs, etc.) in the State view
- Enhanced performance and stability when moving Image Analysis between frames
- Added new ‘Frame Buffer’ view (it is recorded with the trace)
Recorder
- New PVRTraceSetup application for Android to install the libraries and control the recording
- Enhanced EGL/GL functions recording
- Fixed several issues when recording extensions on Android
- Enhanced recording starting on any frame
- Enhanced speed and stability
- Added debug info option
- Added ‘save frame buffer’ option
- Added option to select which application we want to record’
- Added option to select which application we don’t want to record (Android only)
- Added option to exit the application when the EndFrame has been reached
- Improved compatibilities when playing back on different platforms
PVRTune v14.7
- GUI now uses Qt
- Better support for devices which vary the clock speed on the fly; also prevents a zoomed-in view from appearing to move while receiving data but Paused. (BRN32931)
- Added auto-update support
- Tool windows are now moveable docking windows
- Fixed “broadcasting servers” GUI element when multiple PVRTune’s are running (or if a new PVRTune was launched before the old one had exited)
- PVRTune for Mac OS X now builds Universal
- Added pplSendFlush() to PVRScope
- Some implementations cache data sends. If the data rate is low, the real send of data can be significantly delayed. If this behaviour causes an issue, call this function to force a cache flush
- If it is necessary to use this function, the best results are likely to be achieved by calling with a frequency between once per second up to once per frame. If data is sent extremely infrequently, this function could be called once at the end of each bout of data send
- The user can now select a range. Holding the CTRL key changes click+drag from "move view" to "select range". SHIFT+click grows the selected range. Selected range is drawn transparent and with a ruler
- Counter table has a new column that can be enabled: "selected". This shows the average counter values over the currently selected range
- The 'z' key is now a shortcut to view the selected range, or "all" if there is no selection
- Counter renamed: "vertex transforms per second" to "vertices per second"
- Counter renamed: "vertex transforms per frame" to "vertices per frame"
- Counter renamed: "on-screen primitives per second" to "primitives per second: on-screen"
- Counter renamed: "on-screen vertices per second" to "vertices per second: on-screen"
- Counter renamed: "on-screen primitives per frame" to "primitives per frame: on-screen"
- Counter renamed: "on-screen vertices per frame" to "vertices per frame: on-screen"
- Counter renamed: "on-screen vertices per primitive" to "vertices per primitive: on-screen"
- New counters: "vertices per primitive", "primitives per second", "primitives per frame"
- Fixed handling of some invalid server addresses
- Improved mismatched frame or render target colours in more complex traces involving many renders and/or many applications
- Fixed "load" counters not accounting for multiple core count (BRN36864)
PVRVFrame v9.3
- Added support for OpenGL ES 3.0
- Added standalone PVRVFrame GUI application
- Added support for EGL pBuffer surfaces
- Improved error reporting in some operations
- Removed external library dependencies: libpng, libjpeg, zlib
- Fixed a crash in glDetachShader
- Fixed a crash in eglGetCurrentContext
- Fixed a bug in EGL attrib_list validation where some values were not accepted when they should be
- Fixed a bug where texture units could not be enabled or disabled individually
- Fixed a bug in OpenGL ES 1.1 emulation where fixed-point buffer object values were not emulated correctly
- Fixed a bug in some environments where incorrect libraries might be loaded when using PVRTraceRecorder
- Fixed a bug where eglMakeCurrent would not correctly handle a value of EGL_NO_CONTEXT
- Fixed a bug in oes_matrix_palette implementation where the element buffer offset would be calculated incorrectly
- Fixed a bug where anti-aliasing would not work correctly on Windows
- Fixed a bug where glGetBufferParameter would query the wrong value from the host driver
DOCUMENTATION
PVRTune
- Updated all images for the new Qt GUI
- New counter descriptions added to Appendix A
PVRTexTool
- Updated all images for the new Qt GUI
- Total rewrite of the GUI overview
- The PVRTexLib manual has been moved into the PVRTexTool manual
PVRTexLib
- Emphasised that _WINDLL_IMPORT must be defined
PVRTrace
- Updated all images for the new Qt GUI
- New section added with instructions on using the PVRTraceSetup APK
- New section added explaining how to trace using PVRTraceSetup
- New section added describing the Image Analysis Dialog
- Updated the Preferences section to accurately reflect the new preferences
PVRShaman
- Updated all images for the new Qt GUI
- Removed references to Collada2POD
- Renamed references to PVRUniSCoEditor to PVRShaderEditor
- Added a note to section 4.2 that a specification for PFX is included in the package
- Section 5.2.1 removed Import File... entry as the option is no longer available
- Debug Output Panel renamed Task List. Section added detailing the compiler output and profiling information from PVRShaderEditor
- Removed the Section 5.5 Window Configuration, currently the old window configurations are not supported
- Updated the Preferences section to accurately reflect the new preferences
PVRShaderEditor
- Updated all images for the new Qt GUI
- Updated the Preferences section to accurately reflect the new preferences
PVRGeoPOD
- Added a note to the skinning and animation export options sections that 'Export Matrices' solves most problems
- Reordered options explanation by tab within the PVRGeoPOD GUI.
- Updated the Preferences section to accurately reflect the new preferences
- Removed PODPlayer from Section 7
- Removed the Collada2POD section
- Updated description of the align option to match new functionality
Performance Recommendations
- Marked sections that do not relate to Series 6('Rogue') chips as "Series 5/5XT Only". Marked any sections that relate specifically to Series 6 as "Series 6 Only"
- Section 3.4 has been cleaned up. Separate sections have been added for 'Lookup Textures' and 'Pre-Baking' with a note added that 'Lookup Textures' are specific to Series 5 (SGX). Information also added to emphasise the amount of work that must be saved for lookup textures to have value
- Section 3.7, a note has been added that this should be done for ALL render targets and FBOs where possible
- Section 3.8 renamed 'Take Advantage of HSR'. Extra clarification added that an Early-Z pass is not required
- Section 3.10, a note has been added in regards to the use of more advanced techniques, such as 'Portal Culling'
- Section 4.1 now more explicitly mentions level-of-detail, especially in regards to pre-passes such as reflection passes
- Section 4.3 has been reworded to suggest using smaller data types, as bandwidth becomes more at a premium this cost becomes more significant than the cycle cost of conversion
- Section 4.4 now explicitly mentions that interleaved and non-interleaved data can be mix-and-matched where some data changes and some data does not for a given model
- Section 4.5 is now more insistent that STATIC_DRAW always be used for VBOs that change, and never be used for those that do
- Section 4.5 Added further clarification in regards to ghosting of dynamic data
- Section 5.1 Texture Size updated with suggestion to use larger compressed textures that can be downsampled over uncompressed textures
- Section 5.4.2, a noted has been added stating that in some cases Texture2DProj is counted as a dependent texture read when given a Vec3, or a Vec4 where 'w' is not valid
- Section 5.6.2, fixed a broken reference
- Section 5.7 updated to be more insitant that FBOs/Render Targets not be reused, a specific mention of the performance cost due to serialisation of renders has been added
- Section 5.8 has been updated to be in line with the update to Section 3.4
- Section 6.3, this section has been tidied up, a note has been added in regards to creating 'uber-shaders' from pre-processor defines. Specific definitions flow control advice for Series 5 and Series 6 added
- Section 6.4 has been updated to favour mediump, and with information regarding precision modifiers on Series 6
- Section 6.4.5 has been updated with better information on the cost of packing varyings
- Section 6.4.8 now contains information in regards to lowering the number of pack and unpack instructions based on ordering or calculations within a shader. The example has also been removed as it added nothing and increased the complexity of the section
- Section 6.5, section cleaned up to be more specific in regards to what it is that is bad as it was unclear previously. Removed section stating not to manually vectorise to save computation given that doing so is actually a performance improvement
- Section 6.7 added, covering the use of 'const' data in shaders and the performance benefit that can be gained
- Section 7 added covering optimisations for specific techniques, Section 7.1 added discussing on-chip MRTs for Series 6 chips, Section 7.2 added discussing efficient sprite rendering
PVRTools
- Doxygen output moved into API specific folders
PowerVR Support
If you have any enquiries or require support on any of our PowerVR graphics SDK:
Online Resources
PowerVR FAQ
PowerVR SDK Docs
E-mail Devtech Support
devtech@imgtec.com

