Zum Inhalt springen

Mesa 3D

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. März 2018 um 21:30 Uhr durch 2a02:810b:c53f:b9e8:d54b:b274:9d38:538c (Diskussion) (Softwarestufen der Mesa-API mit Bugfixes). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Mesa 3D

Basisdaten

Hauptentwickler VMware (bisher Tungsten Graphics)[1]
Entwickler Brian Paul
Erscheinungsjahr Februar 1995[2]
Aktuelle Version 25.1.5[3]
(2. Juli 2025)
Aktuelle Vorabversion 18.0.0-rc5[4]
(21. März 2018)
Betriebssystem Unix-ähnlich, BSD, Linux
Programmier­sprache C, Assembler[5]
Kategorie Grafikbibliothek
Lizenz MIT-Lizenz
mesa3d.org
Mesa DRI und Gallium3D haben unterschiedliche Modelle für Gerätetreiber; beide teilen allerdings große Mengen an freiem Quelltext
Darstellung des Linux-Grafikstacks

Mesa 3D ist eine freie Grafikbibliothek, die die OpenGL-Spezifikation umsetzt und auf vielen Betriebssystemen wie Linux, AmigaOS3, AmigaOS4, SkyOS, Haiku, ZETA und BSD genutzt wird, um OpenGL-Funktionalität zu implementieren. Hardwarebeschleunigte 3D-Grafik ist durch die Kombination mit der Direct Rendering Infrastructure möglich. Die Quellen der Mesa-Bibliothek stehen unter der MIT-Lizenz.

Geschichte

Im August 1993 begann Brian Paul mit der Entwicklung einer Grafikbibliothek, die zu der damals neuen OpenGL-Programmierschnittstelle kompatibel sein sollte. Im November 1994 erhielt er die Genehmigung von SGI, Mesa zu veröffentlichen, und im Februar 1995 erschien Mesa 1.0. OpenGL war bis zu diesem Zeitpunkt noch nicht weitreichend verfügbar, und viele Entwickler kamen durch Mesa mit OpenGL in Kontakt. Im Oktober 1996 erschien Mesa 2.0, welches OpenGL 1.1 unterstützte. Die Version 2.2, die im März 1998 erschien, unterstützt die Hardwarebeschleunigung via 3dfx-Glide.

Die am 22. Juni 2007 veröffentlichte Version 7.0 unterstützt erstmals OpenGL 2.1.

Mit der Veröffentlichung der Version 8.0 am 9. Februar 2012 wird die OpenGL-3.0-Spezifikation unterstützt.[6] Mit der Version 9.0 am 8. Oktober 2012 kam die Unterstützung für OpenGL 3.1 hinzu.[7] Ab der Version 10.0 aus dem Jahr 2013 wird OpenGL 3.3 unterstützt.[8]

Mesa 11.x enthält alle Erweiterungen bis OpenGL 4.1 vollständig sowie den Großteil von OpenGL 4.2 bis 4.5.[9]

Seit Mesa 12 implementieren die Treiber für neuere AMD-, Nvidia und Intel-Grafikchips OpenGL 4.3 vollständig. Bis auf eine Erweiterung aus OpenGL 4.4 unterstützt der Intel-Treiber sogar bereits alles für OpenGL 4.5.[10] Zusätzlich enthält Mesa 12 einen Vulkan-Treiber für Intel-Chips ab der Ivy-Bridge-Generation.

Dazu unterstützt offiziell ab Mesa 12 ein neuer Software-Treiber für CPU-Cluster mit Namen „OpenSWR“ (Open Software Rasterizer) OpenGL 3.1+.[11] OpenSWR setzt auf LLVMpipe auf und skaliert dabei mit der Rechenleistung sehr gut und ist für große Datensätze gedacht wie sie in numerischen Simulationen vorkommen. Im Vergleich zu LLVMpipe wurden schon Beschleunigungen von Faktor 29 bis 51 erreicht mit Mesa 10.5.1 im Alpha-2-Status im Jahr 2015.[12] In Mesa wird er mit „GALLIUM_DRIVER=swr“ eingeschaltet.

Mit Mesa 13 wird OpenGL 4.4 und 4.5 eigentlich voll unterstützt. Intel ab Broadwell, AMD GCN und Nvidia Fermi und Kepler (Maxwell nur 4.1) unterstützen alle Features, werden jedoch teilweise wegen fehlender Zertifizierung noch mit 4.3 oder 4.4 (13.0.1) angezeigt.[13][14]

In Version 17.0 (neue Zählung[15]) gibt es einige Verbesserungen (siehe Mesamatrix). Für Intel steht bei Haswell OpenGL 4.5 (bisher 3.3, mit nur 3 fehlenden Modulen in 4.0 und 4.1) und fast komplett OpenGL ES 3.2 zur Verfügung.[16][17] Die Zertifizierung von OpenGL 4.4 für NVIDIA Fermi und Kepler, sowie 4.5 für AMD GCN steht nun auch hier zur Verfügung, nachdem dies in 13.0.x noch nicht geklappt hat. OpenGL 4.3 steht für NVIDIA Maxwell und Pascal (GM107+) am Start.[18] Jedoch nur Maxwell 1 (GeForce GTX 750 und andere mit GM1xx) profitiert von starken Gewinnen durch Erhöhung der Taktfrequenzen unter Last. Weiterhin leidet Maxwell 2 (GeForce 980 und andere mit GM2xx) unter dieser fehlenden Regelung so stark, dass nur 1/3 bis 1/2 der möglichen Leistung mit Mesa verfügbar ist.[19]

Khronos stellt seine CTS (test Suite) für OpenGL 4.4, 4.5 und OpenGL ES 3.0+ nun Open Source. Damit sind Tests nun kostenlos möglich auch für alle nicht kommerziellen Entwickler. Für Mesa 13 und 17 sind damit für einige Module wie Nouveau höhere OpenGL-Stufen möglich nach bestandenen Tests.[20]

Version 17.1.0 ist seit 10. Mai 2017 verfügbar mit einigen Verbesserungen wie OpenGL 4.2 für Intel Ivybridge (für Gen 7 bisher 3.3) und weiterer Beschleunigung für Nvidia Maxwell und Pascal, sowie für Vulkan mit verbessertem RADV und ANV.[21][22]

In Version 17.2 werden Intel und AMD zum Teil stark in 3D-Spielen beschleunigt. Dazu werden einige OpenGL 4.6-Module unterstützt. Für NVIDIA ist weiterhin Nouveau nur 2. Wahl mangels Informationen zur Beschleunigung, wie sie den originalen Treibern zur Verfügung stehen.[23] Die Tests zu OpenGL 4.5 waren für Kepler zu 98,6% erfolgreich.[24]

In Version 17.3 wurden einige Module für OpenGL 4.6 fertig, so daß in der nächsten Version mit Spir-V-Unterstützung 4.6 komplett würde. Deutliche Fortschritte beim Vulkan-Treiber für Radeon-Grafikkarten und endlich Support für eine wichtige Kompressionstechnik sind Highlights. Darüber hinaus gibt es viele Optimierungen bei den OpenGL-Treibern für die GPUs von AMD und Intel. RADV als Vulkan-Treiber für AMD erfüllt nun voll den Khronos-Test. Für NVIDIA ist weiterhin Nouveau nur 2. Wahl mangels Informationen zur Beschleunigung, wie sie den originalen Treibern zur Verfügung stehen. [25][26]

Softwarestufen der Mesa-API mit Bugfixes

OpenGL 1.2+ 3.5
OpenGL 1.3+ 4.0.4
OpenGL 1.4+ 5.0.2
OpenGL 1.5+ 6.0.1
OpenGL 2.1+ 6.5.3, 7.0.4, 7.4.4, 7.5.2, 7.6.1, 7.7.1, 7.8.2, 7.9.2, 7.10.3, 7.11.2
OpenGL 3.0+ (ES 2.0) 8.0.5
OpenGL 3.1+ (ES 2.0) 9.0.3, 9.1.7, 9.2.5
OpenGL 3.3+ (ES 3.0) 10.0.5, 10.1.6, 10.2.9, 10.3.7, 10.4.7, 10.5.9, 10.6.9
OpenGL 4.1+ (ES 3.0+) 11.0.9, 11.1.4, 11.2.2
OpenGL 4.3+ (ES 3.1+), Vulkan 1.0 12.0.6[27][28][29][30][31][32][33]
OpenGL 4.4+ (ES 3.2), Vulkan 1.0 13.0.6 (OpenGL 4.5 nicht zertifiziert)[34][35][36][37][38][39][40]
OpenGL 4.5+ (ES 3.2), Vulkan 1.0 17.0.7 (Juni 2017)[41][42][43][44][45][46][47][48]
OpenGL 4.5+ (ES 3.2), Vulkan 1.0 17.1.10 (September 2017)[49][50][51][52][53][54][55][56][57][58][59]
OpenGL 4.5+ (ES 3.2), Vulkan 1.0 17.2.8 (Dezember 2017, Ende Bugfix) [60][61][62][63][64][65][66][67][68]
OpenGL 4.5+ (ES 3.2), Vulkan 1.0 17.3.7 (März 2017, OpenGL 4.6 ohne Spir-V-Module, Bugfix bis 17.3.9 verlängert)[69][70][71][72][73][74][75][76]
OpenGL 4.5+ (ES 3.2+), Vulkan 1.0 18.0.0 (März 2018, OpenGL 4.6 ohne Spir-V)[77]

Die Zweige der jeweiligen Treiber unterstützen diese Stufen oft erst in späteren Versionen. Deshalb sollte möglichst eine aktuelle Version passend zum System und der Hardware installiert sein, um Limitierungen und Fehlern aus dem Weg zu gehen und um die Leistung zu maximieren. Beim Update von Mesa 12 auf 13 konnte die Leistung um bis zu 70 % gesteigert werden bei AMD Radeon RX 480 mit Ubuntu 16.10 und Linux 4.8.[78]

Aktuelle Grafikkarten sind oft durch fehlende Informationen wie zum Beispiel zum Powermanagement in ihrer Leistung limitiert. Später stehen diese oft erst Jahre nach Verkaufsende der Baureihe zur Verfügung. So ist eine NVIDIA GTX 680 (Kepler) bis zu 10-mal schneller in Mesa 12.0 als neuere Karten der eigentlich schnelleren Maxwell-Architektur.[79] Mit den Versionen 13 und 17 wurde Maxwell 1 stark beschleunigt.[80] Nun sind Maxwell 2 und auch Pascal gering in ihrer Leistung gegenüber dem Nvidia-Treiber und den Vorgängern wegen fehlender Daten.[81]

Mesa unterstützt ab Version 8 OpenGL ES 1.1 und 2.0 aufsetzend auf EGL 1.4.[82] Ab Mesa 11 sind EGL 1.5 und OpenGL ES 3.0 möglich. Mesa 12 unterstützt hier voll Version ES 3.0 und 3.1. Version 3.2 steht in Mesa 13.0 erstmals komplett zur Verfügung (siehe mesamatrix). Dazu werden optionale zusätzliche Funktionen für die einzelnen Stufen entwickelt aus dem Khronos-Baukasten neuer vorgeschlagener Module. In Android und anderen Systemen sind EGL und OpenGL ES wichtige Bestandteile der Grafiksoftware.

OpenCL

  • GalliumCompute (Clover)

Eine gemeinsame OpenCL-Plattform für alle wichtigen Plattformen mit GalliumCompute zu etablieren ist zur Zeit gescheitert. Die Entwicklung ist hier fast zum Stillstand gekommen gegenüber anderen Modulen in Mesa (früher Clover: OpenCL 1.0, 1.1 unvollständig, 1.2 ansatzweise für AMD GPU und insgesamt rudimentär für NVIDIA GPU). Es findet zumindest die Wartung statt, damit der bisherige Code weiterhin läuft.

  • AMD ROCm

Als Nachfolger des hinkenden GalliumCompute von Mesa hat AMD ROCm begonnen. OpenCL 2.0 Syntax und OpenCL 1.2 Runtime sind ROCm-Basis für aktuelle Hardware der CPU von Intel und AMD mit PCIe 3.0 und GPU mit AMD GCN ab der 3. Generation mit Hawaii, Fiji und Polaris. Später soll dieses SDK dann als Open Source nutzbar sein.[83][84]

  • Beignet (Intel China)

Intel China hat mit Beignet (aktuell Version 1.3.2) eine weitere Software für OpenCL (1.2, 2.0 ab Version 1.3.0 mit Skylake+) für Intel CPU mit eingebauter GPU ab Ivy Bridge abseits von Mesa implementiert.[85]

  • Nvidia

Für NVIDIA steht nur der Closed-Source-Treiber mit OpenCL 1.1 für Tesla und Fermi, sowie OpenCL 1.2 für Kepler, Maxwell und Pascal zur Verfügung. OpenCL 2.0 ist hier in der Entwicklung.[86]

  • Shamrock

Das Clover final bis 1.2 entwickelt werden kann, zeigt das Projekt Shamrock als Port von Mesa Clover für ARM mit vollem Support von OpenCL 1.2 seit Juli 2016.[87][88]

In Zukunft soll OpenCL als OpenCL-V ein Teil von Vulkan werden laut Khronos.[89] Damit würden die Treiber von Vulkan ANV für Intel und RADV für AMD auch OpenCL ausführen. Weil Vulkan eine Weiterentwicklung von AMD Mantle und dieses ein OpenCL mit Graphik-Schicht ist, stehen die Chancen einer erfolgreichen Weiterentwicklung mit ähnlicher Performance wie dem jetzigen OpenCL gut. 2017 waren die Fortschritte in Clover in Richtung OpenCL 1.2 und anderen OpenSource-Projekten in Richtung OpenCL 2.x gering. [90]

Softwarearchitektur

Implementierte APIs

Das Mesa 3D-Projekt beinhaltet und pflegt auch Implementierungen von diversen Programmierschnittstellen für die Hardware-beschleunigte Rasterung:

  • OpenGL (voll unterstützt bis zu 4.5, 4.6 und weitere Zusätze in Arbeit)
  • OpenGL ES (voll unterstützt bis zu 3.2, weitere Zusätze in Arbeit)
  • GLX (voll unterstützt bis zu 1.4)
  • EGL (voll unterstützt bis zu 1.5)
  • OpenVG (1.1, ab Version 10.6 nicht mehr vorhanden)
  • Glide (überholt)
  • Vulkan (1.0: Intel ANV ab Version 12, AMD mit RADV ab Version 13)[91]
  • OpenCL (1.0, 1.1 und rudimentär 1.2 in aktuell sehr langsamer Entwicklung in GalliumCompute)[92][93]

Das ebenfalls unter einer freien Lizenz entwickelte Wine-Projekt beinhaltet eine Implementierung von Microsofts Direct3D Version 9c. Diese kann entweder unter Zuhilfenahme einer Übersetzung von Direct3D-Calls auf OpenGL-Calls genutzt werden, oder aber seit der Veröffentlichung des Gallium3D-State-Trackers auch für Direct3D 9c direkt.

Siehe auch

Einzelnachweise

  1. VMware's year end acquisition of Tungsten Graphics (englisch) – Artikel bei InfoWorld, vom 16. Dezember 2008
  2. Project History. (abgerufen am 11. März 2021).
  3. [ANNOUNCE] mesa 25.1.5. 2. Juli 2025 (abgerufen am 3. Juli 2025).
  4. cgit.freedesktop.org. (abgerufen am 22. März 2018).
  5. Mesa Languages Page (englisch) – Seite bei Open Hub; Stand: 20. Mai 2015
  6. Mesa 8.0 Release Notes (englisch)
  7. Mesa 9.0 Release Notes (englisch)
  8. Mesa 10.0 Release Notes (englisch)
  9. Mesa 11.2.2 Release Notes (englisch)
  10. glxinfo
  11. Mesamatrix
  12. Paraview and OpenSWR
  13. https://www.heise.de/newsticker/meldung/Grafikbibliothek-Mesa-13-0-Quelloffene-Linux-Treiber-unterstuetzen-jetzt-OpenGL-4-5-so-halb-3379983.html
  14. https://lists.freedesktop.org/archives/mesa-dev/2016-November/133978.html
  15. https://cgit.freedesktop.org/mesa/mesa/commit/?id=5b4aeb331a41f1a224f26adc4834bf1a2c9b5ac6
  16. https://cgit.freedesktop.org/mesa/mesa/commit/?id=75968a668e44b3fd7c9b9277937c005366fca116
  17. https://cgit.freedesktop.org/mesa/mesa/commit/?id=d2590eb65ff28a9cbd592353d15d7e6cbd2c6fc6
  18. https://cgit.freedesktop.org/mesa/mesa/commit/?id=f0997e2aa8b5628a8cccbd5adf9b22a053c6be54
  19. http://www.phoronix.com/scan.php?page=article&item=nouveau-maxwell-pipeline&num=1
  20. http://www.phoronix.com/scan.php?page=news_item&px=OpenGL-CTS-Open-Source
  21. http://www.phoronix.com/scan.php?page=news_item&px=Mesa-17.1-Branching-Today
  22. https://www.heise.de/ct/artikel/Mesa-17-1-Neue-Grafiktreibersammlung-steigert-3D-Performance-von-Linux-3706515.html
  23. https://www.heise.de/ct/artikel/Mesa-17-2-Weiterer-Performance-Schub-fuer-3D-Treiber-von-Linux-3802359.html
  24. https://www.x.org/wiki/Events/XDC2017/herbst_peres_nouveau.pdf
  25. https://www.mesa3d.org/relnotes/17.3.0.html
  26. https://www.heise.de/ct/artikel/Mesa-17-3-Performance-Optimierungen-bei-den-3D-Treibern-fuer-Linux-3887405.html
  27. https://www.mesa3d.org/relnotes/12.0.0.html
  28. https://www.mesa3d.org/relnotes/12.0.1.html
  29. https://www.mesa3d.org/relnotes/12.0.2.html
  30. https://www.mesa3d.org/relnotes/12.0.3.html
  31. https://www.mesa3d.org/relnotes/12.0.4.html
  32. https://www.mesa3d.org/relnotes/12.0.5.html
  33. https://www.mesa3d.org/relnotes/12.0.6.html
  34. https://www.mesa3d.org/relnotes/13.0.0.html
  35. https://www.mesa3d.org/relnotes/13.0.1.html
  36. https://www.mesa3d.org/relnotes/13.0.2.html
  37. https://www.mesa3d.org/relnotes/13.0.3.html
  38. https://www.mesa3d.org/relnotes/13.0.4.html
  39. https://www.mesa3d.org/relnotes/13.0.5.html
  40. https://www.mesa3d.org/relnotes/13.0.6.html
  41. https://www.mesa3d.org/relnotes/17.0.0.html
  42. https://www.mesa3d.org/relnotes/17.0.1.html
  43. https://www.mesa3d.org/relnotes/17.0.2.html
  44. https://www.mesa3d.org/relnotes/17.0.3.html
  45. https://www.mesa3d.org/relnotes/17.0.4.html
  46. https://www.mesa3d.org/relnotes/17.0.5.html
  47. https://www.mesa3d.org/relnotes/17.0.6.html
  48. https://www.mesa3d.org/relnotes/17.0.7.html
  49. https://www.mesa3d.org/relnotes/17.1.0.html
  50. https://www.mesa3d.org/relnotes/17.1.1.html
  51. https://www.mesa3d.org/relnotes/17.1.2.html
  52. https://www.mesa3d.org/relnotes/17.1.3.html
  53. https://www.mesa3d.org/relnotes/17.1.4.html
  54. https://www.mesa3d.org/relnotes/17.1.5.html
  55. https://www.mesa3d.org/relnotes/17.1.6.html
  56. https://www.mesa3d.org/relnotes/17.1.7.html
  57. https://www.mesa3d.org/relnotes/17.1.8.html
  58. https://www.mesa3d.org/relnotes/17.1.9.html
  59. https://www.mesa3d.org/relnotes/17.1.10.html
  60. https://www.mesa3d.org/relnotes/17.2.0.html
  61. https://www.mesa3d.org/relnotes/17.2.1.html
  62. https://www.mesa3d.org/relnotes/17.2.2.html
  63. https://www.mesa3d.org/relnotes/17.2.3.html
  64. https://www.mesa3d.org/relnotes/17.2.4.html
  65. https://www.mesa3d.org/relnotes/17.2.5.html
  66. https://www.mesa3d.org/relnotes/17.2.6.html
  67. https://www.mesa3d.org/relnotes/17.2.7.html
  68. https://www.mesa3d.org/relnotes/17.2.8.html
  69. https://www.mesa3d.org/relnotes/17.3.0.html
  70. https://www.mesa3d.org/relnotes/17.3.1.html
  71. https://www.mesa3d.org/relnotes/17.3.2.html
  72. https://www.mesa3d.org/relnotes/17.3.3.html
  73. https://www.mesa3d.org/relnotes/17.3.4.html
  74. https://mesa3d.org/relnotes/17.3.5.html
  75. https://mesa3d.org/relnotes/17.3.6.html
  76. https://www.mesa3d.org/relnotes/17.3.7.html
  77. https://www.mesa3d.org/release-calendar.html#calendar
  78. http://www.phoronix.com/scan.php?page=article&item=rx480-mesa-1610&num=2
  79. Nouveau Kepler vs. Maxwell Performance On Linux 4.6 + Mesa 11.3-dev
  80. http://www.phoronix.com/scan.php?page=article&item=nouveau-maxwell-pipeline&num=1
  81. http://www.phoronix.com/scan.php?page=article&item=nouveau-maxwell-comp&num=1
  82. https://www.mesa3d.org/opengles.html
  83. https://github.com/RadeonOpenCompute/ROCm
  84. https://streamhpc.com/blog/2017-05-03/amd-rocm-1-5-linux-driver-stack-is-out/
  85. https://cgit.freedesktop.org/beignet/
  86. https://streamcomputing.eu/blog/2017-02-22/nvidia-enables-opencl-2-0-beta-support/
  87. About Shamrock. In: Git.Linaro.org.
  88. T. Gall, G. Pitney: LCA14-412: GPGPU on ARM SoC. (PDF) In: Amazon Web Services. 6. März 2014, abgerufen am 22. Januar 2017.
  89. https://www.pcper.com/reviews/General-Tech/Breaking-OpenCL-Merging-Roadmap-Vulkan
  90. https://www.x.org/wiki/Events/XDC2017/Stellard_GPGPU.pdf
  91. http://www.golem.de/news/linux-grafik-mesa-13-0-bringt-freien-vulkan-treiber-fuer-amd-gpus-1611-124201.html
  92. https://dri.freedesktop.org/wiki/GalliumCompute/
  93. https://www.x.org/wiki/Events/XDC2013/XDC2013TomStellardCloverStatus/XDC2013TomStellardCloverStatus.pdf