Gallium3D
From Wikipedia, the free encyclopedia
Gallium3D is a software library for 3D graphics acceleration being developed by Tungsten Graphics, an engineering company with expertise in Linux and open-source graphics technologies. Gallium3D operates as a layer between the graphics API and the operating system with the primary goal of making driver development easier, bundling otherwise duplicated code of several different drivers at a single point. This is done by providing a better division of labour (for example, leaving memory management to the kernel DRI driver) and to support modern hardware architectures.
Gallium3D provides a unified API exposing standard hardware functions such as shader units found on modern hardware. Thus, 3D APIs such as OpenGL 1.x/2.x, OpenGL 3.x, OpenVG, GPGPU infrastructure or even Direct3D (as found in the Wine compatibility layer) will need only a single back-end, called state tracker, targeting Gallium3D API. By contrast Mesa 3D requires a different backend for each hardware platform, and several other APIs need translation to OpenGL at the expense of further overhead.[1][2][3] In addition, using the modular structure of Gallium3D, there are works underway to leverage the LLVM compiler suite and create a module to optimize shader code on the fly.[4]
Under Gallium3D, DRM (Direct Rendering Manager) kernel drivers will manage the memory, and DRI (Direct Rendering Interface) driver (now called DRI2) will be more GPU processing oriented. This will resolve memory management problems whose solutions are considered infeasible under Mesa 3D.[5]
Gallium3D represents each shader program using an extensible binary intermediate representation called Tungsten Graphics Shader Infrastructure (TGSI). When Gallium targets LLVM the TGSI code is converted to the LLVM instruction set.
[edit] Current status
The first implemented and already partially working drivers are Cell SPU and Intel GPU drivers. Work is done on ATI Radeon cards providing a skeleton driver[6], and the Nouveau team is moving development to Gallium3D, including a solution for older fixed function nVidia cards which lack programmable shaders.[7][8]
As of 13 July 2008[update], Nouveau development is done exclusively for the Gallium framework. The old DRI driver was removed from the master branch of the mesa repository on Freedesktop.org.[9]
On 11 February 2009, the gallium-0.2 branch was merged into mainline Master branch of Mesa.[10] Development is done in Mesa mainline.
On 1 May 2009, Zack Rusin from Tungsten Graphics added OpenVG state tracker to Mesa 3D[11], which enables SVG vector graphics to be hardware-accelerated by any Gallium3D-based driver.
[edit] External links
- Mesa 3D official page
- Gallium3D Tungstengraphics page
- Functional diagrams of Gallium3D
- Gallium-0.1 branch git repository on Freedesktop cgit.
- Gallium-0.2 branch git repository on Freedesktop cgit.
- An article on Gallium3D by Zack Rusin
- LWN article
- Presentation about Gallium3D (video from Akademy 2008)
- BitBlit.org: Generic GPU-Accelerated Video Decoding (GSoC project using Gallium)
- Low Level Virtual Machine (Dynamic recompiler backend used by Gallium)
- Gallium3D - Graphics Done Right Zack Rusin. Presentation at AKademy 2008
[edit] References
- ^ "TG-Gallium3D". Tungsten Graphics. http://www.tungstengraphics.com/technologies/gallium3d.html. Retrieved on 2008-04-01.
- ^ zrusin. "GPGPU". http://zrusin.blogspot.com/2008/02/gpgpu.html. Retrieved on 2008-04-01.
- ^ zrusin. "OpenVG and accelerating 2D". http://zrusin.blogspot.com/2008/02/openvg-and-accelerating-2d.html. Retrieved on 2008-04-01.
- ^ zrusin. "Gallium3D LLVM". http://zrusin.blogspot.com/2007/11/gallium3d-llvm.html. Retrieved on 2008-04-01.
- ^ "DRI2". http://wiki.x.org/wiki/DRI2. Retrieved on 2008-04-01.
- ^ Michael Larabel. "Gallium3D Status Update Q1'08". Phoronix. 2. http://www.phoronix.com/scan.php?page=article&item=gallium3d_update&num=2. Retrieved on 2008-04-01.
- ^ "Nouveau Companion 36". http://nouveau.freedesktop.org/wiki/Nouveau_Companion_36. Retrieved on 2008-04-01.
- ^ "Nouveau Companion 37". http://nouveau.freedesktop.org/wiki/Nouveau_Companion_37. Retrieved on 2008-04-01.
- ^ "nouveau: say goodbye to the old DRI driver... (cgit on FDO)". http://cgit.freedesktop.org/mesa/mesa/commit/?id=93115c4b235896df097b91edec7458a8a4488c4e.
- ^ "Gallium3D Now In Mainline Mesa Code-Base!". http://www.phoronix.com/scan.php?page=news_item&px=NzA1Ng.
- ^ "OpenVG state tracker is in Mesa 3D". http://sourceforge.net/mailarchive/forum.php?thread_name=200905011303.10970.zackr@vmware.com&forum_name=mesa3d-dev.

