Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Mobile, Graphics, and Gaming blog Developer Guide: Arm Mali GPU Best Practices
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • developer
  • Mali
  • optimization
  • Application developers
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Developer Guide: Arm Mali GPU Best Practices

Gemma Paris
Gemma Paris
May 5, 2017
1 minute read time.

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

This guide has since been updated and can be found below.

Arm Mali Best Practices

Anonymous
Mobile, Graphics, and Gaming blog
  • Unlock the power of SVE and SME with SIMD Loops

    Vidya Praveen
    Vidya Praveen
    SIMD Loops is an open-source project designed to help developers learn SVE and SME through hands-on experimentation. It offers a clear, practical pathway to mastering Arm’s most advanced SIMD technologies…
    • September 19, 2025
  • What is Arm Performance Studio?

    Jai Schrem
    Jai Schrem
    Arm Performance Studio gives developers free tools to analyze performance, debug graphics, and optimize apps on Arm platforms.
    • August 27, 2025
  • How Neural Super Sampling works: Architecture, training, and inference

    Liam O'Neil
    Liam O'Neil
    A deep dive into a practical, ML-powered approach to temporal super sampling.
    • August 12, 2025