Optimising for PowerVR

This section covers key principles to be followed to avoid critical performance flaws when developing graphics applications. These recommendations come from the combined experience of the PowerVR Developer Technology Support team and the developers they work with, through profiling and optimising their applications and games.

  1. Do Understand the Target Device
    • Seek to learn as much information about the target platforms as possible in order to understand different graphics architectures, to use the device in the most efficient manner possible.
  2. Do Profile the Application
    • Identify the bottlenecks in the application and determine whether there are opportunities for improvement.
  3. Do Not Use Alpha Blend Unnecessarily
    • Be sure Alpha Blending is used only when required to make the most of deferred architectures and to save bandwidth.
  4. Do Perform Clear
    • Perform a clear on a framebuffer's contents to avoid fetching the previous frame's data on tile-based graphics architectures, which reduces memory bandwidth.
  5. Do Not Update Data Buffers Mid-Frame
    • Avoid touching any buffer when a frame is mid-flight to reduce stalls and temporary buffer stores.
  6. Do Use Texture Compression
    • Reduce the memory footprint and bandwidth cost of texture assets.
  7. Do Use Mipmapping
    • This increases texture cache efficiency, which reduces bandwidth and increases performance.
  8. Do Not Use Discard
    • Avoid forcing depth-test processing in the texture stage as this will decrease performance in the early depth rejection architectures.
  9. Do Not Force Unnecessary Synchronisation
    • Avoid API functionality that could stall the graphics pipeline and do not access any hardware buffer directly.
  10. Do Move Calculations 'Up the Chain'
    • Reduce the overall number of calculations by moving them earlier in the pipeline, where there are fewer instances to process.

There are also a few other more minor considerations that can be found in the next section.