# Mesa (gràfics)

Mesa, també anomenada Mesa3D i The Mesa 3D Graphics Library, és una implementació de codi obert d'OpenGL, Vulkan i altres especificacions de l'API gràfica. Mesa tradueix aquestes especificacions a controladors de maquinari gràfics específics del proveïdor.
Els seus usuaris més importants són dos controladors de gràfics desenvolupats i finançats principalment per Intel i AMD per al seu maquinari respectiu (AMD promou els seus controladors Mesa Radeon i RadeonSI sobre l'AMD Catalyst obsolet, i Intel només ha donat suport al controlador Mesa). Els controladors de gràfics propietaris (per exemple, el controlador Nvidia GeForce i Catalyst) substitueixen tot el Mesa, proporcionant la seva pròpia implementació d'una API de gràfics. La comunitat desenvolupa sobretot un esforç de codi obert per escriure un controlador Mesa Nvidia anomenat Nouveau.
A més d'aplicacions 3D com els jocs, els servidors de visualització moderns (X.org's Glamour o Wayland 's Weston) utilitzen OpenGL/EGL; per tant, tots els gràfics solen passar per Mesa.
Mesa està allotjada per freedesktop.org i va ser iniciada l'agost de 1993 per Brian Paul, que encara està actiu en el projecte. Posteriorment Mesa va ser àmpliament adoptat i ara conté nombroses contribucions de diverses persones i corporacions d'arreu del món, inclosos els fabricants de maquinari gràfic del grup Khronos que administren l'especificació OpenGL. Per a Linux, el desenvolupament també ha estat parcialment impulsat pel crowdfunding.

## Visió general
### Implementacions d'API de renderització

Mesa es coneix com a implementacions d'allotjament d'API gràfiques. Històricament, la principal API que Mesa ha implementat és OpenGL, juntament amb altres especificacions relacionades amb Khronos Group (com OpenVG, OpenGL ES o recentment EGL). Però Mesa pot implementar altres API i, de fet, ho va fer amb Glide (obsolet) i Direct3D 9 des del juliol de 2013. Mesa tampoc és específic dels sistemes operatius semblants a Unix: a Windows, per exemple, Mesa proporciona una API OpenGL a través de DirectX.
Mesa implementa una capa de traducció entre una API gràfica com OpenGL i els controladors de maquinari gràfic del nucli del sistema operatiu. La versió admesa de les diferents API gràfiques depèn del controlador, perquè cada controlador de maquinari té la seva pròpia implementació (i, per tant, estat). Això és especialment cert per als controladors "clàssics", mentre que els controladors Gallium3D comparteixen codi comú que tendeixen a homogeneïtzar les extensions i versions compatibles.
Mesa manté una matriu de suport amb l'estat de la conformitat actual d'OpenGL visualitzat a mesamatrix.net. Mesa 10 compleix amb OpenGL 3.3 per a maquinari Intel, AMD/ATI i GPU Nvidia. Es va anunciar Mesa 11 amb alguns controladors compatibles amb OpenGL 4.1.
Mesa 12 conté OpenGL 4.2 i 4.3 i suport Intel Vulkan 1.0.
Mesa 13 va aportar suport d'Intel per a OpenGL 4.4 i 4.5 (totes les funcions són compatibles amb Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), però no Khronos-Test per a 4.5-Label) i suport experimental AMD Vulkan 1.0 a través del controlador de la comunitat RADV. OpenGL ES 3.2 és possible amb Intel Skylake (Gen9).
La primera versió estable de 2017 és la 17.0 (compte de l'any nou). Les funcions Ready estan certificades OpenGL 4.5, OpenGL 4.5 per a Intel Haswell, OpenGL 4.3 per a Nvidia Maxwell i Pascal (GM107+). Es va mesurar un gran guany de rendiment amb Maxwell 1 (GeForce GTX 750 Ti i més amb GM1xx). Les targetes Maxwell-2-Cards (GeForce GTX 980 i més amb GM2xx) estan sota clock sense informació de Nvidia.

## Història

L'iniciador del projecte Brian Paul era un aficionat als gràfics. Va pensar que seria divertit implementar una simple biblioteca de gràfics en 3D mitjançant l'API d'OpenGL, que després podria utilitzar en lloc de VOGL (biblioteca GL Like molt normal). A partir de 1993, va passar divuit mesos de desenvolupament a temps parcial abans de llançar el programari a Internet el febrer de 1995. El programari va ser ben rebut i la gent va començar a contribuir al seu desenvolupament. Mesa va començar representant tots els gràfics d'ordinador en 3D a la CPU. Malgrat això, l'arquitectura interna de Mesa va ser dissenyada per estar oberta per connectar-se a la representació 3D accelerada del processador gràfic. En aquesta primera fase, la renderització es va fer de manera indirecta al servidor de visualització, deixant una mica de sobrecàrrega i una velocitat notable endarrerida del màxim teòric. El Diamond Monster 3D, utilitzant el chipset Voodoo Graphics, va ser un dels primers dispositius de maquinari 3D suportats per Mesa.
El primer suport de maquinari gràfic veritable es va afegir a Mesa el 1997, basat en l'API Glide per a les llavors noves targetes gràfiques 3dfx Voodoo I/II i els seus successors. Un problema important d'utilitzar Glide com a capa d'acceleració era l'hàbit de Glide per executar-se a pantalla completa, que només era adequat per a jocs d'ordinador. A més, Glide va bloquejar la memòria de la pantalla i, per tant, es va bloquejar el servidor de visualització per fer cap altra tasca de la GUI.

## Referències

* ↑ «Improve OpenGL support for the Linux Graphics Drivers - Mesa» (en anglès). Indiegogo, 11-12-2013. [Consulta: 21 gener 2015].
* ↑ «AMD exploring new Linux driver Strategy» (en anglès), 22-03-2014. [Consulta: 23 març 2014].
* ↑ «Direct3D 9 Support Released For Linux Via Gallium3D, Running Games - Phoronix» (en anglès). Phoronix.com. [Consulta: 1r agost 2018].
* ↑ «mesa/mesa - The Mesa 3D Graphics Library» (en anglès). [Consulta: 2 novembre 2016].
* ↑ «The OpenGL vs Mesa matrix» (en anglès), 25-03-2015. [Consulta: 29 març 2015].
* ↑ «Mesa 11.0 Has Been Branched, The Release March Begins» (en anglès), 22-08-2015. [Consulta: 22 agost 2015].
* ↑ «RADV Radeon Vulkan Driver Submitted for Review to be Included in Mesa - Phoronix» (en anglès). Arxivat de l'original el 4 novembre 2016. [Consulta: 3 novembre 2016].
* ↑ «mesa/mesa - The Mesa 3D Graphics Library» (en anglès). Cgit.freedesktop.org. [Consulta: 1r agost 2018].
* ↑ «The Big Changes, Improvements of Mesa 17.0 - Phoronix» (en anglès). Phoronix.com. [Consulta: 1r agost 2018].
* ↑ «mesa/mesa - The Mesa 3D Graphics Library» (en anglès). Cgit.freedesktop.org. [Consulta: 1r agost 2018].
* ↑ «Program» (en anglès). www.x.org, 2016.
* ↑ «mesa/mesa - The Mesa 3D Graphics Library» (en anglès). Cgit.freedesktop.org. [Consulta: 1r agost 2018].
* ↑ «A Look at the Huge Performance Boosts With Nouveau Mesa 17.0-devel on Maxwell - Phoronix» (en anglès). Phoronix.com. [Consulta: 1r agost 2018].
* ↑ «Mesa Introduction» (en anglès). Mesa Team. Arxivat de l'original el 4 maig 2015. [Consulta: 8 juny 2015].
* ↑ «Project History» (en anglès). Mesa Documentation. [Consulta: 11 març 2021].
* ↑ Paul, Brian. «Introduction to the Direct Rendering Infrastructure» (en anglès). Dri.sourceforge.net, 10-08-2000. Arxivat de l'original el 16 de març 2018. [Consulta: 25 gener 2012].
* ↑ «What's the relationship between Glide and DRI?» (en anglès). dri.freedesktop.org. [Consulta: 25 gener 2012].