Gallium3D

Gallium3D
Developer(s) VMware (previously Tungsten Graphics)[1]
Preview release 0.4[2] / April 24, 2010; 21 months ago (2010-04-24)
Written in C
Operating system Cross-platform
Type Graphics library
License MIT License

Gallium3D is a free software library for 3D graphics device drivers being developed by VMware, after they acquired Tungsten Graphics[1] – the original authors.

The Gallium3D library 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, and to support modern hardware architectures. This is done by providing a better division of labor, for example, leaving memory management to the kernel DRI driver.

Gallium3D has been a part of Mesa since 2009[3] and is currently used by the free and open source graphics driver for Nvidia (nouveau project),[4][5] ATI Radeon R300-R900[6][7][8] and partially for Intel IGP driver too.[9]

Contents

Differences from Mesa 3D

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 front-end, called a state tracker, targeting the Gallium3D API. By contrast, Mesa 3D requires a different back-end for each hardware platform and several other APIs need translation to OpenGL at the expense of added overhead.[10][11][12]

Under Gallium3D, Direct Rendering Manager (DRM) kernel drivers will manage the memory and Direct Rendering Interface (DRI2) drivers will be more GPU processing oriented. This will resolve memory management problems whose solutions are considered unfeasible under Mesa 3D.[13]

LLVM usage

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.[14]

The library 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.

Current status

The first implemented and already partially working drivers are Cell SPU and Intel GPU drivers. The r300g driver for ati r300-r500 cards is considered stable at this time. Work is currently in progress for ATI Radeon r600-r700, Evergreen and Northern Islands cards to provide gallium support.[15] and the Nouveau team is moving development to Gallium3D, including a solution for older fixed function NVIDIA cards which lack programmable shaders.[5][16]

Gallium3D is designed to be platform-independent.[17] As of February 2009, Gallium3D can run on Linux as well as FreeBSD kernels.[18]

On 11 February 2009, the gallium-0.2 branch was merged into mainline Master branch of Mesa.[19] Development is done in Mesa mainline.

On 1 May 2009, Zack Rusin from Tungsten Graphics added the OpenVG state tracker to Mesa 3D,[20] which enables Scalable Vector Graphics to be hardware-accelerated by any Gallium3D-based driver.

As of 13 July 2008 (2008 -07-13), 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.[21]

The first Mesa3D release including Gallium3D was version 7.5 on 17 July 2009.[22]

As of 21 September 2010 (2010 -09-21), There are two Gallium3D drivers for ATI hardware known as r300g and r600g for R100-R500 and R600-Evergreen GPUs respectively. Initial support for the Evergreen GPUs was added to the r600g driver on 2010-09-10.[23]

On 21 September 2010, major commits were made to the code to support Direct3D 10 and 11.[24] In time, this might offer the ability to use recent Direct3D implementations on GNU/Linux systems.

At November 2011, Intel 965g and Cell gallium drivers were removed from the master branch of Mesa as unmaintained and broken. [25] [26]

References

  1. ^ a b David Marshall (2008-12-16). "VMware's year end acquisition of Tungsten Graphics". InfoWorld. http://www.infoworld.com/d/virtualization/vmwares-year-end-acquisition-tungsten-graphics-196. 
  2. ^ cgit.freedesktop.org Build configuration file – Gallium documentation
  3. ^ "Gallium3D Now In Mainline Mesa Code-Base!". Phoronix. 2009-02-11. http://www.phoronix.com/scan.php?page=news_item&px=NzA1Ng. Retrieved 2010-10-26. 
  4. ^ "The state of Nouveau, part 2". LWN.net. 2008-02-26. http://lwn.net/Articles/270830/. Retrieved 2008-03-07. 
  5. ^ a b "Nouveau Companion 36". 2008-03-07. http://nouveau.freedesktop.org/wiki/Nouveau_Companion_36. Retrieved 2008-04-01. 
  6. ^ "ATI R300 Gallium3D DRI Support Is "Done"". Phoronix. 2009-11-09. http://www.phoronix.com/scan.php?page=news_item&px=NzY4Ng. Retrieved 2010-11-15. 
  7. ^ "Radeon "R600g" Gallium3D Driver Merged To [Mesa] Master". Phoronix. 2010-05-27. http://www.phoronix.com/scan.php?page=news_item&px=ODI5NQ. Retrieved 2010-10-26. 
  8. ^ "X.Org Wiki GalliumStatus". Xorg. 2010-09-22. http://wiki.x.org/wiki/GalliumStatus. Retrieved 2010-12-07. 
  9. ^ "Intel & The Shortcomings Of Gallium3D". Phoronix. 2010-04-13. http://www.phoronix.com/scan.php?page=news_item&px=ODE0OQ. Retrieved 2010-10-26. 
  10. ^ "TG-Gallium3D". Tungsten Graphics. http://www.tungstengraphics.com/technologies/gallium3d.html. Retrieved 2008-04-01. 
  11. ^ zrusin (2008-02-06). "GPGPU". http://zrusin.blogspot.com/2008/02/gpgpu.html. Retrieved 2008-04-01. 
  12. ^ zrusin (2008-02-07). "OpenVG and accelerating 2D". http://zrusin.blogspot.com/2008/02/openvg-and-accelerating-2d.html. Retrieved 2008-04-01. 
  13. ^ "DRI2". 2007-10-04. http://wiki.x.org/wiki/DRI2. Retrieved 2008-04-01. 
  14. ^ zrusin (2007-11-02). "Gallium3D LLVM". http://zrusin.blogspot.com/2007/11/gallium3d-llvm.html. Retrieved 2008-04-01. 
  15. ^ Michael Larabel (2010-10-28). "AMD's R300 Gallium3D Driver Is Looking Good For 2011". Phoronix. p. 1. http://www.phoronix.com/scan.php?page=article&item=mesa_r300g_oct10&num=1. Retrieved 2011-01-07. 
  16. ^ "Nouveau Companion 37". 2008-03-21. http://nouveau.freedesktop.org/wiki/Nouveau_Companion_37. Retrieved 2008-04-01. 
  17. ^ José Fonseca (2008-04-27), Gallium3D: Introduction, http://jrfonseca.blogspot.com/2008/04/gallium3d-introduction.html 
  18. ^ Michael Larabel (2009-02-25). "Gallium3D, EGL Now Buildable On FreeBSD". Phoronix. http://www.phoronix.com/scan.php?page=news_item&px=NzA5Mg. 
  19. ^ "Gallium3D Now In Mainline Mesa Code-Base!". 2009-02-11. http://www.phoronix.com/scan.php?page=news_item&px=NzA1Ng. 
  20. ^ "OpenVG state tracker is in Mesa 3D". 2009-05-01. http://sourceforge.net/mailarchive/forum.php?thread_name=200905011303.10970.zackr@vmware.com&forum_name=mesa3d-dev. 
  21. ^ "nouveau: say goodbye to the old DRI driver... (cgit on FDO)". 2008-07-13. http://cgit.freedesktop.org/mesa/mesa/commit/?id=93115c4b235896df097b91edec7458a8a4488c4e. 
  22. ^ "Mesa 7.5 Release Notes / 17 July 2009". 2009-07-17. http://www.mesa3d.org/relnotes-7.5.html. 
  23. ^ "r600g: add initial evergreen support (cgit on FDO)". 2010-09-10. http://cgit.freedesktop.org/mesa/mesa/commit/?id=50526e094f4c66957c7f74c190c35903bc82fb62. 
  24. ^ "d3d1x: add new Direct3D 10/11 COM state tracker for Gallium". 2010-09-21. http://cgit.freedesktop.org/mesa/mesa/commit/?id=92617aeac109481258f0c3863d09c1b8903d438b. 
  25. ^ Michael Larabel (2011-11-30). "The Gallium3D Intel 965 Driver Gets Dropped". Phoronix. p. 1. http://www.phoronix.com/scan.php?page=news_item&px=MTAyMTA. Retrieved 2011-12-01. 
  26. ^ Michael Larabel (2011-11-30). "The Gallium3D Cell Driver Gets Dropped Too". Phoronix. p. 1. http://www.phoronix.com/scan.php?page=news_item&px=MTAyMTM. Retrieved 2011-12-01. 

External links