Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Mesa (computer graphics)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Overview == [[File:Linux kernel and OpenGL video games.svg|thumb|300px|[[Video games]] outsource rendering calculations to the [[GPU]] over [[OpenGL]] in real-time. Shaders are written in [[OpenGL Shading Language]] or [[SPIR-V]] and compiled on the CPU. The compiled programs are executed on the GPU.]] [[File:Linux Graphics Stack 2013.svg|thumb|300px|Illustration of the [[Linux]] graphics stack: [[Direct Rendering Manager|DRM]] & libDRM, '''Mesa 3D'''. [[Display server]] belongs to the [[windowing system]] and is not necessary e.g. for gaming.]] === Implementations of rendering APIs === [[File:The Linux Graphics Stack and glamor.svg|thumb|300px|The free implementations of [[Wayland (display server protocol)|Wayland]] rely upon the Mesa implementation of [[EGL (API)|EGL]]. The special library called '''libwayland-EGL''', written to accommodate access to the [[framebuffer]], should have been made obsolete by the EGL 1.5 release. On the [[Game Developers Conference|GDC 2014]], AMD was exploring a strategy change towards using DRM instead of their in-kernel blob.<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=article&item=amd_catalyst_kernel&num=1 |title=AMD exploring new Linux driver Strategy |date=22 March 2014 |access-date=23 March 2014}}</ref>]] [[File:Glxinfo with glxgears screenshot.png|thumb|300px|Screenshot of <code>glxinfo</code>, showing information of Mesa implementation of OpenGL on a system and <code>glxgears</code>, a program to test OpenGL implementation on a system.]] Mesa is known as housing implementations of graphic [[API]]s. Historically the main API that Mesa has implemented is [[OpenGL]], along with other [[Khronos Group]] related specifications (like [[OpenVG]], [[OpenGL ES]] or recently [[EGL (API)|EGL]]). But Mesa can implement other APIs and indeed it did with [[Glide API|Glide]] (deprecated) and [[Direct3D]] 9 since July 2013.<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=MTQxMjk|title=Direct3D 9 Support Released For Linux Via Gallium3D, Running Games - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> Mesa is also not specific to Unix-like operating systems: on Windows for example, Mesa provides an OpenGL API over DirectX. Mesa implements a translation layer between a graphics API such as OpenGL and the graphics hardware drivers in the operating system kernel. The supported version of the different graphic APIs depends on the driver, because each hardware driver has its own implementation (and therefore status). This is especially true for the "classic" drivers, while the Gallium3D drivers share common code that tend to homogenize the supported extensions and versions. Mesa maintains a support matrix with the status of the current OpenGL conformance<ref>{{cite web|url=https://cgit.freedesktop.org/mesa/mesa/tree/docs/features.txt|title=mesa/mesa - The Mesa 3D Graphics Library|access-date=2 November 2016}}</ref><ref>{{cite web|url=https://mesamatrix.net/|title=The OpenGL vs Mesa matrix|date=25 March 2015|access-date=29 March 2015}}</ref> visualized at {{URL|https://mesamatrix.net/}}. Mesa 10 complies with OpenGL 3.3 for Intel, AMD/ATI, and Nvidia GPU hardware. Mesa 11 was announced with some drivers being OpenGL 4.1 compliant.<ref>{{cite web |url=http://phoronix.com/scan.php?page=news_item&px=Mesa-11.0-Branched-RC1 |title=Mesa 11.0 Has Been Branched, The Release March Begins |date=22 August 2015 |access-date=22 August 2015}}</ref> Mesa 12 contains OpenGL 4.2 and 4.3 and Intel Vulkan 1.0 support. Mesa 13 brought Intel support for OpenGL 4.4 and 4.5 (all Features supported for Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), but no Khronos-Test for 4.5-Label) and experimental AMD Vulkan 1.0 support through the community driver RADV. OpenGL ES 3.2 is possible with Intel Skylake (Gen9).<ref name=":0" /> 1st stable version of 2017 is 17.0 (new year Counting).<ref name="phoronix20170213"/><ref>{{cite web|url=https://cgit.freedesktop.org/mesa/mesa/commit/?id=5b4aeb331a41f1a224f26adc4834bf1a2c9b5ac6|title=mesa/mesa - The Mesa 3D Graphics Library|website=Cgit.freedesktop.org|access-date=1 August 2018}}</ref><ref>{{cite web|url=http://www.phoronix.com/scan.php?page=article&item=mesa-17-features&num=1|title=The Big Changes, Improvements of Mesa 17.0 - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> Ready features are certified OpenGL 4.5, OpenGL 4.5 for Intel Haswell,<ref>{{cite web|url=https://cgit.freedesktop.org/mesa/mesa/commit/?id=d2590eb65ff28a9cbd592353d15d7e6cbd2c6fc6|title=mesa/mesa - The Mesa 3D Graphics Library |website=Cgit.freedesktop.org|access-date=1 August 2018}}</ref><ref>{{cite web|url=https://www.x.org/wiki/Events/XDC2016/Program/xdc-2016-intel-fp64.pdf |title=Program |date=2016 |website=www.x.org }}</ref> OpenGL 4.3 for Nvidia Maxwell and Pascal (GM107+).<ref>{{cite web|url=https://cgit.freedesktop.org/mesa/mesa/commit/?id=f0997e2aa8b5628a8cccbd5adf9b22a053c6be54|title=mesa/mesa - The Mesa 3D Graphics Library |website=Cgit.freedesktop.org|access-date=1 August 2018}}</ref> Huge performance gain was measured with Maxwell 1 (GeForce GTX 750 Ti and more with GM1xx). Maxwell-2-Cards (GeForce GTX 980 and more with GM2xx) are underclocked without Nvidia information.<ref>{{cite web|url=http://www.phoronix.com/scan.php?page=article&item=nouveau-maxwell-pipeline&num=1|title=A Look at the Huge Performance Boosts With Nouveau Mesa 17.0-devel on Maxwell - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> The Khronos CTS test suite for OpenGL 4.4, 4.5 and OpenGL ES 3.0+ is in now (2017-01-24) Open Source and all tests for Mesa 13 and 17 are now possible without costs.<ref>{{cite web|url=http://www.phoronix.com/scan.php?page=news_item&px=OpenGL-CTS-Open-Source|title=Khronos Open-Sources OpenGL / OpenGL ES Conformance Tests - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> 2nd stable version of 2017, 17.1.0, came out on 10 May 2017 with some interesting improvements. OpenGL 4.2+ for Intel Ivy Bridge and OpenGL 3.3+ for Intel Open SWR Rasterizer are 2 of the highlights.<ref>{{cite web|url=http://www.phoronix.com/scan.php?page=article&item=mesa-171-features&num=1|title=The Grand Features of Mesa 17.1: Vega, RadeonSI Shader Cache, Maturing Vulkan, New OpenGL Extensions - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref><ref name="ReferenceA">{{cite web|url=https://www.mesa3d.org/relnotes/17.1.0.html|title=Mesa Release Notes|website=Mesa3d.org|access-date=1 August 2018}}</ref> Due to the modularized nature of OpenGL, Mesa can support extensions from newer versions of OpenGL without claiming full support for such versions. For example, in July 2016, Mesa supported OpenGL ES 3.1 but also all OpenGL ES 3.2 extensions except for five, as well as a number of extensions not part of any OpenGL or OpenGL ES version.<ref>{{cite web|url=https://mesamatrix.net/|title=The OpenGL vs Mesa matrix|website=mesamatrix.net|access-date=31 July 2016}}</ref> 3rd Version 17.2 is available since September 2017 with some new OpenGL 4.6 features and velocity improvements in 3D for Intel and AMD. Only 1.4% of Tests fail for OpenGL 4.5 in Nouveau for Kepler.<ref>{{cite web|url=https://www.x.org/wiki/Events/XDC2017/herbst_peres_nouveau.pdf |title=Event listing |website=www.x.org }}</ref> 4th Version 17.3 is ready since December 2017. Many improvements in many drivers are available. OpenGL 4.6 is nearly fully available (Spir-V is not ready). AMD Vulkan Driver RADV is now fully conformant in Khronos-Test.<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-173-features&num=1|title=Mesa 17.3 Features - Vulkan Updates, Better Performance - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> 1st version of 2018 is 18.0 and available since March 2018 by same scheme in 2017.<ref name=MESA3D>{{cite web|url=https://www.mesa3d.org/release-calendar.html#calendar|title=Release calendar|website=Mesa3d.org|access-date=1 August 2018}}</ref> Full OpenGL 4.6 support is not ready, but many features and improvements were successfully tested in RC3. 10-bit support for Intel i965 in Colors is also a Highlight.<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-180-features&num=1|title=Mesa 18.0 Features Include Many OpenGL/Vulkan Improvements, Intel Shader Cache & Extras - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> New is support for [[Intel Cannon Lake]] and [[AMD Vega]] with actual Linux Version. AMD Evergreen Chips (RV800 or R900) are near OpenGL 4.5 support. Old AMD R600 or RV700 Chips can only support OpenGL 3.3 with some features of OpenGL 4.x. Freedreno is the Driver for Adreno Hardware and near OpenGL 3.3 support. 2nd version of 2018 is 18.1 and available since May. Target is Vulkan 1.1.72 in Intel ANV and AMD RADV driver. OpenGL 4.6 with spir-V is also main target. Permanent work is possible completion of Features and Optimization of drivers for older hardware like AMD R600/Evergreen, Nvidia Tesla and before, Fermi, Kepler or Intel Sandybridge, Ivybridge, Haswell or Broadwell. ARM Architecture made also great improvements in Adreno 3xx/4xx/5xx and Broadwell VC4/VC5 for Raspi with main target OpenGL ES. 3rd version of 2018 is 18.2 and available in calendar stable in September. OpenGL 4.6 with spir-V and Vulkan 1.1.80 are in WIP. The soft Driver for virtual machines VIRGL is ready for OpenGL 4.3 and OpenGL ES 3.2. RadeonSI is also ready for OpenGL ES 3.2. ASTC Texture Compression Support and Compatibility Modus Support for OpenGL 4.4 (3.1 in 18.1) are other highlights in RadeonSI for AMD GCN Cards. New Vulkan 1.1 and more features for Intel and AMD are available. See more Details for Vulkan in Mesamatrix.<ref name="phoronix.com">{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-18.2-Feature-Release|title=Mesa 18.2 Is Releasing Soon With Many OpenGL / Vulkan Driver Improvements - Phoronix|website=www.phoronix.com}}</ref> 4th version of 2018 is 18.3 and released as stable Version 18.3.1 in December 2018. Many features in Detail and support of newer hardware are main parts. Full support of OpenGL 4.6 is not ready.<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-18.3-Features|title=The Shiny New Features of Mesa 18.3 For Open-Source Intel / Radeon Graphics Drivers - Phoronix|website=www.phoronix.com}}</ref><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-2018-Highlights|title=Mesa Made Massive Progress In 2018 On Open-Source Vulkan / OpenGL Drivers - Phoronix|website=www.phoronix.com}}</ref> 1st Version of 2019 is 19.0 and was now released at March. Full support of OpenGL 4.6 is not ready, but many improvements on this way are in all drivers.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.0-Features-Queue|title = The New Features on Deck for Mesa 19.0: Vulkan Additions, FreeSync, Soft FP64 & More - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa190-rad-jan&num=1|title = Mesa 18.2 vs. 18.3 vs. 19.0 January Benchmarks for RadeonSI/RADV - Phoronix}}</ref> 2nd Version of 2019 is 19.1. Transition of TGSI to NIR is here one main Feature on way to OpenGL 4.6 with Spir-V and more OpenCL. RadeonSI runs well in dev-Version with NIR.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=radeonsi-nir-2019&num=1|title=Running the RadeonSI NIR Back-End with Mesa 19.1 Git - Phoronix}}</ref> 3rd Version of 2019 is 19.2. OpenGL 4.6 is Beta ready for new Intel Iris Driver.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Iris-GLSL-460-Compatibility|title = Intel's Iris Gallium3D Driver Now Has Better OpenGL Compatibility Profile Support - Phoronix}}</ref> 4th Version of 2019 is 19.3. OpenGL 4.6 is ready for Intel i965 and optional for new Iris Driver.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-193-features|title=Mesa 19.3 is Introducing a Lot of Open-Source OpenGL + Vulkan Driver Improvements - Phoronix}}</ref> First Version of 2020 is 20.0. Vulkan 1.2 is ready for AMD RADV and Intel ANV. Intel Iris is default for Intel Broadwell Gen 8+.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-rc1-Released|title = Mesa 20.0-rc1 Released with Intel Gallium3D Default, OpenGL 4.6 for RadeonSI, Vulkan 1.2 - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-Released|title = Mesa 20.0 Released with Big Improvements for Intel, AMD Radeon Vulkan/OpenGL - Phoronix}}</ref> RadeonSI driver switched to using NIR by default, instead of TGSI. 2nd Version of 2020 is 20.1. Many improvements are ready in many drivers. Zink is a new virtual driver for OpenGL over Vulkan.<ref name="ReferenceB">{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.1-Features|title = Mesa 20.1 Features Include Big Improvements for Open-Source Intel, Radeon Graphics Drivers - Phoronix}}</ref> 3rd Version of 2020 is 20.2. OpenGL 3.0 for Zink is one new feature. LLVMpipe will support OpenGL 4.3+ (4.5+ in 20.3). ARM Panfrost is mostly improved with many modules. Shared virtual memory is possible for OpenCL in Nouveau with Pascal and higher.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.0-Over-Vulkan|title = Zink is Now OpenGL 3.0 Complete for Generic GL over Vulkan - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-RC1-Features-Released|title = Mesa 20.2 Development Ends After Many New Features Land - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-Nouveau-HMM|title = Mesa 20.2's Nouveau Enables HMM, OpenCL SVM Now Supported - Phoronix}}</ref> 4th Version of 2020 is 20.3. v3d and v3dv are new drivers for OpenGL and Vulkan 1.0 with Broadcom hardware like Raspberry Pi 4. OpenCL 1.2 is full supported in clover module. Zink support OpenGL 3.3+. LLVMpipe virtual driver support now OpenGL 4.5+ with 4.6 in view. Lavapipe (originally called Vallium<ref>{{Cite web |url=https://www.phoronix.com/news/Mesa-Vulkan-Lavapipe |title=Mesa's Vulkan Software Implementation Now Known as Lavapipe |work=[[Phoronix]]}}</ref>) as Vulkan Tree of LLVMpipe is merged.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=V3DV-Mesa-Upstream-Plans|title = V3DV Developers Lay Out Plans for Upstreaming the Raspberry Pi 4 Vulkan Driver in Mesa - Phoronix}}</ref><ref name="ReferenceC">{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover|title = OpenCL 1.2 Support Merged for Mesa's Gallium3D Clover While OpenCL 3.0 is Being Tackled - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.3-Mesa-20.3|title = Zink in Mesa 20.3 Now Hits OpenGL 3.3, Can Run Blender with This OpenGL-on-Vulkan - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=OpenGL-4.5-LLVMpipe-Lands|title = OpenGL 4.5 Now Enabled for LLVMpipe with Mesa 20.3, to be Back-Ported for 20.2 - Phoronix}}</ref><ref>{{Cite web |url=https://www.phoronix.com/news/Mesa-VALLIUM-Merged |title=VALLIUM Merged into Mesa 20.3 as Vulkan Front-End to Gallium3D |work=[[Phoronix]]}}</ref> In Mesa 21.0 d3d12 will be merged with OpenGL 3.0 to 3.3. Microsoft and Collabora develops new emulation d3d12 in WSL2 to Windows 10 with Direct 3D 12. OpenCL 1.2 is also target in d3d12. An acceleration of factor 2 to 5 is done in Benchmark SPECviewperf with improved OpenGL Code.<ref name="ReferenceD">{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-Direct3D-12-Gallium3D|title = Mesa 21.0 Merges Direct3D 12 Gallium3D Driver - Phoronix}}</ref><ref>https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf {{Webarchive|url=https://web.archive.org/web/20201030010819/https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf |date=30 October 2020 }} {{Bare URL PDF|date=March 2022}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Collabora-DirectX|title = Microsoft + Collabora Working to Map OpenGL/OpenCL over DirectX 12 - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-2-5x-Faster-SPECViewPerf|title=Mesa Now 2~5x Faster for SPECViewPerf Following OpenGL Optimizations - Phoronix}}</ref> Many Mesa 21.0 features improves performance.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-21-features&num=1|title = Mesa 21.0 Has Many New Features Especially for Radeon Open-Source Graphics - Phoronix}}</ref> New Release 21.0.0 is public since 11 March 2021. Mesa 21.1 is second release of year 2021.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.1-rc1-Released|title = Mesa 21.1-rc1 Released with RADV Optimizations, Faster Zink, Many Other New Features - Phoronix}}</ref> OpenGL 4.6+ and OpenGL ES 3.1+ is available for Zink. AMD Driver 600g can change to NIR with more possibilities for old Radeon HD 5000 and 6000 cards.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=search&q=Mesa%2021.1&popular|title = Mesa%2021.1 - Phoronix}}</ref> Qualcomm Turnip reaches Vulkan 1.1+ and software emulation Lavapipe Vulkan 1.1+. Google VirtIO GPU Driver Venus with Vulkan 1.2+ is merged in experimental state with low performance in mesa main tree.<ref name="ReferenceE">{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=VirtIO-GPU-Venus-Vulkan|title=Google's VirtIO-GPU "Venus" Vulkan Driver Merged into Mesa 21.1 - Phoronix}}</ref> Mesa 21.2 is third release of year 2021. Google Virtual Vulkan IO Driver Venus will be official introduced with full Vulkan 1.2+ support (more mesamatrix). ARM Panfrost: OpenGL ES 3.1+ Support is available and panVK is the new Vulkan Driver. Initial support started for ARM Apple M1 with new driver Asahi. 21.2 is available since 4 August 2021.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.2-Released|title=Mesa 21.2 Released with New Intel Crocus Driver, PanVK, Early M1 Code - Phoronix}}</ref> An old plan is to split old drivers in a classic tree with many advantages in programming, support, bug fixing for the modern gallium 3D part. One problem here is Intel i965 with support of Popular old hardware to Intel Haswell and before also with Windows 10 support.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=2021-Retire-Mesa-Classic-Main|title=Proposal Raised for Dropping Mesa's Classic OpenGL Drivers from Mainline This Year - Phoronix}}</ref> A new Gallium3D driver Crocus for Intel Gen 4 Graphics to Haswell is here in development to complete here the gallium3D area with possible split in the next time of year 2021. Crocus is optional available in 21.2.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Crocus-WIP-MR-Mesa|title = Crocus Gallium3D Nears Mainline Mesa for Gallium3D i965 Through Haswell Graphics - Phoronix}}</ref> Amber branch is for old drivers without Gallium 3D Functions like Radeon R200, intel i915 and 965 with actual version 21.3.9.<ref>{{cite web | url=https://docs.mesa3d.org/amber.html | title=Amber Branch β the Mesa 3D Graphics Library latest documentation }}</ref> In Version 22.0 Classic drivers are retired. Vulkan 1.3 is available for Intel Anvil and AMD RADV.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-22.0-rc1|title = Mesa 22.0-rc1 Released with Many Radeon & Intel Linux GPU Driver Features, Vulkan 1.3}}</ref> Microsoft introduces new driver βDozenβ for WSL 2 in early development stage as Vulkan over d3d12 in Mesa 22.1.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-Dozen-VLK-D3D12|title=Mesa's "Dozen" Close to Providing Vulkan over Direct3D 12}}</ref> RustiCL is available at 22.3 with official OpenCL 3.0 Conformance for Intel XE Graphics. Performance is equal and better to AMD ROCm with AMD 6700 XT Card.<ref>{{cite web | url=https://www.phoronix.com/news/Rusticl-OpenCL-3.0-Conformance | title=Mesa's Rusticl Achieves Official OpenCL 3.0 Conformance }}</ref><ref>{{cite web | url=https://www.phoronix.com/news/Rusticl-Outperformed-ROCm | title=Mesa's Rusticl OpenCL Implementation Can Outperform Radeon's ROCm Compute Stack }}</ref> A main development target of Mesa 23.0 was ray tracing for Vulkan.<ref>{{cite web | url=https://www.phoronix.com/news/Mesa-23.0-Branched | title=Mesa 23.0 Feature Development Ends with Many Vulkan Additions }}</ref><ref>{{cite web | url=https://www.phoronix.com/news/Mesa-23.0-Released | title=Mesa 23.0 Released with Many Changes for Open-Source Radeon & Intel Graphics Drivers }}</ref> Microsoft develops the Dozen driver for Vulkan in WSL. Vulkan 1.0+ with 80% 1.1 and 1.2 will be available in Mesa 23.2 after delay to 23.1 (See mesamatrix).<ref>{{cite web | url=https://www.phoronix.com/news/Microsoft-Dzn-Vulkan-1.2 | title=Microsoft's DZN Mesa Driver Already Hits Vulkan 1.2 }}</ref> RustiCL for AMD hardware is available in 23.1.<ref>{{cite web | url=https://www.phoronix.com/news/Mesa-23.1-Released | title=Mesa 23.1 Released with RadeonSI Rusticl-OpenCL, RADV GPL }}</ref> VirGL for virtual machines jumps in Mesa 23.2 to OpenGL 4.6.<ref>{{cite web | url=https://www.phoronix.com/news/Mesa-23.2-Virgl-OpenGL-4.6-VMs | title=Mesa 23.2 Virgl Lands Support for OpenGL 4.6 Inside Virtual Machines }}</ref> Apple Asahi for Apple Arm Machines jumps from OpenGL 2.1 to 3.1 with 90% features of OpenGL 3.2 and 3.3 and OpenGL ES 2.0 to 3.0. <ref>{{cite web | url=https://www.phoronix.com/news/Mesa-23.2-AGX-Lands-OpenGL-3.1 | title=Mesa 23.2 Receives Asahi AGX Gallium3D Changes for OpenGL 3.1 + GLES 3.0 }}</ref> Microsoft Supports in WSL OpenGL 4.6+ in Mesa 24.0 (in Mesa 23.3: 4.3+) with [[DirectX 12]] translation driver dozen.<ref>{{cite web | url=https://www.phoronix.com/news/Microsoft-OpenGL-4.6-D3D12 | title=Microsoft Enables OpenGL 4.6 Support over Direct3D 12 }}</ref> ==== Table of Rendering APIs ==== {| class="wikitable" style="text-align:center; font-size:90%" |- ! rowspan=2|Mesa Version !! rowspan=2|First Release Date !! rowspan=2|Last update<ref>{{Cite web|url=https://docs.mesa3d.org/relnotes.html|title = Release Notes β the Mesa 3D Graphics Library latest documentation}}</ref> !! [[Vulkan]] || [[OpenCL]] !! [[OpenGL]] !! [[OpenGL ES]] !! [[OpenVG]] !! [[EGL (API)|EGL]] !! [[GLX]] !! [[Direct3D]] |- ! 1.4<br />2024-12-03 !! 3.0<br />2020-11-30 !! 4.6<br />2017-07-31 !! 3.2.6<br />2019-07-10 !! 1.1<br />2008-12-03 !! 1.5<br />2014-03-19 !! 1.4<br />2005-12-16 !! 12<br />2015-07-29 |- | {{Version |c|23.1 |sortKey=23.1.0}} | 2023-05-10 | 23.1.8{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-23.1-Released|title = Mesa 23.1 Released - Phoronix}}</ref> | rowspan=1|1.3.244: 1.3+ (Intel Gen8+ to XE, AMD GCN Gen2+ to RDNA3, Lavapipe, Google Venus), 1.1+ (Qualcomm Turnip), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) | rowspan=11|1.0, 1.1, 1.2 (full support), 3.0 (wip, some functions in 21.1),<ref name="ReferenceC"/> OpenCL 1.2+ and 3.0 with new RustiCL for AMD GCN and Intel Xe (Mesa 22.3+), AMD R600, Nvidia Fermi+ (Mesa 23.1+) | rowspan=15|4.6 (19.3: Intel Gen 8+, 20.0: AMD GCN, 21.1: Zink, llvmpipe, 21.2: Intel Gen 7.5) | rowspan="27"| 3.2 (20.3: Intel i965, AMD radeonsi, llvmpipe, VirGL, freedreno, Zink (21.3); 3.1: AMD r600, Nvidia nvC0, softpipe, Broadcom v3d, ARM Panfrost (21.3), d3d12 (22.0) | rowspan="31" {{N/A}}<ref>{{cite web|last1=Larabel|first1=Michael|title=OpenVG Support Stripped From Gallium3D|url=https://www.phoronix.com/scan.php?page=news_item&px=gallium3d-openvg-vega-removed|website=[[Phoronix]]|access-date=11 July 2015|date=4 March 2015}}</ref><ref>{{cite web | url=https://gitlab.freedesktop.org/mesa/mesa/commit/3acd7a34ab05b87521b74f626ec637e7fdcc6595 | title=St/Vega: Remove. (3acd7a34) Β· Commits Β· Mesa / Mesa Β· GitLab | date=3 March 2015 }}</ref> | rowspan="32"| 1.5 | rowspan="41"| 1.4 | rowspan="34" | 9.0c<ref>{{cite web|url=https://cgit.freedesktop.org/mesa/mesa/log/?qt=grep&q=nine|title=latest patches to "nine" state tracker|website=Cgit.freedesktop.org|date=4 February 2016}}</ref><ref>{{cite web|last1=Larabel|first1=Michael|title=Mesa 10.4 Officially Released With Direct3D 9 State Tracker|url=https://www.phoronix.com/scan.php?page=news_item&px=MTg2Mjc|website=[[Phoronix]]|access-date=11 July 2015|date=14 December 2014}}</ref> |- | {{Version |co|23.0 |sortKey=23.0.0}} | 2023-02-23 | 23.0.4{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-23.0-Released|title = Mesa 23.0 Released - Phoronix}}</ref> | rowspan=1|1.3.232: mostly equal to 23.1 |- | {{Version |o|22.3 |sortKey=22.3.0}} | 2022-11-30 | 22.3.7{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-22.3-Released|title = Mesa 22.3 Released - Phoronix}}</ref> | rowspan=4|22.3: 1.3.225: 1.3+ (Intel Gen8+, AMD GCN Gen2+, Lavapipe), 1.2+ (Google Venus), 1.1+ (Qualcomm Turnip, Lavapipe (22.2)), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) |- | {{Version |o|22.2 |sortKey=22.2.0}} | 2022-09-21 | 22.2.5{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-22.2-Released|title = Mesa 22.2 Released - Phoronix}}</ref> |- | {{Version |o|22.1 |sortKey=22.1.0}} | 2022-05-20 | 22.1.7{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-22.1-Released|title = Mesa 22.1 Released - Phoronix}}</ref> |- | {{Version |o|22.0 |sortKey=22.0.0}} | 2022-03-09 | 22.0.5{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-22.0-Released|title = Mesa 22.0 Released - Phoronix}}</ref> |- | {{Version |o|21.3 |sortKey=21.3.0}} | 2021-11-17 | 21.3.9{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.3-Released|title = Mesa 21.3 Released - Phoronix}}</ref> | rowspan=4|21.3: 1.2.190 (Intel Gen8+, AMD GCN Gen2+, Google Venus (21.3), Lavapipe), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Qualcomm Turnip, Lavapipe (21.1)) |- | {{Version |o|21.2 |sortKey=21.2.0}} | 2021-08-04 | 21.2.6{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.2-Released|title = Mesa 21.2 Released with New Intel Crocus Driver, PanVK, Early M1 Code - Phoronix}}</ref> |- | {{Version |o|21.1 |sortKey=21.1.0}} | 2021-05-05 | 21.1.8{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.1-Released|title = Mesa 21.1 Released with RADV Variable Rate Shading, More Intel Vulkan Improvements - Phoronix}}</ref> |- |- | {{Version |o |21.0 |sortKey=21.0.0}} | 2021-03-11 | 21.0.3{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-Released|title = Mesa 21.0 Released with Numerous RADV Improvements, New Vulkan Extensions, Many Fixes - Phoronix}}</ref> |- |- | {{Version |o |20.3 |sortKey=20.3.0}} | 2020-12-03 | 20.3.5{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-Released|title = Mesa 20.3 Released with Big Improvements for Open-Source Graphics Drivers - Phoronix}}</ref> | rowspan=3|20.3: 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv (20.3)) |- | {{Version |o |20.2 |sortKey=20.2.0}} | 2020-09-28 | 20.2.6{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2.2-Released|title=Mesa 20.2.2 Released with a Random Assortment of Fixes - Phoronix}}</ref> | rowspan=11|1.0, 1.1, 1.2 (WIP) some failed conformance tests |- | {{Version |o|20.1 |sortKey=20.1.0}} | 2020-05-27 | 20.1.10{{r|MESA3D}}<ref name="ReferenceB"/> |- | {{Version |o|20.0 |sortKey=20.0.0}} | 2020-02-19 | 20.0.8{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa20-radeonsi-nir&num=1|title = RadeonSI NIR Benchmarks Show Great Progress with Mesa 20.0 - Phoronix}}</ref> | rowspan=1|1.2+ (Intel Gen8+, AMD GCN Gen2+) |- | {{Version |o |19.3 |sortKey=19.3.0}} | 2019-12-11 | 19.3.5{{r|MESA3D}}<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.3-RC1-Released|title = Mesa 19.3-RC1 Released with OpenGL 4.6 for Intel, Many Vulkan Driver Improvements - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-193-features&num=1|title=Mesa 19.3 is Introducing a Lot of Open-Source OpenGL + Vulkan Driver Improvements - Phoronix}}</ref> | rowspan=6|1.1+ (Intel Gen8+, AMD GCN Gen2+) (19.1: 1.1.104 19.0: 1.1.102, 18.3: 1.1.90, 18.2: 1.1.84) |- | {{Version |o |19.2 |sortKey=19.2.0}} | 2019-09-25 | 19.2.8{{r|MESA3D}} | rowspan="11"| 4.5 |- | {{Version |o |19.1 |sortKey=19.1.0}} | 2019-06-11 | 19.1.8{{r|MESA3D}} |- | {{Version |o |19.0 |sortKey=19.0.0}} | 2019-03-13 | 19.0.8 |- | {{Version |o|18.3 |sortKey=18.3.0}} | 2018-12-07 | 18.3.6 |- | {{Version |o|18.2 |sortKey=18.2.0}} | 2018-09-07 | 18.2.8<ref name="phoronix.com"/> |- | {{Version |o |18.1 |sortKey=18.1.0}} | 2018-05-18 | 18.1.9<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-18.0-Today|title=Mesa 18.0 Should Arrive Today With Many Vulkan/OpenGL Driver Improvements - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> | 1.1 (Intel Gen8+, AMD GCN Gen2+)(1.1.73) |- | {{Version |o |18.0|sortKey=18.0.0}} | 2018-03-27 | 18.0.5 | 1.0+ (1.0.66) |- | {{Version |o |17.3|sortKey=17.3.0}} | 2017-12-08 | 17.3.9 | rowspan="6"| 1.0 (PC: ANV Intel Gen7+ Ivy Bridge, RADV AMD GCN only) (header: 17.3: 1.0.63, 17.2: 1.0.54, 17.1: 1.0.42, 17.0: 1.0.38, 13.0: 1.0.6, 12.0: 1.0.3) | rowspan="16"| in dev. by Gallium <br /> Compute (Clover): <br />some CTS-Tests fail <br /> in 1.0 and 1.1, <br /> 1.2 (WIP), <br />so 1.0, 1.1, 1.2 <br /> incomplete<ref>{{cite web|url=https://dri.freedesktop.org/wiki/GalliumCompute/|title=GalliumCompute|website=Dri.freedesktop.org|access-date=24 January 2019}}</ref><ref>{{cite web|url=https://www.x.org/wiki/Events/XDC2013/XDC2013TomStellardCloverStatus/XDC2013TomStellardCloverStatus.pdf|title=Clover Status Update|access-date=27 March 2020}}</ref> |- | {{Version |o |17.2 |sortKey=17.2.0}} | 2017-09-04 || 17.2.8 |- | {{Version |o|17.1 |sortKey=17.1.0}} | 2017-05-10 | 17.1.10 |- | {{Version |o |17.0 |sortKey=17.0.0}} | {{nowrap|2017-02-13<ref>{{cite web|url=https://lists.freedesktop.org/archives/mesa-announce/2017-February/000299.html|title=[Mesa-announce] mesa 17.0.0|date=13 February 2017 |access-date=13 February 2017}}</ref><ref name="phoronix20170213">{{cite web|title=Mesa 17.0.0 Officially Released|url=http://www.phoronix.com/scan.php?page=news_item&px=Mesa-17.0-Released|website=[[Phoronix]]|access-date=13 February 2017|date=13 February 2017}}</ref>}} | 17.0.7 |- | {{Version |o |13.0 |sortKey=13.0}} | 2016-11-01<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2016-November/000264.html |title=[Mesa-announce] mesa 13.0.0|date=November 2016 |access-date=2 November 2016}}</ref> | 13.0.6 | 4.4 <br /> (4.5 No Test Label) |- | {{Version |o |12.0 |sortKey=12.0}} | 2016-07-08<ref name="phoronix20160708"/> | 12.0.6|| 4.3<ref name="phoronix20160708">{{cite web|url=https://www.phoronix.com/scan.php?page=article&item=mesa-12-released|title=Mesa 12.0 Released With OpenGL 4.3 Support, Intel Vulkan & Many Other Features|date=8 July 2016|access-date=8 July 2016}}</ref>|| rowspan="2" | 3.1 |- | {{Version |o |11.2 |sortKey=11.2}} | 2016-04-04<ref name="Mesa-announce Mesa 11.2.0">{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2016-April/000206.html |title=[Mesa-announce] Mesa 11.2.0 |date=4 April 2016 |access-date=4 April 2016}}</ref> || 11.2.2 || rowspan="19" {{N/A}} || rowspan="3" | 4.1 (Intel 3.3+) |- | {{Version |o |11.1 |sortKey=11.1}} | 2015-12-15<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2015-December/000194.html |title=[Mesa-announce] Mesa 11.1.0 |date=15 December 2015 |access-date=15 December 2015}}</ref> || 11.1.4 || rowspan="9" | 3.0 |- | {{Version |o |11.0 |sortKey=11.0}} | 2015-09-12<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2015-September/000173.html |title=[Mesa-announce] Mesa 11.0.0 |date=12 September 2015 |access-date=26 September 2015}}</ref> || 11.0.9 |- | {{Version |o |10.6 |sortKey=10.6}} | 2015-06-15<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2015-June/000158.html |title=[Mesa-announce] Mesa 10.6.0 |date=15 June 2015 |access-date=15 June 2015}}</ref> || 10.6.9 || rowspan="7" | 3.3<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTQ5NjA |last1=Larabel| first1=Michael |title=Features To Be Found in Mesa 10.0 |website=[[Phoronix]] |date=26 October 2013}}</ref> || rowspan="9" | 1.4 |- | {{Version |o |10.5 |sortKey=10.5}} | 2015-03-06<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2015-March/000145.html |title=[Mesa-announce] Mesa 10.5.0 |date=7 March 2015 |access-date=7 March 2015}}</ref> || 10.5.9 || rowspan=8" | 1.1 |- | {{Version |o |10.4 |sortKey=10.4}} | 2014-12-14<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2014-December/000130.html |title=[Mesa-announce] Mesa 10.4.0 released |date=14 December 2014 |access-date=7 March 2015}}</ref> || 10.4.7 |- | {{Version |o |10.3 |sortKey=10.3}} | 2014-09-19<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2014-September/000111.html |title=[Mesa-announce] Mesa 10.3 released |date=19 September 2014 |access-date=7 March 2015}}</ref> || 10.3.7 || rowspan="13" {{N/A}} |- | {{Version |o |10.2 |sortKey=10.2}} | 2014-06-06<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2014-June/000096.html |title=[Mesa-announce] Mesa 10.2 released |date=7 June 2014 |access-date=7 March 2015}}</ref> || 10.2.9 |- | {{Version |o |10.1 |sortKey=10.1}} | 2014-03-04<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2014-March/000077.html |title=[Mesa-announce] Mesa 10.1 released |date=5 March 2014 |access-date=7 March 2015}}</ref> || 10.1.6 |- | {{Version |o |10.0 |sortKey=10.0}} | 2013-11-30<ref>{{cite web |url=https://lists.freedesktop.org/archives/mesa-announce/2013-November/000069.html |title=[Mesa-announce] Mesa 10.0 released |date=December 2013 |access-date=7 March 2015}}</ref> || 10.0.5 |- | {{Version |o |9.0 |sortKey=9.0}} | 2012-10-08 || 9.0.3, 9.1.7, 9.2.5 || rowspan="9" {{N/A}} || 3.1 || rowspan="2" | 2.0 |- | {{Version |o |8.0 |sortKey=8.0}} | 2012-02-08 || 8.0.5 || 3.0 |- | {{Version |o |7.0 |sortKey=7.0}} | 2007-06-22 || 7.0.4, ..., 7.11.2 || 2.1 || rowspan="7" {{N/A}} || rowspan="7" {{N/A}} || rowspan="7" {{N/A}} |- | {{Version |o |6.0 |sortKey=6.0}} | 2004-01-06 || 6.0.1 || 1.5 || rowspan="6" | 1.3 |- | {{Version |o |5.0 |sortKey=5.0}} | 2002-11-13 || 5.0.2 || 1.4 |- | {{Version |o |4.0 |sortKey=4.0}} | 2001-10-22 || 4.0.4 || 1.3 |- | {{Version |o |3.0 |sortKey=3.0}} | 1998-09 || 3.1, 3.2.1, 3.4.2.1 || 1.2 |- | {{Version |o |2.0 |sortKey=2.0}} | 1996-10 || 2.6 || 1.1 |- | {{Version |o |1.0 |sortKey=1.0}} | 1995-02 || 1.2.8 || 1.0 |- | colspan=11 | {{Version |l |show=111111}} |} ==== Vulkan ==== The [[Khronos Group]] officially announced [[Vulkan API]] in March 2015, and officially released Vulkan 1.0 on 16 February 2016. Vulkan breaks compatibility with OpenGL and completely abandons its monolithic state machine concept. The developers of Gallium3D called Vulkan to be something along the lines of Gallium3D 2.0 β Gallium3D separates the code that implements the OpenGL state machine from the code that is specific to the hardware. Version 1.3 is immediately available with Mesa 22.0. Hardware with support of OpenGL ES 3.1 should run at Vulkan Level 1.3 and before.<ref>{{cite web | url=https://www.phoronix.com/scan.php?page=article&item=vulkan-13-2022&num=1 | title=Vulkan 1.3 Released with Dynamic Rendering in Core, New Roadmap Guidance for Modern GPUs }}</ref> As Gallium3D ingests TGSI, Vulkan ingests SPIR-V ([[Standard Portable Intermediate Representation]] version "V" as in "Vulkan"). Intel released their implementation of a Vulkan driver for their hardware the day the specification was officially released, but it was only mainlined in April and so became part of Mesa 12.0, released in July 2016. While already the i965 driver wasn't written according to the Gallium3D specifications, for the Vulkan driver it makes even less sense to flange it on top of Gallium3D. Similarly there is no technical reason to flange it with NIR, but yet Intel's employees implemented their Vulkan driver that way.<ref>{{cite web|url=https://www.x.org/wiki/Events/XDC2016/Program/ekstrand_vulkan.pdf |title=Program |website=www.x.org }}</ref> It is to be expected that AMD's own proprietary Vulkan driver, which was released in March{{when|reason=The year is unclear|date=May 2022}}, and was announced to be released as free and open-source software in the future and be mainlined into Mesa, also abandons Gallium3D.<ref>{{cite web|url=http://www.phoronix.com/scan.php?page=article&item=radv-hits-mesa&num=1|title=Radeon Vulkan Driver Added To Mesa, Fresh Radeon Vulkan vs. OpenGL Benchmarks + AMDGPU-PRO - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> RADV is a free project for AMD and is available since version 13.<ref name=":0">{{Cite web |url=https://phoronix-media.com/scan.php?page=news_item&px=RADV-Mesa-Submission-ML |title=RADV Radeon Vulkan Driver Submitted for Review to be Included in Mesa - Phoronix |access-date=3 November 2016 |archive-url=https://web.archive.org/web/20161104080446/https://phoronix-media.com/scan.php?page=news_item&px=RADV-Mesa-Submission-ML |archive-date=4 November 2016 |url-status=dead }}</ref> Conformance with Khronos-Test came in version 17.3. Actual is Full support of Vulkan 1.0 and 1.1 since Mesa 18.1. Nvidia released their proprietary GeForce driver with Vulkan support at launch day and Imagination Technologies (PowerVR), Qualcomm (Adreno) and ARM (Mali) have done the same or at least announced proprietary Vulkan drivers for Android and other operating systems. But when and whether additional free and open-source Vulkan implementations for these GPUs will show up, remains to be seen. Mesa Software Driver VIRGL starts Vulkan Development in 2018 with GSOC projects for support of Virtual machines.<ref name="phoronix.com1">{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Vulkan-Virgl-Kickoff|title=Vulkan Virgl Has Kicked Off For Supporting This Graphics/Compute API Within VMs - Phoronix|website=www.phoronix.com}}</ref> Lavapipe is a CPU-based Software Vulkan driver and the brother of LLVMpipe. Mesa Version 21.1 supports Vulkan 1.1+.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Lavapipe-CPU-Vulkan-Windows|title = Lavapipe CPU-Based Vulkan Ported to Windows - Phoronix}}</ref> Google introduces Venus Vulkan Driver for virtual machines in Mesa 21.1 with full support for Vulkan 1.2+.<ref name="ReferenceE"/> Qualcomm Turnip and Broadcom v3dv are new drivers for Qualcomm Adreno and Broadcom Raspberry 4 Hardware. Turnip is the Vulkan brother of freedreno for OpenGL. V3dv supports Vulkan 1.0+ since Mesa 20.3. In Version 21.1 Turnip supports Vulkan 1.1+.<ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=TURNIP-Hardware-Binning|title=The Open-Source Qualcomm "TURNIP" Vulkan Driver Adds Important Performance Feature - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=TURNIP-KGSL-Vulkan-Bringup|title=TURNIP Vulkan Driver up and Running on Qualcomm's KGSL - Phoronix}}</ref><ref>{{Cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=V3DV-Raspberry-Pi4-Mesa-20.3|title = Raspberry Pi 4 Vulkan Driver "V3DV" Merged into Mesa 20.3 - Phoronix}}</ref> Panfrost PanVK for ARM Mali is at way to Vulkan 1.1, but only 1.0 is stable available with Mesa 22.0.<ref>{{cite web | url=https://www.phoronix.com/scan.php?page=news_item&px=PanVK-No-Vulkan-1.1-Right-Now | title=PanVK Pulls Back from Advertising Vulkan 1.1 for Now }}</ref> Project Dozen is connecting direct 3D 12 (d3d12) with Vulkan for Linux Emulation WSL2 in Windows 10 and 11. In Mesa 23.2 Vulkan 1.0 is full conformant supported and 80% of 1.1 and 1.2 (mesamatrix). <ref>{{cite web | url=https://www.phoronix.com/news/Micorosft-Dzn-99p-Vulkan | title=Microsoft's "DZN" Mesa Code Achieving 99.75%+ Vulkan 1.0 Conformance }}</ref><ref>{{cite web | url=https://www.phoronix.com/news/Vulkan-On-Direct3D-12-Dzn-Merge | title="Dozen" Merged into Mesa for Implementing Vulkan on Direct3D 12 }}</ref> ==== Explicit fencing ==== A kind of memory barrier that separates one buffer from the rest of the memory is called a fence. Fences are there to ensure that a buffer is not being overwritten before rendering and display operations have completed on it. Implicit fencing is used for synchronization between graphics drivers and the GPU hardware. The fence signals when a buffer is no longer being used by one component so it can be operated on or reused by another. In the past the Linux kernel had an implicit fencing mechanism, where a fence is directly attached to a buffer (cf. GEM handles and FDs), but userspace is unaware of this. Explicit fencing exposes fences to userspace, where userspace gets fences from both the Direct Rendering Manager (DRM) subsystem and from the GPU. Explicit fencing is required by Vulkan and offers advantages for tracing and debugging. Linux kernel 4.9 added Android's synchronization framework to mainline.<ref>{{cite web |url=https://lwn.net/Articles/702339/ |title=Bringing Android explicit fencing to the mainline |date=5 October 2016 |publisher=[[LWN.net]] }}</ref> ==== Generic Buffer Management ==== Generic Buffer Management (GBM) is an API that provides a mechanism for allocating buffers for graphics rendering tied to Mesa. GBM is intended to be used as a native platform for EGL on DRM or openwfd. The handle it creates can be used to initialize EGL and to create render target buffers.<ref>{{cite web |url=https://packages.debian.org/sid/libgbm1 |title=libgbm in the Debian repositories|website=Packages.debian.org}}</ref> Mesa GBM is an abstraction of the graphics driver specific buffer management APIs (for instance the various libdrm_* libraries), implemented internally by calling into the Mesa GPU drivers. For example, the [[Wayland compositor]] Weston does its rendering using OpenGL ES 2, which it initializes by calling EGL. Since the server runs on the "bare [[KMS driver]]", it uses the EGL DRM platform, which could really be called the GBM platform, since it relies on the Mesa GBM interface. At XDC2014, Nvidia employee Andy Ritger proposed to enhance EGL in order to replace GBM.<ref>{{cite web |url=http://www.x.org/wiki/Events/XDC2014/XDC2014RitgerEGLNonMesa/ |title=Enabling Alternative Window Systems with a non-Mesa Graphics Driver Implementation|website=X.org}}</ref> This was not taken positively by the community, and Nvidia eventually changed their mind,<ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-Getting-The-Alloc-Going|title=NVIDIA Wants Feedback On Its Device Memory Allocator Project|website=Phoronix}}</ref> and took another approach. {{Clear}} === Implementations of video acceleration APIs === There are three possible ways to do the calculations necessary for the encoding and decoding of video streams: # use a software implementation of a video compression or decompression algorithm (commonly called a CODEC) and execute this software on the ''C''PU # use a software implementation of a video compression or decompression algorithm (commonly called a CODEC) and execute this software on the ''G''PU (the [[rendering (computer graphics)|3D rendering engine]]) # use a complete (or partial) hardware implementation of a video compression or decompression algorithm; it has become very common to integrate such [[ASICs]] into the chip of the GPU/CPU/SoC and therefore abundantly available; for marketing reasons companies have established brands for their ASICs, such as [[PureVideo]] (Nvidia), [[Unified Video Decoder]] (AMD), [[Video Coding Engine]] (AMD), [[Quick Sync Video]] (Intel), [[Texas Instruments DaVinci|DaVinci]] (Texas Instruments), [[CedarX]] (Allwinner), [[Broadcom Crystal HD|Crystal HD]] (Broadcom); some ASICs are available for licensing as [[semiconductor intellectual property core]]; usually different versions implement different video compression and/or video decompression algorithms; support for such ASICs usually belong into the kernel driver, to initialize the hardware and do low-level stuff. Mesa, which runs in user-space, houses the implementations of several [[API]]s for software, e.g. [[VLC media player]], [[GStreamer]], [[HandBrake]], etc., to conveniently access such ASICs: * [[Video Acceleration API]] (VAAPI) β the most common API for Linux, used by AMD and Intel * [[Video Decode and Presentation API for Unix]] (VDPAU) β used by Nvidia * [[DirectX Video Acceleration]] (DXVA) β Microsoft Windows-only * [[OpenMAX IL]] β designed by Khronos Group for video compression * [[Distributed Codec Engine]] (DCE) β designed by Texas Instruments * [[X-Video Bitstream Acceleration]] (XvBA) β extension to [[X video extension|Xv]] - succeeded by VAAPI * [[X-Video Motion Compensation]] (XvMC) β extension to [[X video extension|Xv]] - succeeded by VAAPI For example, [[nouveau (software)|Nouveau]], which has been developed as part of Mesa, but also includes a Linux kernel component, which is being developed as part of the Linux kernel, supports the [[PureVideo]]-branded ASICs and provides access to them through [[VDPAU]] and partly through [[XvMC]].<ref>{{cite web |url=https://nouveau.freedesktop.org/wiki/VideoAcceleration/ |title=Nouveau Video Acceleration |work=[[freedesktop.org]]}}</ref> The free radeon driver supports [[Unified Video Decoder]] and [[Video Coding Engine]] through VDPAU and OpenMAX.<ref>{{cite web |url=http://xorg.freedesktop.org/wiki/RadeonFeature/ |title=Radeon Feature Matrix |work=[[freedesktop.org]]}}</ref> [[V4L2]] is a [[Linux API|kernel-to-user-space interface]] for video bit streams delivered by webcams or TV tuners. Due to [[patent]] concerns regarding the [[H.264]], [[H.265]] and [[VC-1]] video codecs, [[Fedora Linux]] disabled support for VAAPI acceleration for those in its build of Mesa in September 2022.<ref>{{Cite web |title=Fedora Linux Disabling Mesa's H.264 / H.265 / VC1 VA-API Support Over Legal Concerns |url=https://www.phoronix.com/news/Fedora-Disable-Bad-VA-API |access-date=2022-10-01 |website=Phoronix |language=en}}</ref> === Device drivers === {{Main|Free and open-source graphics device driver}} [[File:Linux AMD graphics stack.svg|thumb|Graphics device drivers are implemented using two components: a UMD (user-mode driver) and a KMD (kernel-mode driver). Starting with Linux kernel 4.2 AMD Catalyst and Mesa will share the same Linux kernel driver: ''amdgpu''. Amdgpu provides interfaces defined by DRM and KMS.]] The available free and open-source device drivers for graphic chipsets are "stewarded" by Mesa (because the existing free and open-source implementation of APIs are developed inside of Mesa). Currently there are two frameworks to write graphics drivers: "classic" and Gallium3D.<ref name="Toral 2014">{{cite web|last1=Toral|first1=Iago|title=Diving into Mesa|url=https://blogs.igalia.com/itoral/2014/08/08/diving-into-mesa/|date=8 August 2014|access-date=19 May 2016}}</ref> An overview over some (but not all) of the drivers available in Mesa is given at {{URL|https://mesamatrix.net/}}. There are device drivers for AMD/ATI R100 to R800, Intel, and [[nouveau (software)|Nvidia]] cards with 3D acceleration. Previously drivers existed for the IBM/Toshiba/Sony [[Cell (processor)|Cell]] processor of the [[PlayStation 3]], S3 Virge & [[S3 Savage|Savage]] chipsets, VIA chipsets, Matrox G200 & G400, and more.<ref>{{cite web|url=https://dri.freedesktop.org/wiki/Status/|title=Direct Rendering Infrastructure Status Page|publisher=[[freedesktop.org]]}}</ref> The free and open-source drivers compete with proprietary closed-source drivers. Depending on the availability of hardware documentation and man-power, the free and open-source driver lag behind more or less in supporting 3D acceleration of new hardware. Also, 3D rendering performance was usually significantly slower with some notable exceptions.<ref>{{cite web|url=http://www.apcmag.com/how-to-improve-gaming-performance-on-your-linux-machine.htm/|title=How to improve gaming performance on your Linux machine - APC|date=25 July 2013|website=Apcmag.com|archive-url=https://web.archive.org/web/20190125023409/http://www.apcmag.com/how-to-improve-gaming-performance-on-your-linux-machine.htm/ |access-date=1 August 2018|archive-date=25 January 2019 }}</ref><ref>{{cite web|url=http://www.geeks3d.com/20120110/linux-mesa-gallium3d-nouveau-and-nvidia-drivers-opengl-test-gtx-280-gtx-480-gtx-580/|title=Linux: Mesa, Gallium3D, Nouveau and NVIDIA Drivers, OpenGL Test (GTX 280, GTX 480, GTX 580) β Geeks3D|website=Geeks3d.com|date=10 January 2012 |access-date=1 August 2018}}</ref><ref>{{cite web|url=https://www.phoronix.com/vr.php?view=18344|title=Nouveau Driver Remains Much Slower Than NVIDIA's Official Driver - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=article&item=july_2013_gpus&num=8|title=Intel/NVIDIA/AMD Compete on Open/Closed Source Linux GPU Driver Performance - Phoronix|website=Phoronix.com|access-date=1 August 2018}}</ref> Today this is still true for Nouveau for most NVIDIA GPUs while on AMDs Radeon GPUs the open driver now mostly matches or exceeds the proprietary driver's performance. === Direct Rendering Infrastructure (DRI) === {{Main|Direct Rendering Infrastructure}} At the time 3D [[graphics card]]s became more mainstream for PCs, individuals partly supported by some companies began working on adding more support for hardware-accelerated 3D rendering to Mesa.{{When|date=November 2013}} The [[Direct Rendering Infrastructure]] (DRI) was one of these approaches to interface Mesa, OpenGL and other 3D rendering API libraries with the device drivers and hardware. After reaching a basic level of usability, DRI support was officially added to Mesa. This significantly broadened the available range of hardware support achievable when using the Mesa library.<ref name="DRI"/> With adapting to DRI, the Mesa library finally took over the role of the front end component of a full scale OpenGL framework with varying backend components that could offer different degrees of 3D hardware support while not dropping the full software rendering capability. The total system used many different software components.<ref name="DRI"/> While the design requires all these components to interact carefully, the interfaces between them are relatively fixed. Nonetheless, as most components interacting with the Mesa stack are open source, experimental work is often done through altering several components at once as well as the interfaces between them. If such experiments prove successful, they can be incorporated into the next major or minor release. That applies e.g. to the update of the DRI specification developed in the 2007-2008 timeframe. The result of this experimentation, DRI2, operates without locks and with improved back buffer support. For this, a special [[git]] branch of Mesa was created.<ref>{{cite web |url=http://www.x.org/wiki/DRI2 |title=DRI2 |publisher=X.org |access-date=25 January 2012 |url-status=dead |archive-url=https://archive.today/20130416120341/http://www.x.org/wiki/DRI2 |archive-date=16 April 2013 }}</ref> [[Direct Rendering Infrastructure#DRI3|DRI3]] is supported by the Intel driver since 2013<ref>{{cite web|url=https://lwn.net/Articles/570082/|title=DRI3 and Present [LWN.net]|website=lwn.net|access-date=1 August 2018}}</ref><ref>{{cite web|url=https://lists.freedesktop.org/archives/dri-devel/2013-November/048258.html |title=[PATCH 0/6] Add DRI3000 support to core and i965 drivers |date=31 October 2013 |publisher=Lists.freedesktop.org |access-date=1 August 2018}}</ref> and is default in some Linux distributions since 2016<ref>{{cite web|url=https://lists.fedoraproject.org/archives/list/kde@lists.fedoraproject.org/thread/P3GKSSLCV2YZT4UTFDHCP6S4CQ453J35/|title=xorg-x11-drv-intel-2.99.917-19.20151206.fc23 (re)enabled dri3 by default - kde - Fedora Mailing-Lists|website=lists.fedoraproject.org|language=en|access-date=3 December 2016}}</ref> to enable Vulkan support and more. It is also default on AMD hardware since late 2016 (X.Org Server 1.18.3 and newer).<ref>{{cite web|url=http://www.phoronix.com/scan.php?page=news_item&px=Radeon-AMDGPU-1.19-Updates|title=Radeon-AMDGPU-1.19-Updates|website=Google.de|access-date=3 December 2016}}</ref> {{Clear}} === Software renderer === Mesa also contains an implementation of [[software rendering]] called {{mono|swrast}} that allows shaders to run on the CPU as a fallback when no graphics hardware accelerators are present. The Gallium software rasterizer is known as ''softpipe'' or when built with support for [[LLVM]] ''llvmpipe'', which generates CPU code at runtime.<ref>{{cite web |url = https://www.phoronix.com/scan.php?page=article&item=gallium3d_llvmpipe&num=1 |title = LLVMpipe: OpenGL With Gallium3D on Your CPU |date = 30 April 2010 |access-date=4 November 2014 |website = Phoronix.com}}</ref><ref>{{cite web |url = http://mesa3d.org/llvmpipe.html |title = llvmpipe |access-date=8 June 2015 |website = mesa3d.org}}</ref> Since Mesa 10.x OpenGL 3.3+ is supported for Softpipe (10.3) and LLVMpipe (10.2). Actually about 80% of Features from OpenGL 4.x are implemented in Mesa 17.3 (See Mesamatrix). In Mesa 12.0 a new Intel Rasterizer OpenSWR is available with high advantages in clusters for large data sets. It's more focused on engineering visualisation than in game or art imagery and can only work on x86 processors.<ref>{{cite web|url=http://openswr.org|title=OpenSWR|website=openswr.org|access-date=1 August 2018}}</ref> On the other hand, OpenGL 3.1+ is now supported.<ref>{{cite web|url=https://mesamatrix.net|title=Mesamatrix: The OpenGL vs Mesa matrix|website=mesamatrix.net|access-date=1 August 2018}}</ref> Acceleration values from 29 to 51 related to LLVMPIPE were measured in some examples.<ref>{{cite web|url=http://openswr.org/perf.html|title=OpenSWR|website=openswr.org|access-date=1 August 2018}}</ref> OpenGL 3.3+ is supported for OpenSWR since Mesa 17.1. VirGL is a Rasterizer for Virtual machines implemented in Mesa 11.1 since 2015 with OpenGL 3.3 support and showed in Mesamatrix since Mesa 18. In actual new Mesa 18.2 it supports more than the others with OpenGL 4.3 and OpenGL ES 3.2. About 80% of OpenGL 4.4 and 4.5 features are also now ready. Vulkan Development starts with GSOC 2018 projects.<ref>{{Cite web |url=https://lists.freedesktop.org/archives/mesa-commit/2015-October/059566.html |title=Mesa (Master): Virgl: Add driver for virtio-gpu 3D (V2) |access-date=28 August 2018 |archive-url=https://web.archive.org/web/20180828134758/https://lists.freedesktop.org/archives/mesa-commit/2015-October/059566.html |archive-date=28 August 2018 |url-status=dead}}</ref><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=VirGL-OpenGL-Features-List|title=Tracking Mesa's VirGL OpenGL Features - Phoronix|website=www.phoronix.com}}</ref><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Mesa-VirGL-4.2-For-18.2|title=Mesa's VirGL Now Has OpenGL 4.2 Support To Offer Guest VMs - Phoronix|website=www.phoronix.com}}</ref><ref name="phoronix.com1"/><ref>{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=Virgl-XDC-2018|title=The Current Performance of Virgl3D, Future Plans - Phoronix|website=www.phoronix.com}}</ref><ref>{{cite web |url=https://xdc2018.x.org/slides/Virgl_Presentation.pdf |title=What's new in the virtual world? |access-date=19 November 2023 |archive-url=https://web.archive.org/web/20181001135200/https://xdc2018.x.org/slides/Virgl_Presentation.pdf |archive-date=1 October 2018 |url-status=live}}</ref><ref>https://archive.fosdem.org/2019/schedule/event/virtual_gpu/attachments/slides/3353/export/events/attachments/virtual_gpu/slides/3353/Virgl_Presentation_FOSDEM2019.pdf {{Bare URL PDF|date=March 2022}}</ref> Actual virGL state in Mesamatrix is full support of OpenGL 4.6+ and OpenGL ES 3.2+ with some necessary Linux software.<ref>{{cite web | url=https://docs.mesa3d.org/drivers/virgl.html | title=VirGL β the Mesa 3D Graphics Library latest documentation }}</ref> D3d12 is a project of Microsoft for WSL2 emulation of OpenGL 3.3+ and OpenCL 1.2+ with Direct3D 12. D3D12 is merged in 21.0.<ref name="ReferenceD"/> Actual state in Mesa 23.1 is OpenGL 4.2+ with nearly 4.4+ and OpenGL ES 3.1+. Venus is a new Vulkan VirtIO GPU Driver for GPU in virtual machines by Google. Venus is merged in 21.1 and for public in 21.2 introduced.<ref name="ReferenceE"/> Venus supports Vulkan 1.3+ in Mesa 23.1. Hardware minimum is Vulkan 1.1 with some extensions.<ref>{{cite web | url=https://docs.mesa3d.org/drivers/venus.html | title=Virtio-GPU Venus β the Mesa 3D Graphics Library latest documentation }}</ref> === Mega drivers === The idea of bundling multiple drivers into a single "mega" driver was proposed by Emma Anholt. It allows for a single copy of the shared Mesa code to be used among multiple drivers (instead of it existing in each driver separately) and offering better performance than a separate shared library due to the removal of the internal library interface.<ref>{{cite web |url=http://www.x.org/wiki/Events/XDC2013/XDC2013EricAnholtDRIMegadrivers/ |title=DRI megadrivers |website=X.org|date=25 September 2013}}</ref> The state trackers for [[VDPAU]] and XvMC have become separate libraries.<ref>{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTcyNzQ |title=VDPAU & XvMC state trackers are now separate libraries|website=Phoronix.com |date=23 June 2014}}</ref> === shader-db === shader-db is a collection of about 20,000 [[shader]]s gathered from various computer games and benchmarks as well as some scripts to compile these and collect some statistics. Shader-db is intended to help validate an optimization. It was noticed that an unexpected number of shaders are not hand-written but generated. This means these shaders were originally written in [[HLSL]] and then translated into GLSL by some translator program, such as e.g. [[HLSL2GLSL]]. The problem is, that the generated code is often far from being optimal. Matt Turner said it was much easier to fix this in the translator program than having to make Mesa's compiler carry the burden of dealing with such bloated shaders. shader-db cannot be considered free and open-source software. To use it legally, one must have a license for all the computer games that the shaders are part of.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)