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
  • Halide: A novel programming paradigm for advanced image processing

    Éliás Bálint
    Éliás Bálint
    Halide transforms image processing with clean algorithms and powerful schedules that unlock fast, portable, and production-ready performance.
    • December 2, 2025
  • Vulkan subpasses: the good, the bad, and the ugly

    Peter Harris
    Peter Harris
    Understand when Vulkan subpasses improve efficiency, when they do not, and how modern Arm GPUs close the gap.
    • November 6, 2025
  • Space Bartender: Using LLMs in Unreal NNE on Mobile CPU

    Bhanu Arya
    Bhanu Arya
    Experience how fine-tuned LLMs and Arm KleidiAI power lifelike, mood-driven NPCs in Unreal Engine, bringing real-time emotion to mobile
    • October 31, 2025