Mali

The Mali series is a GPU (Graphics Processor Unit) from ARM Ltd. (ARM Holdings plc), designed for embedded systems.

=Overview=

The Mali series of Graphics Processing Units (GPUs) are semiconductor intellectual property cores produced by ARM Holdings for licensing in various ASIC (Application-specific integrated circuit) designs by ARM partners. The core is mainly developed by ARM Norway, at the former Falanx company site.

Like other embedded IP cores for 3D support, the Mali GPU does not feature display controllers driving monitors (such as the combination often found in common video cards). Instead it is a pure 3D engine that renders graphics into memory and hands the rendered image over to another core that handles the display.

ARM supplies tools to help in authoring OpenGL ES shaders named Mali GPU Shader Development Studio and Mali GPU User Interface Engine.

All Mali4XX GPU Variants conform to OpenGL ES 1.1 & 2.0 as well as OpenVG 1.1. All Mali-TXXX GPU Variants conform to OpenGL ES up to 3.1 as well as OpenVG 1.1.

Variants:
There are several generations of which two are currently used by Allwinner.

Midgard
More information can be found on the ARM website.

= Driver =

Lima driver (Open Source)
Lima is a project to develop a completely open source graphics driver which supports ARM's Mali-400 and Mali-450 GPUs.

It consists of two main parts:
 * Kernel parts have been included in mainline kernel since v5.2
 * Mesa (userspace) parts have been part of upstream project since April 2019.

Historical links:
 * Pre-merge development of Lima kernel driver
 * Pre-merge development of mesa-lima userspace driver
 * based on re-engineering efforts from Archive of http://limadriver.org/

Binary driver

 * Mainline Linux: Maxime Ripard (Bootlin) worked on Mali OpenGL support with mainline Linux, please refer these instructions
 * Legacy Kernel (Outdated): For information on the binary driver, please refer to the binary driver installation guide.

Panfrost driver (Open Source)
Panfrost is a project to develop a completely open source graphics driver which supports ARM's Mali-T6xx, Mali-T7xx, Mali-T800 and Mali-G7x GPUs. This is a work in progress and not yet ready for general use.

Panfrost results from a merge of 2 driver reverse engineering projects: chai - for Midgard GPUs (by Alyssa Rosenzweig) and BiOpenly - for Bifrost GPUs (by Lyude Paul). The merge was done due to identical command streams of the ARM Midgard and Bifrost GPUs (but different shader cores).


 * WIP: Panfrost git repository
 * Alyssa Rosenzweig's Blog: NIR shader compiler announce

The aim of this drivers and others such as freedreno is to finally bring all the advantages of open source software to ARM SoC graphics drivers. Currently, the sole availability of binary drivers is increasing development and maintenance overhead, while also reducing portability, compatibility and limiting choice. Anyone who has dealt with GPU support on ARM, be it for a linux with a GNU stack, or for an android, knows the pain of dealing with these binaries.


 * Graphics hardware and FOSS

=See also=
 * Display driver setup.
 * Mali binary driver installation.

=References=

=External Links=
 * Mali-400 MP website
 * GPUs Comparison: ARM Mali vs Vivante GCxxx vs PowerVR SGX vs Nvidia Geforce ULP
 * MALI graphics hardware series webpage at ARM Holdings
 * Mali developer a developer site run by ARM
 * Open Source Mali GPUs Linux EXA/DRI2 and X11 Display Drivers
 * Lima driver (Web Archive)