PowerVR Tools and SDK 2016 Release 2
- Added builds for ARMV8 (64bits).
PVR Framework v4.2
- New Features:
- PFX Specification 3.0, a complete overhaul of the PFX specification allowing a full description of a rendering situation including passes, subpasses, different auto or manual selected pipelines, buffer or uniform specifications and others. See Skinning example.
- RenderManager (beta), a new class designed to utilize the new PFX spec for almost completely automated rendering. See Skinning example.
- Added direct support for hardware Bicubic filtering (GL_IMG_cubic_filtering) to the Framework.
- PVRApi: Added references to all objects that are used in a CommandBuffer or DescriptorSet, so that keeping external references to these objects is no longer necessary. Affected objects: Buffers, Fbos, DescriptorSets, SecondaryCommandBuffers, Textures etc. Any object that is used in a command recorded in a command buffer will automatically be kept alive with reference counting until the command buffer is reset/rerecorded, as will any object that is added into a DescriptorSet.
- Added a command line option to contol the logging output (-loglevel=[critical,error,warning,information,verbose,debug]).
- Changed the EGL Create Context functionality to try out a lot more detailed configurations when trying to create a context.
- Added Tessellation capability, fixed support for loading tessellation shaders, added proper shader types for tessellation control and evaluation shaders.
- Updated the Vulkan upload texture code so that it uses Buffers (instead of images with VK_IMAGE_TILING_LINEAR, that may not be supported in some platforms) as staging for uploading texture data from disk.
- Changed the way descriptor set binding ids are interpreted. Previously, each binding had to be unique, which might cause problems (running out of id’s) in OpenGL ES, for uniformity with Vulkan. Now, the user can use the full range of bindings for each object type in OpenGL ES. The Framework will allow reuse of bindings and it is up to the user to use the strategy that works with the API he targets.
- Updated Android projects to use Gradle 2.14 (improve build times and stability).
- Updated the bundled header files to latest available versions.
- Added a full PowerVR Framework Development Guide document.
- Bug Fixes:
- Fixed a bug where the size of the OpenGL ES implementation of pvr::api::Texture would not get its dimensions properly set when loaded from a file.
- Fixed a bug with iOS touch input.
- Fixed a bug where the array slices were calculated wrongly when loading Cubemaps in Vulkan.
- Fixed a bug in the CommandBuffer::beginRenderPass overload which takes single clear color to clear all the color attachments of an fbo.
- Done a tweak in the Shell where if ExitRenderFrame or ExitShell were called, main() would return with code 1 instead of 0.
- Interface Changes:
- Fixed a bug in the order/usage of CommandBuffer::DrawIndexed call, where for the OpenGL ES implementation, the Vertex Offset parameter was actually used as an Index offset (first index) and the firstIndex was ignored. Now, the IndexOffset is ignored, and if VertexOffset is used in an OpenGL ES context, an assertion is thrown.
- Changed the addAttachmentState function from implicitly assigning consecutive attachment indices to setAttachmentState which explicitly takes the assignment index.
- Renamed the GraphicsContext::getCurrentSwapChain() function to getSwapChainIndex(), like it is in the Shell class.
- Removed the GraphicsContext from the UIRenderer init(…) interface, since it can trivially be inferred by the RenderPass.
- Changed the updateBuffer interface to better map to both Vulkan and OpenGL ES. Now, on buffer creation, instead of a “hint”, buffers will take a “mappable” flag which indicates if the user requires a client-side mappable buffer.
PowerVR SDK v4.2 Examples
- Demos ported to the Vulkan API:
- DeferredShading: demonstrates how to use multiple subpasses with framebuffer attachments using local memory.
- ParticleSystem: Compute physics.
- ExampleUI: Advanced 2D Techniques.
- PostProcessing: Simple multi-pass rendering demo.
- Glass: Advanced multi-pass rendering demo.
- PVRScopeExample: Reading and displaying GPU hardware counters.
- PVRScopeRemote: Information interchanges between application and PVRTune.
- New demo: OpenGL ES Multiview VR (Showing the Multiview extension for OpenGL ES).
- Standalone (CL/GUI):
- Added support for Autodesk FBX Format (*.fbx).
- Added support for Autodesk 3DS Format (*.3ds).
- Added support for Autodesk AutoCAD DXF Format (*.dxf).
- Added support for Alias Wavefront OBJ Format (*.obj).
- Enhanced support for Khronos COLLADA Format (*.dae).
- Optimsed the building of the edge list to speed up the sorting optimisation.
- Added better detection of rooted devices.
- Support for Android N.
- OCL Occupancy Calculator. A new tool to visualise how changes to OpenCL kernels would theoretically affect performance on hardware.
- Enhanced compiler configuration widget:
- Per shader configuration.
- Now more flexible and robust when handling external compilers.
- Added the Khronos reference GLSL compiler.
- Removed the ‘Optimise’ function which is now obsolete due to improvements to our offline compilers.
- New tabs are now correctly given focus.
- Keyboard tab key is no longer bound to ‘Open Find Dialog’ command.
- Multiple instances of PVRShaderEditor should now open correctly.
- External changes to a file are now detected correctly.
- Fixed issue where Windows user names which included whitespaces would prevent the compilers from executing.
- Fixed crash when calculating the bounding-box and vertex data was not interleaved.
- Built-in shader editor and profiler now exclusively handles PFX files.
- Now supports PVRTC compression of textures with dimensions larger than 4096 pixels.
- Added advanced config option “UniformBufferOffsetAlignment” to the “Tracing” section that allows the user to override the returned value of GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT and GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT. The value must be a multiple of the platform’s values and should be used when the value on the recorded device is different to the device you wish to playback/analyse on. To use the platform’s alignment do not define this value.
- Moved the DisableBinaries config option to the Tracing section of the config.
- Fixed the –optimised-memory option.
- Fixed the –delay option on Linux.
- Added option to specify the frame delimiter choosing from a list of suitable API functions.
- Fixed a bug in the frame caching where the render would fail if we failed to compress the rendered image.
- Frame caching now correctly gets refreshed when disabling/enabling calls.
- Disabling the render caching now correctly takes affect straight away instead of the next time a trace file is loaded.
- Fixed the formatting of hex object names in the ObjectDataViewer title so they match the formatting in EGLState widget.
- Fixed a lock up when exiting on some Linux devices.
- Fixed a crash that could occur when using network recording.
- Added all currently known values of EGL_LINUX_DRM_FOURCC_EXT to the egl attributes to string functionality.
- Added “File\Export\Export counters to CSV…”. This allows the user to enter a period in milliseconds; PVRTune calculates the counter values using the specified period and writes to a CSV file. New PVRTune command-line options: –periodms, –export-csv-timing, –export-csv-counters.
- Remove counter “triangles culled”.
- Add counter “Triangle ratio”, this is TA tris out / tris in. Affected by culling and clipping.
- Add counter “slot occupancy”.
- It is now possible to search for dynamic Marks.
- “Connection\Close” now has a keyboard shortcut of Ctrl+D. Convenience; “Disconnect”; End-of-Transmission character (EOT). (Was Ctrl+C, but this is normally used for copy & paste.)
- It’s no longer necessary to “right-click, copy”, Ctrl+C now works for that.
- PVRTune main window startup: now test whether the restored geometry is on screen. If not on any screen: place the window automatically.
- PVRPerfServer: handle the case where the OS CPU and memory usage counters may not have progressed if we are reading at a greater rate than CONFIG_HZ.
- PowerVR GX6650 devices: fixed missing device information in “PVRPerfServer Details” dialog box, and missing counters: 2D active, Compute active, Renderer active, Tiler active.
- PID window:
- Fix properly showing PID colour-icons and a possible crash.
- Fix a possible Ctrl+C crash.
- Counter Table: using the keyboard cursor keys to move up and down the list now updates the Counter Properties window, just like when clicking on a counter.
- Can now use the Edit menu to choose between three clock transform algorithms: Auto, DDK or Specified Clock Speed. The default for “new enough” Rogue drivers is now DDK, otherwise the default is Auto.
- Improved performance of draw calls.
- Fixed a bug which caused memory growth when using glDebugMessageInsert.
- Fixed a bug where eglCreateContext would erroneously check for the presence of ARB_buffer_storage when an ES 3.1 context was requested.
- Fixed a possible invalid memory access in eglCreateSyncKHR.
- Fixed GL_TESS_EVALUATION_SHADER and GL_TESS_CONTROL_SHADER not being accepted by glCreateShader.