Release Notes
PowerVR Tools and SDK v3.4
Overview
In this release PVRShaderEditor adds the latest compilers for Series6, Series6 FP16, and Series6XT to provide more up-to-date profiling. PVRShaderEditor also adds new functionality to access the GLSL disassembly for these compilers, as well as full instruction set documentation. In addition, several performance optimizations have been made for the different utilities in the PowerVR Tools suite. New SDKs have been added including WebGL, Android 64bit and Linux MIPS. Furthermore, a fully redesigned PowerVR SDK Browser is now supplied with the distribution for improving accessibility of the SDK contents.
Builds
- Added support for Android arm64-v8a, x86_64 and mips64.
Examples
- PVRScopeExample and PVRScopeRemote: updated for PVRScope changes.
- PVRScopeExample: CPVRScopeGraph::SetActiveGroup() now accepts a group number even if there are no counters in that group, if there are higher groups. This allows PVRScopeExample to pass an empty group, to reach a higher, populated group number. Allows for 'invalid' group numbers – i.e. SW counters.
- PVRScopeRemote:
- Make use of PVRScopeComms new support for nested begin/ends.
- Utilise the CPPLProcessingScoped helper class where appropriate.
- Use the optional pplWaitForConnection() function.
- Instrumented all remaining functions in the app (LoadTextures, LoadShaders, LoadVbos), using CPPLProcessingScoped. Also made use of the __FUNCTION__ define.
- OGLES3ProceduralTextures: corrected input flags for glMemoryBarrier.
PVRShell
- CPVRTPrint3D: Fixed out-of-bounds access.
PVRTools
- CPVRTPFXEffect: Fixed the Destroy() function to destroy the texture data.
- Fixed a bug in the implementation of PVRTMap where calling ‘Remove’ might have incorrect behaviour.
PVRShaman v2.2.2
- Incorporated new icons in the GUI.
PVRTexTool v4.1.4
- Increased performance of ETC decompression. It’s now up to about 20% faster per surface, depending on the compression scheme.
- Fixed scaling issue. All test cases now work 100% correctly when downscaling.
- Fixed crash when saving a texture with MIP Maps to a KTX file.
PVRTexToolGUI
- Updated icons to new consistent style.
PVRTexToolCLI
- Fixed padding argument so that they actually pad the metadata.
- Fixed bug with '-squarecanvas +' where size was being set to the largest of width and depth instead of width and height.
PVRTexLib
- Updated PVRTC Compressor to version 1.190, which fixes the single region crash, which caused small PVRTC2 textures (or MIP Maps) to crash the tool.
- Fixed bug in PVRTC2 compressor where it won't properly compress textures that generate a single PVRTC region in the Y dimension (i.e. any texture, or MIP Map level in a texture, with a height of 4 or lower).
PVRTexTool Plugins
- Added 2015 versions of Autodesk 3DSMax and Maya.
- Fixed channel order when loading PVR files in Maya.
PVRVFrame v10.0
- Performance improvements.
- Added support for OpenGL ES 3.0 on OSX.
- Added Windows XP support.
- Added support for KHR_blend_equation_advanced and KHR_blend_equation_advanced_coherent.
- Added support for EXT_texture_sRGB_decode.
- Added support for GL_EXT_robustness.
- Added seamless cube map support for OpenGL ES 3.0+ contexts.
- Fixed glTexStorage2D when format GL_DEPTH24_STENCIL8 is used.
- Fixed shaders of different versions being linkable.
- Fixed GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH always returning 0.
- Fixed a possible data race situation when using textures in multiple threads.
- Fixed a bug in glTranslatex where values were not being converted correctly.
- Fixed a possible crash on OSX when sharing contexts.
- Fixed STENCIL_INDEX8 format textures not being allowed with an ES 3.1 context.
- Fixed a bug in eglCreateWindowSurface where allowed attributes weren't being checked correctly.
- Fixed error checking of requested major/minor version in eglCreateContext.
- Fixed an issue on Linux where contexts would be initialized incorrectly when using mesa OpenGL drivers.
- Fixed gl_FragData in shaders not being translated correctly.
- Fixed a bug in GLSL translator where textureCubeLODEXT was not being translated.
PVRVTune v14.88
- Renamed TA to Tiler, and 3D to Renderer.
- Added counters:
- Shader proportion: pixel.
- Shader proportion: vertex.
- Shader proportion: compute.
- Vertices per batch.
- Shader slot scheduled count: compute.
- Shader slot scheduled count: pixel.
- Shader slot scheduled count: vertex.
- Shader slot size: pixel.
- Shader slot size: vertex.
- GPU task time per frame: Tiler core.
- GPU task time per frame: Renderer core.
- GPU task time per frame: 2D core.
- GPU task time per frame: Compute core.
- Complete build and custom counter groups:
- Custom counters: editable fourth column.
- Rename the count modes "unary" and "binary".
- Added a filter input box for the first three columns.
- Set the stretch factors to give the rightmost two columns more space.
- Removed uniformItemSizes for the first list. That also affects width, which means the horizontal scroll bar wasn't appearing soon enough.
- Fixed tab order, and put the focus in the filter box by default.
- Now saves and restores the dialog's geometry each time.
- Now create counters for custom HW sources.
- BVNC string parsing. Should now handle V="cb" or V="3p" style BVNCs. When automatically creating per frame and per second counters for HW sources, now also creates a per clock counter.
- When automatically creating per frame and per second counters for HW sources, now also creates a raw counter. This lets you see the actual count in the time period. Perhaps useful in the counter table, but not in the graph.
- SGX XT counter: "Shader load: Compute".
- New counter: Batches per frame.
- New counter: Shader proportion: event.
- PVRTune regression fix: Counter Table group combo box now correctly displays the chosen group.
- Fixed some counter sources not being visible after choosing them in a custom group.
PVRTuneGUI
- PID docking-window: fixed occasional disappearance of known application names (they are only received if PVRPerfServer is run with the -pid option).
- Monitor docking-window:
- Data no longer "pauses" during periods of no GPU activity.
- Added the missing shader core load, for Rogue.
- Counter properties docking-window:
- No longer lets the window size grow due to a long counter Name or Source string.
- Also sets the Name and Source strings as StatusTips (ToolTips are too distracting) - allows larger strings be read.
- Added support for nested user timelines. PVRTune renders these as a "flame graph".
- Connection screen:
- URL buttons now automatically shrink their text to fit (lost during port to Qt).
- "Connect To:" box now gets the focus by default, as it should, and as it used to. Can once again simply run and press Enter to go straight to the last connection.
- Now convert all file path slashes to '/'. This fixes/removes the possibility of two 'matching' paths in the file history but with different slashes on Windows.
- Status bar: now has a visual semaphore indicating connection warnings; click to show the PVRPerfServer Details dialog box.
- Added more feedback to PVRPerfServer details: now shows warnings at the bottom.
- Complete build: additional info.
- Fixed some rare crashes.
- Main window: fixed the 'empty window' behind the splash screen during first (no preferences file) start up.
- Changed the default docking-window layout:
- Top Dock left to right: counter table (default top-most), search, remote editor.
- Bottom: Monitor (default top-most), Props, RS override, PID.
- Mouse hover over the Monitor now causes counters to highlight. Also, in the bar chart style, empty components will now have a hit-test result.
- The Counter Table context menu now has a new option "Properties", which enables and brings the Counter Properties docking window foremost, and sets the focus to the Y-Axis input box.
- Graphs:
- Graphs now scroll more smoothly even when received data is intermittent.
- Fixed an issue where start-up with a zoom value of one (1) would mean that the mouse-wheel could not be used to zoom out, but other methods could.
- Fixed vertical centering of timeline labels on Windows and Linux.
- Renderstate Override: sets vertical policy to preferred, rather than fixed. Makes it a much more polite docking window.
- Fixed a case where scrolled graph rendering could show pixel corruption (refresh would fix).
- PVRTune performance optimisations.
- Bug-fix: restore proper counter tool-tips.
- Updated PVRTuneComplete's welcome message in light of it being covered by the NDA licence, rather than the DDK source licence.
- No longer remember zoom or position between sessions. When loading from a file, automatically "view all" when complete.
- New icons.
PVRPerfServer
- PVRPerfServer command-line:
- All non-single-character commands must now be prefixed with two dashes, e.g. --pid rather than -pid.
- Added new command line option quit after time (qat) e.g. "--qat=4.2" which commands PVRPerfServer to auto-quit after a time of 4.2 seconds.
- PVRPerfServer for Linux, BB10 and Android: made unnecessary and removed command line option "--disable-user-input".
PVRScope Library
- PVRScopeComms.h:
- Don't prefix strings with psz (thereby specifying NULL-terminated), when in fact there is a string-length parameter. pplSendMark() comment improved: the input string is not time-stamped, it's done internally.
- New class: CPPLProcessingScoped. Helper class which will send a processing begin/end pair around its scope. You would typically instantiate these at the top of a function or after the opening curly-brace of a new scope within a function.
- PVRScopeComms.h: updated comments; pplSendProcessingBegin() / pplSendProcessingEnd() pairs can now be nested.
- PVRScope: Headers should work with C code.
- PVRScopeReadCountersThenSetGroup(): removed nTimeUS parameter as it is now queried internally.
- Split PVRScopeReadCountersThenSetGroup() into two new functions: PVRScopeReadCounters() and PVRScopeSetGroup().
- PVRScopeStats: new function PVRScopeFindStandardCounter().
- Fix for per-render counters (per-frame were ok).
- Fixed a regression in the first SDK 3.3 release that could cause noisy data.
PVRShaderEditor v2.5
- Increased stability for heavy use.
- Fixed keyboard shortcuts for consistency across Linux, Windows, and OSX.
- Added support for new OGLCompiler Performance Simulation flag.
- Added support for OCLCompiler flags.
- Compiler options layout redesign, adding support to do per-file configuration.
PVRGeoPOD v2.16.3
- CLI: Updated the command-line. Old commands will still work for release but are now undocumented.
- Blender: Fixed the exporting of cameras that are the children of other objects.
- Fixed a bug where meshes were split even if we weren't exporting materials.
- Added support for 3ds max 2015 SP 2 (igame version 17.2.259.0).
PVRTrace v3.4
- Added data compression for trace files to reduce their size.
- PVRTrace will now output an error message if you attempt to load a trace file with a file format newer than the latest format recognised.
- PVRTrace files are no longer allowed to have ':' in their name. This caused issues when recording on Android where it is allowed and trying to pull the file on to Windows where it isn't.
- glTexEnv and glGetTexEnv now show the enum values as strings where appropriate.
- Frame count now begins at 0 to match the recorder.
- Export frame stats now exports information from the first frame.
- Significantly reduced memory usage.
- glStencilMask now shows its mask as a hex value instead of an unsigned int.
- Fixed a bug in the renderstate tracking of glCopyBufferSubData.
PVRTraceGUI
- Fixed an issue with the generation of the PowerVR depth complexity for some trace files.
- You can now view the attributes of a config used for context and window creation by hovering over the config parameter of their respective eglCreate* functions.
- We now display an error message if the profiling compiler fails to compile a shader.
- Added the GL_EXT_debug_marker functions.
- The image analysis spinning loading symbol now scales with the window.
- glIsQueryEXT now loads the return value.
- The static analysis now shows errors for shaders that failed to compile and programs that failed to link if and only if the trace was recorded with the latest version. Also, if you hover over the call in the static analysis window it'll mention the compilation/linking information log.
- The call summary export now includes lists all API calls instead of just the ones used. This should make is easier to diff application runs.
- Fixed call highlighting on Linux.
- The "cancel" button has been removed from the search dialog. Now, if a search is running the "find" button becomes the "cancel" button.
- Softened the static analysis warning about using scissor rectangles as this only applies to SGX.
- If the trace file was recorded with the save framebuffers option you can now export the framebuffers to a folder as separate images.
- Fixed a crash that occurred if the statistics dialog was open when exiting.
- The call view can now be navigated with the page up and down keys.
- Fixed the function quick help which was broken for some functions.
- Added the function quick help to extension functions where possible.
- Fixed a bug where the thread list would not get cleared when loading multiple trace files.
- Play failed calls is now disabled by default.
PVRTracePlayback
- By default we now playback calls that caused errors during recording. This can be disabled within the GUI or in playback via the command-line.
- Fixed an issue with playing back uniform blocks.
- Added support for the query EXT functions.
- Added --robust that will force the use of EGL_EXT_create_context_robustness and GL_EXT_robustness and will check the reset status of the GL context after each call. If you do --robust=0 it will disable the use of those extensions.
- Added support for playing back eglCreateImageKHR with targets:
- EGL_GL_TEXTURE_2D_KHR
- EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR
- EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR
- EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR
- EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR
- EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR
- EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR
- EGL_GL_TEXTURE_3D_KHR
- EGL_GL_RENDERBUFFER_KHR
PVRTrace Recorder
- Fixed 2x2 texture override when the application is using texture 3D and 2D array.
- Fixed force flat colour fragment shader for applications that use GLSL 300 ES shaders.
- You can now set the default states of the renderstate overrides in the config.
PVRHub v2.1
Android
- Added an option to compress data in trace files.
- Added an option to enable/disable the gathering of CPU usage data when profiling is enabled.
- The recording output level is now configurable.
- You can now set the initial state of the renderstate overrides.
- Added option to disable the appending of the PVRTrace version to the GL_RENDERER and EGL_VERSION strings.
- Added the option to send markers to PVRTune when profiling.
- The "Application list" gets cached at PVRHub launch time (there is an option to refresh it) decreasing substantially the load time.
- User Interface
- Added new icons.
- Other minor UI changes such as simplification.
- Added option to share trace files.
- Added a "File Manager" option to help developer manage the recordings captured.
Documentation
- New SDK Browser to make easier to find the material contained in the PowerVR SDK with full explanations, hyperlinks and enhanced installation instructions.
- Major styling improvements brought about to the Shell, Tools, PVRTexLib and PVRScope documentation.
- Major overhaul of various user manuals in order to better address the needs for the intended audience of developers.
- PowerVR Supported Extensions documentation:
- Added GL_OES_texture_stencil8.
- Updated extensions listing to match current driver support.
Installer
- Added Android OpenGL ES 3.0 SDK.
- Fixed all Utilities shortcuts on Windows and Linux.
- Fixed file association on Linux.
- Added TextureStreaming demo missing from the installer.
- Added missing OpenGL ES 3 iOS deliverable.
- Fixed VS2010 redistributable install logic and fixed behaviour when Microsoft installation is cancelled.
PowerVR Tools and SDK v3.3
PowerVR Tools and SDK v3.3 Release 2
Overview
- New: OpenGL ES 3.0 SDKs for iOS and Android.
- New: OpenGL ES 3.1 SDK for Windows and Linux emulation.
- New: TextureStreaming demo for iOS and Android. Demonstrates how live camera data can be efficiently uploaded to OpenGL ES.
- New: PVRShaderEditor now supports syntax highlighting for GLSL ES 3.10 shaders.
Builds
- Added OpenGL ES 3.1 PC Emulation SDK for Windows and Linux.
- Added OpenGL ES 3.0 SDK for iOS and Android.
Examples
- IntroducingPOD: Always write an alpha value of 1.0 in the fragment shader to avoid potential OS compositor artefacts.
- Skybox2: Tweaked the precision modifiers.
- Android, OGLES2TextureStreaming: Added Android demo which makes use of the Camera Interface.
- iOS, OGLES2TextureStreaming: Added missing CameraInterface dependencies.
- iOS, OGLES2TextureStreaming: Changed mapping iOS camera texture to the recommended GL_LUMINANCE and GL_LUMINANCE_ALPHA (which works in OGLES2/3).
- iOS, OGLES2MultiThreading: Changed main application file from .cpp to .mm to enable correctly including relevant objective-c style header files.
- iOS, OGLES2Glass: Fixed run time error on iOS when binding the default FBO object.
PVRShell
- Context creation failures updated to contain requested API version.
PVRTools
- Added Android Camera Interface.
PVRShaman v2.2.1
- Added missing types, qualifiers & built-ins for GLSL ES 3.00 syntax highlighting.
- Added GLSL ES 3.10 syntax highlighting.
PVRTexTool v4.1.2
PVRTexToolGUI
- Fixed crash when trying to compare images of different sizes. Error message is now correctly displayed.
- Fixed floating point texture loads so that they don't get converted to 8-bit unorm on load.
PVRTexLib
- Fixed shared version of the library's compression algorithm to remove artefacts caused by a VS2010 compiler optimisation gone awry.
- Fixed d3d format to PVR format conversion for D3DFMT_A16B16G16R16F.
PVRTexTool Plugins
- Maya: Fixed channel order when loading PVR files in Maya.
PVRVFrame v9.9
- Fixed a bug where glGet(GL_NUM_EXTENSIONS) would return the wrong value.
- Fixed a bug in GLSL translation where #define may be stripped incorrectly.
- No longer erroneously exposes glShaderStorageBlockBinding.
- Added support for proper creation of ES 3.1 contexts.
- Fixed memory leaks.
- Fixed symbols not being exported correctly:
- glBindVertexBuffer
- glVertexAttribBinding
- glVertexAttribFormat
- glVertexAttribIFormat
- glVertexBindingDivisor
- glCreateShaderProgramv
- glGetBooleani_v
- glGetTexLevelParameterfv
- glGetTexLevelParameteriv
- glMemoryBarrierByRegion
- Fixed glPointSizePointerOES not being exported on Linux.
PVRTune v14.15.2
- Counter renaming: US, USC and USSE to Shader.
- Added Rogue counters: Shader load: Compute and Shader ALU efficiency.
- Restored some missing counters when running with Series6 HW.
PVRTuneGUI
- Fixed a crash at start-up when the "hide unnecessary tabs" option is disabled.
- Counter results in a Search window are now interactive. Hover to highlight; click to select; drag and drop onto graph views, underscore if highlighted elsewhere.
- Added counters per PID, per GPU core task time counters, alongside existing task load counters. (BRN47467).
- Search and Monitor no longer consume CPU time when their dock window is not topmost.
- Counter table: restore old behaviour: Inactive counters now fade before disappearing (if 'hide inactive' is enabled).
- "Search" widget dropdown box items should be listed chronologically (BRN45741).
- Counter Table and Search windows no longer force themselves to be top-most at app start-up.
- Fix for per-core CPU usage on Linux/Android when cores are being enabled/disabled on the fly (BRN47850).
PVRPerfServer
- When the '-pid' option is used, now also send the executable name for all PIDs seen using the GPU.
- Fixed a crash when using the ‘-sendto’ option along with applications that use PVRScope (BRN47848).
PVRScope Library
- Fix for per-render counters only (per-frame were ok) that caused the data to be out by a factor of two.
- Fix a regression in the first SDK 3.3 release that could cause noisy data.
PVRShaderEditor v2.4
- Added missing types, qualifiers & built-ins for GLSL ES 3.00 syntax highlighting.
- Shader type is detected by file extension first. If the extension is unknown, fuzzy logic is used to guess the shader type.
- Added GLSL ES syntax highlighting for the following extensions:
- EXT_shader_framebuffer_fetch
- EXT_shader_pixel_local_storage
- OES_shader_multisample_interpolation
- GL_KHR_blend_equation_advanced
- EXT_shader_pixel_local_storage
- OES_sample_variables
- OES_shader_image_atomic
- OES_texture_storage_multisample_2d_array
- Added GLSL ES 3.10 syntax highlighting.
- Updated the New File wizard to support GLSL ES 3.10 vertex, fragment and compute shaders.
- Added background compilation for GLSL ES 3.10 vertex, fragment and compute shaders when a GLSL ES 3.10 capable compiler is active (a pre-release version of our GLSL ES 3.10 compiler can be downloaded from our support portal: https://pvrsupport.imgtec.com/downloads).
PVRGeoPOD v2.16.2
- Added support for IGame version 16.5.277.0 and 17.1.149.0.
- Added support for 3DSMax 2015 (IGame 17.0.630.0) and Maya 2015.
- The exporter now exports mesh nodes as dummy nodes when the "export geometry" option is unticked. This fixes a crash that can occur if the mesh is the parent of another type of node, e.g., light.
PVRTrace v3.3.1
- The image analysis image now uses bilinear filtering when scaling the image below 100%.
- These enums are now represented by strings in the GUI:
- EGL_NATIVE_BUFFER_ANDROID
- GL_CONSTANT_COLOR
- GL_ONE_MINUS_CONSTANT_COLOR
- GL_ONE_MINUS_CONSTANT_COLOR
- GL_ONE_MINUS_CONSTANT_ALPHA
- Added missing types, qualifiers & built-ins for GLSL ES 3.00 syntax highlighting.
- Added GLSL ES 3.10 syntax highlighting.
PVRTrace Recorder
- The recording of clientbuffers now supports sampling the data once at time of egl image creation using config value 3.
PVRTracePlayback
- Fixed playback of glVertexAttribDivisor.
- Fixed the playback for some traces which would fail to create a window surface if they weren't the first trace file open.
PVRHub v2.0
Android
- Added a dialog to help the user kill an already running app.
- Changed the PVRHubDaemon backend implementation.
- Improved stability and speed.
- The backups are now made (and restored) every time the Android build ID changes (i.e. system upgrade).
Linux
- Scripts now generate a pvrtraceconfig.json file.
- Added OpenGL ES 3.0 support.
PVRMonitor v1.01
- Added a new CPU widget that displays multiple cores as vertical bars on the same lines as PVRTune.
- Now the GPU values can be smoothed over 0.5seconds, similar to the CPU values.
- Few minor UI tweaks.
Documentation
- Extensions: Updated GL_OES_EGL_image/GL_OES_EGL_image_external descriptions to match their actual behaviour.
- PVRTrace user manual: Updated the document with revised manual Android installation instructions (rooted).
- PVRGeoPOD user manual: Updated compatibility table to show support for new 3dsMax 2014/2015 and Maya 2015 versions.
Installer
- Updated InstallBuilder to v9 to solve the problem with cached files after an installation failure.
- Removed MSVC2010 redistributable installer as it was causing SDK installations to fail.
- Fixed missing PVRTune documentation shortcut.
PowerVR Tools and SDK v3.3 Release 1
Overview
- 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.
Note
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.Examples
- 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.
PVRTools
- 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.
PVRShell
- 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.3
PVRTexLib
- 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.
PVRTexToolGUI
- 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
PVRTraceGUI
- 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.
Documentation
- 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.

