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 =

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.

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. This is a work in progress and not yet ready for general use. The kernel side has been accepted and will be part of v5.2. The userspace mesa driver has been accepted as of April 2019, however is still lacking some features. See the userspace driver page below.


 * WIP (Qiang Yu): (Lima kernel driver, mesa-lima userspace driver)
 * based on re-engineering efforts from Archive of http://limadriver.org/

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)