Mali

From linux-sunxi.org
Jump to navigation Jump to search

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

Overview

es2gears running on Mali-400
XBMC running on Mali-400

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.
All Mali-GXX GPU Variants conform to OpenGL ES up to 3.2 as well as OpenVG 1.1 and Vulkan 1.2 (no free Vulkan driver yet).

Variants:

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

Utgard

Name GP (Geometry Processor)
/ vertex shader
PP (Pixel Processor)
/ fragment shader
CPU Level 2 cache size Allwinner implementations
Mali-400 MP 1 1 256 KiB A10 (sun4i), A10s (sun5i), and A13 (sun5i)
Mali-400 MP2 1 2 256/512 KiB A20 (sun7i), A23 (sun8i), A33, H3, R40 (sun8i), A64 (sun50i)
Mali-450 MP4 1 4 512 KiB H5 (sun50i)

Midgard

Name unified shader cores CPU Level 2 cache size Allwinner implementations
Mali-T720 MP2 2 512 KiB H6 (sun50i)
Mali-T760 MP2 2 512 KiB A63 (sun50i)

Bifrost

Name unified shader cores CPU Level 2 cache size Allwinner implementations
Mali-G31 MP2 2 ??? KiB H616, H313 (sun50i)

More information can be found on the ARM website.

Driver

Utgard (Mali-400 and Mali-450)

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:

Binary driver

Midgard (Mali T6xx, T7xx, T8xx) and Bifrost (G3x, G5x, G6x, G7x)

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).


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.

See also

References

External Links