Video and graphics acceleration relationships
Each of the following IP cores
is dedicated to its special usecase and works separately from each other!
2D Acceleration (G2D)
||Not available in mainline kernel
- Hardware: 2D graphics acceleration is done by the mixer processor (G2D). It can do hardware accelerated operations, such as blitting, rotating, alpha blending, scaling, mirroring and color conversion. It is only available on some SoC variants (A10/A20/?)
- Software: G2D acceleration is provided via the (legacy/3.4-only) kernel driver, which makes the mixer processor accessible from userspace via ioctl.
3D Acceleration (Mali)
||Not available in mainline kernel - only out-of-tree driver possible
- Hardware: 3D graphics acceleration is done by ARM's Mali-400/450 through the OpenGL/ES 1.1/2.0 API.
- Software: To use OpenGL/ES, you need a mali kernel driver (GPLv2) and a corresponding userspace library (closed source).
(According to the datasheet, Mali can provide 2D vector graphics acceleration through the OpenVG API. Atm, there is no userspace library known/ available, to use this feature.)
Video Acceleration (Video decoding/ encoding)
||Not available in mainline kernel - mainlining effort started
- Hardware: Hardware accelerated video de-/encoding is done by the VE (Video Engine) aka VPU (Video Processing Unit) in hardware.
- Software: The VE can be used via direct register access using libvdpau-sunxi which is a (proof-of-concept) result of the Cedrus project. This is completely open source code.
A V4L2 kernel driver has already been started, to bring the results of the reverse engineering effort in a mainlineable state.