Media IP cores

= Video and graphics acceleration relationships =

2D Acceleration (G2D)

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

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

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