New Developer Guide: ARM Mali application developer best practices

The ARM Mali application developer best practices guide targets an expert developer audience, familiar with Vulkan and OpenGL ES API programming.

The guide represents the graphics system as a pipeline of stages, and performance problems can arise in each of these stages. For each stage, the guide outlines the topics which may be of interest to developers. Each topic is explained and a list of actionable “dos” and “don’ts” are given for application development. Also, the guide explains the impact of failing to follow that topic’s best practise, as well as debugging advice which can be used to troubleshoot each performance issue.

The list below includes the different stages covered.

  • Vulkan API only stages:
    • CPU: Driver mapping and unmapping memory
    • Pipeline creation
    • Command buffers
    • Descriptor sets and layouts
    • Allocating memory
    • Clearing attachments
    • Using multisampling
    • Using multipass
    • Using sampler wrapping modes
    • Taking advantage of ARM Mali transaction elimination
    • Windowing system – EGL /WSI
      • Using semaphores well in WSI
  • Stages relevant to Vulkan and OpenGL ES APIs:
    • Vertex shading:
      • Using index buffers
      • Attribute precision
      • Instanced vertex buffers
      • Designing the optimal vertex attribute layout
      • Selecting right precision for varying outputs
      • Matching geometry amount to resolution and screen size
    • Draw call size and performance
    • Tessellation
    • Geometry shading
    • Tiling
    • Fragment shading
    • Using the early-ZWS depth test
    • Minimize stencil value changes
    • Blending
    • Depth pre-passes
    • Texture formats and impact on texture pipe throughput
    • Considering instruction cache
    • Floating point (HDR) rendering formats
    • Compute
    • Using shared memory well on ARM Mali
    • Shader core
      • Using uniforms well on ARM Mali
      • Using atomics well on ARM Mali
      • Using reduced precision
    • Hardware queue pipelining
  • Stages relevant to OpenGL ES API only:
    • Enabling MSAA

To know more download the ARM Mali application developer best practices guide.