Mesa (gráficos por computadora)

Biblioteca gratuita y de código abierto para renderizado de gráficos 3D

Colina baja
Autor(es) original(es)Brian Paul
Desarrollador(es)Actualmente: Igalia , Collabora , Valve , Intel , Google , AMD , VMware
Anteriormente: Tungsten Graphics [1]
Lanzamiento inicialFebrero de 1995
Versión estable
24.3.1 [2]  / 4 de diciembre de 2024 ; hace 15 días ( 4 de diciembre de 2024 )
Versión preliminar
24.3.0-rc2  / 13 de noviembre de 2024 ; hace 36 días ( 13 de noviembre de 2024 )
Repositoriohttps://gitlab.freedesktop.org/mesa/mesa
Escrito enC++ , C , lenguaje ensamblador
Sistema operativoMultiplataforma ( BSD , Haiku , Linux , etc.)
TipoBiblioteca de gráficos
LicenciaLicencia MIT
Sitio webhttps://www.mesa3d.org

Mesa , también llamada Mesa3D y The Mesa 3D Graphics Library , es una implementación de código abierto de OpenGL , Vulkan y otras especificaciones de API de gráficos . Mesa traduce estas especificaciones a controladores de hardware de gráficos específicos del proveedor.

Sus usuarios más importantes son dos controladores gráficos desarrollados y financiados principalmente por Intel y AMD para su respectivo hardware (AMD promueve sus controladores Mesa Radeon y RadeonSI sobre el obsoleto AMD Catalyst , e Intel solo ha dado soporte al controlador Mesa). Los controladores gráficos propietarios (por ejemplo, el controlador Nvidia GeForce y Catalyst) reemplazan a todos los Mesa, proporcionando su propia implementación de una API de gráficos. Un esfuerzo de código abierto para escribir un controlador Nvidia para Mesa llamado Nouveau es desarrollado principalmente por la comunidad.

Además de las aplicaciones 3D como los juegos, los servidores de visualización modernos ( Glamour de X.org o Weston de Wayland ) utilizan OpenGL/ EGL ; por lo tanto, todos los gráficos normalmente pasan por Mesa.

Mesa está alojado en freedesktop.org y fue iniciado en agosto de 1993 por Brian Paul , quien todavía está activo en el proyecto. Posteriormente, Mesa fue ampliamente adoptado y ahora contiene numerosas contribuciones de varias personas y corporaciones de todo el mundo, incluidos los fabricantes de hardware gráfico del Grupo Khronos que administran la especificación OpenGL. Para Linux, el desarrollo también ha sido impulsado parcialmente por la financiación colectiva . [3]

Descripción general

Los videojuegos externalizan los cálculos de renderizado a la GPU mediante OpenGL en tiempo real. Los sombreadores se escriben en lenguaje de sombreado OpenGL o SPIR-V y se compilan en la CPU. Los programas compilados se ejecutan en la GPU.
Ilustración de la pila de gráficos de Linux : DRM y libDRM, Mesa 3D . El servidor de visualización pertenece al sistema de ventanas y no es necesario, por ejemplo, para juegos.

Implementaciones de API de renderizado

Las implementaciones gratuitas de Wayland dependen de la implementación de EGL en Mesa . La biblioteca especial llamada libwayland-EGL , escrita para permitir el acceso al framebuffer , debería haber quedado obsoleta con el lanzamiento de EGL 1.5. En la GDC 2014 , AMD estaba explorando un cambio de estrategia hacia el uso de DRM en lugar de su blob en el núcleo. [4]

Mesa es conocida por albergar implementaciones de API gráficas . Históricamente, la API principal que Mesa ha implementado es OpenGL , junto con otras especificaciones relacionadas con Khronos Group (como OpenVG , OpenGL ES o recientemente EGL ). Pero Mesa puede implementar otras API y de hecho lo hizo con Glide (obsoleto) y Direct3D 9 desde julio de 2013. [5] Mesa tampoco es específico para sistemas operativos tipo Unix: en Windows, por ejemplo, Mesa proporciona una API OpenGL sobre DirectX.

Mesa implementa una capa de traducción entre una API gráfica como OpenGL y los controladores de hardware gráfico en el núcleo del sistema operativo. La versión compatible de las diferentes API gráficas depende del controlador, ya que cada controlador de hardware tiene su propia implementación (y, por lo tanto, su estado). Esto es especialmente cierto para los controladores "clásicos", mientras que los controladores Gallium3D comparten un código común que tiende a homogeneizar las extensiones y versiones compatibles.

Mesa mantiene una matriz de soporte con el estado de la conformidad actual con OpenGL [6] [7] visualizada en mesamatrix.net . Mesa 10 cumple con OpenGL 3.3 para hardware GPU Intel, AMD/ATI y Nvidia. Mesa 11 fue anunciado con algunos controladores compatibles con OpenGL 4.1. [8]

Mesa 12 contiene soporte para OpenGL 4.2 y 4.3 e Intel Vulkan 1.0.

Mesa 13 trajo soporte de Intel para OpenGL 4.4 y 4.5 (todas las características soportadas por Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), pero no Khronos-Test para 4.5-Label) y soporte experimental para AMD Vulkan 1.0 a través del controlador comunitario RADV. OpenGL ES 3.2 es posible con Intel Skylake (Gen9). [9]

La primera versión estable de 2017 es la 17.0 (contando el año nuevo). [10] [11] [12] Las funciones listas están certificadas OpenGL 4.5, OpenGL 4.5 para Intel Haswell, [13] [14] OpenGL 4.3 para Nvidia Maxwell y Pascal (GM107+). [15] Se midió una enorme ganancia de rendimiento con Maxwell 1 (GeForce GTX 750 Ti y más con GM1xx). Las tarjetas Maxwell-2 (GeForce GTX 980 y más con GM2xx) están underclockeadas sin información de Nvidia. [16]

La suite de pruebas Khronos CTS para OpenGL 4.4, 4.5 y OpenGL ES 3.0+ ya está disponible en código abierto (24/01/2017) y todas las pruebas para Mesa 13 y 17 ahora son posibles sin costo. [17]

La segunda versión estable de 2017, 17.1.0, salió el 10 de mayo de 2017 con algunas mejoras interesantes. OpenGL 4.2+ para Intel Ivy Bridge y OpenGL 3.3+ para Intel Open SWR Rasterizer son dos de las más destacadas. [18] [19]

Debido a la naturaleza modular de OpenGL, Mesa puede admitir extensiones de versiones más nuevas de OpenGL sin afirmar que es totalmente compatible con dichas versiones. Por ejemplo, en julio de 2016, Mesa admitía OpenGL ES 3.1, pero también todas las extensiones de OpenGL ES 3.2, excepto cinco, así como una serie de extensiones que no forman parte de ninguna versión de OpenGL o OpenGL ES. [20]

La tercera versión 17.2 está disponible desde septiembre de 2017 con algunas nuevas características de OpenGL 4.6 y mejoras de velocidad en 3D para Intel y AMD. Solo el 1,4 % de las pruebas fallan con OpenGL 4.5 en Nouveau para Kepler. [21]

La versión 17.3 de la cuarta versión está lista desde diciembre de 2017. Hay muchas mejoras disponibles en muchos controladores. OpenGL 4.6 está casi completamente disponible (Spir-V no está listo). El controlador AMD Vulkan RADV ahora es totalmente compatible con Khronos-Test. [22]

La primera versión de 2018 es 18.0 y está disponible desde marzo de 2018 con el mismo esquema en 2017. [23] El soporte completo de OpenGL 4.6 no está listo, pero muchas características y mejoras se probaron con éxito en RC3. El soporte de 10 bits para Intel i965 en Colors también es un punto destacado. [24] Una novedad es el soporte para Intel Cannon Lake y AMD Vega con la versión actual de Linux. Los chips AMD Evergreen (RV800 o R900) están cerca del soporte de OpenGL 4.5. Los chips AMD R600 o RV700 antiguos solo pueden soportar OpenGL 3.3 con algunas características de OpenGL 4.x. Freedreno es el controlador para hardware Adreno y soporte cercano a OpenGL 3.3.

La segunda versión de 2018 es la 18.1 y está disponible desde mayo. El objetivo es Vulkan 1.1.72 en los controladores Intel ANV y AMD RADV. OpenGL 4.6 con spir-V también es el objetivo principal. Es posible que se trabaje de forma permanente en la finalización de las funciones y la optimización de los controladores para hardware más antiguo como AMD R600/Evergreen, Nvidia Tesla y, antes, Fermi, Kepler o Intel Sandybridge, Ivybridge, Haswell o Broadwell. La arquitectura ARM también realizó grandes mejoras en Adreno 3xx/4xx/5xx y Broadwell VC4/VC5 para Raspi con el objetivo principal OpenGL ES.

La tercera versión de 2018 es la 18.2 y estará disponible en el calendario estable en septiembre. OpenGL 4.6 con spir-V y Vulkan 1.1.80 están en proceso. El controlador de software para máquinas virtuales VIRGL está listo para OpenGL 4.3 y OpenGL ES 3.2. RadeonSI también está listo para OpenGL ES 3.2. La compatibilidad con compresión de texturas ASTC y el soporte del modo de compatibilidad para OpenGL 4.4 (3.1 en 18.1) son otros puntos destacados de RadeonSI para tarjetas AMD GCN. El nuevo Vulkan 1.1 y más funciones para Intel y AMD están disponibles. Ver más detalles sobre Vulkan en Mesamatrix. [25]

La cuarta versión de 2018 es la 18.3 y se lanzó como versión estable 18.3.1 en diciembre de 2018. Muchas de las características se detallan y la compatibilidad con hardware más nuevo es una parte importante. La compatibilidad total con OpenGL 4.6 aún no está lista. [26] [27]

La primera versión de 2019 es la 19.0 y se lanzó en marzo. El soporte completo de OpenGL 4.6 aún no está listo, pero hay muchas mejoras en este sentido en todos los controladores. [28] [29]

La segunda versión de 2019 es la 19.1. La transición de TGSI a NIR es una de las principales características de cara a OpenGL 4.6 con Spir-V y más OpenCL. RadeonSI funciona bien en la versión de desarrollo con NIR. [30]

La tercera versión de 2019 es la 19.2. OpenGL 4.6 está listo para la versión beta del nuevo controlador Intel Iris. [31]

La cuarta versión de 2019 es la 19.3. OpenGL 4.6 está listo para Intel i965 y es opcional para el nuevo controlador Iris. [32]

La primera versión de 2020 es 20.0. Vulkan 1.2 está listo para AMD RADV e Intel ANV. Intel Iris es el valor predeterminado para Intel Broadwell Gen 8+. [33] [34] El controlador RadeonSI cambió para usar NIR de manera predeterminada, en lugar de TGSI.

La segunda versión de 2020 es la 20.1. Hay muchas mejoras listas para muchos controladores. Zink es un nuevo controlador virtual para OpenGL sobre Vulkan. [35]

La tercera versión de 2020 es 20.2. OpenGL 3.0 para Zink es una característica nueva. LLVMpipe admitirá OpenGL 4.3+ (4.5+ en 20.3). ARM Panfrost se ha mejorado en gran medida con muchos módulos. La memoria virtual compartida es posible para OpenCL en Nouveau con Pascal y versiones superiores. [36] [37] [38]

La cuarta versión de 2020 es la 20.3. v3d y v3dv son nuevos controladores para OpenGL y Vulkan 1.0 con hardware Broadcom como Raspberry Pi 4. OpenCL 1.2 es totalmente compatible con el módulo clover. Zink es compatible con OpenGL 3.3+. El controlador virtual LLVMpipe ahora es compatible con OpenGL 4.5+ con 4.6 en vista. Lavapipe (originalmente llamado Vallium [39] ) como Vulkan Tree de LLVMpipe se fusionó. [40] [41] [42] [43] [44]

En Mesa 21.0, d3d12 se fusionará con OpenGL 3.0 a 3.3. Microsoft y Collabora desarrollan una nueva emulación de d3d12 en WSL2 para Windows 10 con Direct 3D 12. OpenCL 1.2 también es un objetivo en d3d12. Se realiza una aceleración del factor 2 a 5 en Benchmark SPECviewperf con código OpenGL mejorado. [45] [46] [47] [48] Muchas características de Mesa 21.0 mejoran el rendimiento. [49] La nueva versión 21.0.0 es pública desde el 11 de marzo de 2021.

Mesa 21.1 es el segundo lanzamiento del año 2021. [50] OpenGL 4.6+ y OpenGL ES 3.1+ están disponibles para Zink. El controlador AMD 600g puede cambiar a NIR con más posibilidades para las antiguas tarjetas Radeon HD 5000 y 6000. [51] Qualcomm Turnip alcanza Vulkan 1.1+ y la emulación de software Lavapipe Vulkan 1.1+. El controlador de GPU Google VirtIO Venus con Vulkan 1.2+ se fusiona en estado experimental con bajo rendimiento en el árbol principal de Mesa. [52]

Mesa 21.2 es el tercer lanzamiento del año 2021. El controlador de E/S de Google Virtual Vulkan Venus se presentará oficialmente con soporte completo para Vulkan 1.2+ (más mesamatrix). ARM Panfrost: está disponible el soporte para OpenGL ES 3.1+ y panVK es el nuevo controlador de Vulkan. El soporte inicial comenzó para ARM Apple M1 con el nuevo controlador Asahi. 21.2 está disponible desde el 4 de agosto de 2021. [53]

Un plan antiguo es dividir los controladores antiguos en un árbol clásico con muchas ventajas en programación, soporte, corrección de errores para la parte moderna de Gallium 3D. Un problema aquí es Intel i965 con soporte de hardware antiguo popular para Intel Haswell y antes también con soporte para Windows 10. [54] Un nuevo controlador Gallium3D Crocus para Intel Gen 4 Graphics para Haswell está aquí en desarrollo para completar aquí el área de gallium3D con posible división en la próxima época del año 2021. Crocus está disponible opcionalmente en 21.2. [55] La rama Amber es para controladores antiguos sin funciones Gallium 3D como Radeon R200, Intel i915 y 965 con la versión actual 21.3.9. [56]

En la versión 22.0, los controladores clásicos se han retirado. Vulkan 1.3 está disponible para Intel Anvil y AMD RADV. [57]

Microsoft presenta el nuevo controlador «Dozen» para WSL 2 en la etapa inicial de desarrollo como Vulkan sobre d3d12 en Mesa 22.1. [58]

RustiCL está disponible en 22.3 con conformidad oficial con OpenCL 3.0 para gráficos Intel XE. El rendimiento es igual o mejor que el de AMD ROCm con la tarjeta AMD 6700 XT. [59] [60]

Un objetivo principal del desarrollo de Mesa 23.0 fue el trazado de rayos para Vulkan. [61] [62]

Microsoft desarrolla el controlador Dozen para Vulkan en WSL. Vulkan 1.0+ con 80% 1.1 y 1.2 estará disponible en Mesa 23.2 después de un retraso en la versión 23.1 (consulte mesamatrix). [63] RustiCL para hardware AMD está disponible en la versión 23.1. [64]

VirGL para máquinas virtuales salta de Mesa 23.2 a OpenGL 4.6. [65] Apple Asahi para Apple Arm Machines salta de OpenGL 2.1 a 3.1 con un 90% de características de OpenGL 3.2 y 3.3 y OpenGL ES 2.0 a 3.0. [66]

Microsoft admite en WSL OpenGL 4.6+ en Mesa 24.0 (en Mesa 23.3: 4.3+) con una docena de controladores de traducción directa. [67]

Tabla de API de renderizado

Versión MesaFecha del primer lanzamientoÚltima actualización [68]VulcanoOpenCLOpenGLOpenGL ESOpenVGEGLGLXDirect3D
1.3.264
8 de septiembre de 2023
3.0
30 de noviembre de 2020
4.6
31 de julio de 2017
3.2.6
10 de julio de 2019
1.1
3 de diciembre de 2008
1.5
19 de marzo de 2014
1.4
16 de diciembre de 2005
12
2015-07-29
Versión estable actual: 23.110 de mayo de 202323.1.8 [23] [69]1.3.244: 1.3+ (Intel Gen8+ a XE, AMD GCN Gen2+ a RDNA3, Lavapipe, Google Venus), 1.1+ (Qualcomm Turnip), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK)1.0, 1.1, 1.2 (soporte completo), 3.0 (en proceso, algunas funciones en 21.1), [41] OpenCL 1.2+ y 3.0 con el nuevo RustiCL para AMD GCN e Intel Xe (Mesa 22.3+), AMD R600, Nvidia Fermi+ (Mesa 23.1+)4.6 (19.3: Intel Gen 8+, 20.0: AMD GCN, 21.1: Zink, llvmpipe, 21.2: Intel Gen 7.5)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)[70] [71]1.51.49.0c [72] [73]
Versión antigua, pero aún mantenida:23.023 de febrero de 202323.0.4 [23] [74]1.3.232: prácticamente igual a 23,1
Versión antigua, ya no se mantiene:22.330 de noviembre de 202222.3.7 [23] [75]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)
Versión antigua, ya no se mantiene:22.221 de septiembre de 202222.2.5 [23] [76]
Versión antigua, ya no se mantiene:22.120 de mayo de 202222.1.7 [23] [77]
Versión antigua, ya no se mantiene:22.009-03-202222.0.5 [23] [78]
Versión antigua, ya no se mantiene:21.317 de noviembre de 202121.3.9 [23] [79]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))
Versión antigua, ya no se mantiene:21.204-08-202121.2.6 [23] [80]
Versión antigua, ya no se mantiene:21.15 de mayo de 202121.1.8 [23] [81]
Versión antigua, ya no se mantiene:21.011-03-202121.0.3 [23] [82]
Versión antigua, ya no se mantiene:20.303-12-202020.3.5 [23] [83]20.3: 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv (20.3))
Versión antigua, ya no se mantiene:20.228 de septiembre de 202020.2.6 [23] [84]1.0, 1.1, 1.2 (WIP) algunas pruebas de conformidad fallaron
Versión antigua, ya no se mantiene:20.127 de mayo de 202020.1.10 [23] [35]
Versión antigua, ya no se mantiene:20.019 de febrero de 202020.0.8 [23] [85]1.2+ (Intel Gen8+, AMD GCN Gen2+)
Versión antigua, ya no se mantiene:19.311 de diciembre de 201919.3.5 [23] [86] [87]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)
Versión antigua, ya no se mantiene:19.225 de septiembre de 201919.2.8 [23]4.5
Versión antigua, ya no se mantiene:19.111 de junio de 201919.1.8 [23]
Versión antigua, ya no se mantiene:19.013-03-201919.0.8
Versión antigua, ya no se mantiene:18.37 de diciembre de 201818.3.6
Versión antigua, ya no se mantiene:18.207-09-201818.2.8 [25]
Versión antigua, ya no se mantiene:18.118-05-201818.1.9 [88]1.1 (Intel Gen8+, AMD GCN Gen2+) (1.1.73)
Versión antigua, ya no se mantiene:18.027-03-201818.0.51.0+ (1.0.66)
Versión antigua, ya no se mantiene:17.308-12-201717.3.91.0 (PC: ANV Intel Gen7+ Ivy Bridge, RADV AMD GCN únicamente) (encabezado: 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)en desarrollo por Gallium
Compute (Clover):
algunas pruebas CTS fallan
en 1.0 y 1.1,
1.2 (WIP),
por lo que 1.0, 1.1, 1.2
están incompletas [89] [90]
Versión antigua, ya no se mantiene:17.204-09-201717.2.8
Versión antigua, ya no se mantiene:17.110 de mayo de 201717.1.10
Versión antigua, ya no se mantiene:17.013 de febrero de 2017 [91] [10]17.0.7
Versión antigua, ya no se mantiene:13.01 de noviembre de 2016 [92]13.0.64.4
(4.5 Sin etiqueta de prueba)
Versión antigua, ya no se mantiene:12.008-07-2016 [93]12.0.64.3 [93]3.1
Versión antigua, ya no se mantiene:11.204-04-2016 [94]11.2.24.1 (Intel 3.3+)
Versión antigua, ya no se mantiene:11.115 de diciembre de 2015 [95]11.1.43.0
Versión antigua, ya no se mantiene:11.012 de septiembre de 2015 [96]11.0.9
Versión antigua, ya no se mantiene:10.615 de junio de 2015 [97]10.6.93.3 [98]1.4
Versión antigua, ya no se mantiene:10.56 de marzo de 2015 [99]10.5.91.1
Versión antigua, ya no se mantiene:10.414 de diciembre de 2014 [100]10.4.7
Versión antigua, ya no se mantiene:10.319 de septiembre de 2014 [101]10.3.7
Versión antigua, ya no se mantiene:10.26 de junio de 2014 [102]10.2.9
Versión antigua, ya no se mantiene:10.14 de marzo de 2014 [103]10.1.6
Versión antigua, ya no se mantiene:10.030 de noviembre de 2013 [104]10.0.5
Versión antigua, ya no se mantiene:9.008-10-20129.0.3, 9.1.7, 9.2.53.12.0
Versión antigua, ya no se mantiene:8.008-02-20128.0.53.0
Versión antigua, ya no se mantiene:7.022 de junio de 20077.0.4, ..., 7.11.22.1
Versión antigua, ya no se mantiene:6.06 de enero de 20046.0.11.51.3
Versión antigua, ya no se mantiene:5.013 de noviembre de 20025.0.21.4
Versión antigua, ya no se mantiene:4.022 de octubre de 20014.0.41.3
Versión antigua, ya no se mantiene:3.01998-093.1, 3.2.1, 3.4.2.11.2
Versión antigua, ya no se mantiene:2.01996-102.61.1
Versión antigua, ya no se mantiene:1.01995-021.2.81.0
Leyenda:
Versión antigua, sin mantenimiento
Versión antigua, aún mantenida
Última versión
Última versión preliminar
Lanzamiento futuro

Vulcano

El Grupo Khronos anunció oficialmente la API de Vulkan en marzo de 2015 y lanzó oficialmente Vulkan 1.0 el 16 de febrero de 2016. Vulkan rompe la compatibilidad con OpenGL y abandona por completo su concepto de máquina de estados monolítica. Los desarrolladores de Gallium3D llamaron a Vulkan algo parecido a Gallium3D 2.0: Gallium3D separa el código que implementa la máquina de estados de OpenGL del código específico del hardware.

La versión 1.3 está disponible de inmediato con Mesa 22.0. El hardware compatible con OpenGL ES 3.1 debe funcionar con Vulkan Level 1.3 y versiones anteriores. [105]

Así como Gallium3D ingiere TGSI, Vulkan ingiere SPIR-V ( Representación intermedia portátil estándar versión "V" como en "Vulkan").

Intel lanzó su implementación de un controlador Vulkan para su hardware el día en que se lanzó oficialmente la especificación, pero recién se incorporó a la línea principal en abril y, por lo tanto, se convirtió en parte de Mesa 12.0, lanzado en julio de 2016. Si bien el controlador i965 no se escribió de acuerdo con las especificaciones de Gallium3D, para el controlador Vulkan tiene aún menos sentido colocarlo sobre Gallium3D. De manera similar, no hay ninguna razón técnica para colocarlo sobre NIR, pero aún así, los empleados de Intel implementaron su controlador Vulkan de esa manera. [106]

Es de esperar que el controlador Vulkan propietario de AMD, que se lanzó en marzo [¿ cuándo? ] y se anunció que se lanzaría como software libre y de código abierto en el futuro y se integraría en Mesa, también abandone Gallium3D. [107]

RADV es un proyecto gratuito para AMD y está disponible desde la versión 13. [9] La compatibilidad con Khronos-Test llegó en la versión 17.3. Actualmente, es totalmente compatible con Vulkan 1.0 y 1.1 desde Mesa 18.1.

Nvidia lanzó su controlador propietario GeForce con soporte Vulkan el día del lanzamiento e Imagination Technologies (PowerVR), Qualcomm (Adreno) y ARM (Mali) han hecho lo mismo o al menos han anunciado controladores propietarios Vulkan para Android y otros sistemas operativos. Pero aún queda por ver cuándo aparecerán implementaciones de Vulkan gratuitas y de código abierto adicionales para estas GPU.

El controlador de software de Mesa VIRGL comienza el desarrollo de Vulkan en 2018 con proyectos GSOC para brindar soporte a máquinas virtuales. [108]

Lavapipe es un controlador Vulkan basado en software de CPU y hermano de LLVMpipe. La versión 21.1 de Mesa es compatible con Vulkan 1.1+. [109]

Google presenta el controlador Venus Vulkan para máquinas virtuales en Mesa 21.1 con soporte completo para Vulkan 1.2+. [52]

Qualcomm Turnip y Broadcom v3dv son nuevos controladores para hardware Qualcomm Adreno y Broadcom Raspberry 4. Turnip es el hermano Vulkan de freedreno para OpenGL. V3dv es compatible con Vulkan 1.0+ desde Mesa 20.3. En la versión 21.1, Turnip es compatible con Vulkan 1.1+. [110] [111] [112]

Panfrost PanVK para ARM Mali está en camino a Vulkan 1.1, pero solo la versión 1.0 estable está disponible con Mesa 22.0. [113]

El proyecto Dozen está conectando Direct 3D 12 (d3d12) con Vulkan para la emulación de Linux WSL2 en Windows 10 y 11. En Mesa 23.2, Vulkan 1.0 es totalmente compatible y tiene un 80 % de compatibilidad con 1.1 y 1.2 (mesamatrix). [114] [115]

Esgrima explícita

Un tipo de barrera de memoria que separa un búfer del resto de la memoria se denomina valla. Las vallas están ahí para garantizar que un búfer no se sobrescriba antes de que se completen las operaciones de renderizado y visualización en él. El vallado implícito se utiliza para la sincronización entre los controladores gráficos y el hardware de la GPU. La valla indica cuándo un componente ya no utiliza un búfer para que otro pueda operar en él o reutilizarlo. En el pasado, el núcleo de Linux tenía un mecanismo de vallado implícito, en el que una valla se adjunta directamente a un búfer (cf. identificadores GEM y FD), pero el espacio de usuario no lo sabe. El vallado explícito expone las vallas al espacio de usuario, donde el espacio de usuario obtiene vallas tanto del subsistema Direct Rendering Manager (DRM) como de la GPU. Vulkan requiere el vallado explícito y ofrece ventajas para el seguimiento y la depuración.

El kernel 4.9 de Linux agregó el marco de sincronización de Android a la línea principal. [116]

Gestión genérica de buffer

La gestión genérica de búfer (GBM) es una API que proporciona un mecanismo para asignar búferes para la representación de gráficos vinculada a Mesa. GBM está pensada para utilizarse como plataforma nativa para EGL en DRM o openwfd. El identificador que crea se puede utilizar para inicializar EGL y crear búferes de destino de representación. [117]

Mesa GBM es una abstracción de las API de administración de búfer específicas del controlador de gráficos (por ejemplo, las diversas bibliotecas libdrm_*), implementadas internamente mediante llamadas a los controladores de GPU de Mesa.

Por ejemplo, el compositor Wayland Weston realiza su renderización utilizando OpenGL ES 2, que inicializa llamando a EGL. Dado que el servidor se ejecuta en el " controlador KMS básico ", utiliza la plataforma EGL DRM, que en realidad podría llamarse plataforma GBM, ya que se basa en la interfaz GBM de Mesa.

En XDC2014, el empleado de Nvidia Andy Ritger propuso mejorar EGL para reemplazar a GBM. [118] Esto no fue tomado positivamente por la comunidad y Nvidia eventualmente cambió de opinión [119] y adoptó otro enfoque.

Implementaciones de API de aceleración de video

Hay tres formas posibles de realizar los cálculos necesarios para la codificación y decodificación de transmisiones de vídeo:

  1. utilizar una implementación de software de un algoritmo de compresión o descompresión de video (comúnmente llamado CODEC) y ejecutar este software en la CPU
  2. utilizar una implementación de software de un algoritmo de compresión o descompresión de video (comúnmente llamado CODEC) y ejecutar este software en la GPU (el motor de renderizado 3D )
  3. utilizar una implementación de hardware completa (o parcial) de un algoritmo de compresión o descompresión de vídeo; se ha vuelto muy común integrar dichos ASIC en el chip de la GPU/CPU/SoC y, por lo tanto, están disponibles en abundancia; por razones de marketing, las empresas han establecido marcas para sus ASIC, como PureVideo (Nvidia), Unified Video Decoder (AMD), Video Coding Engine (AMD), Quick Sync Video (Intel), DaVinci (Texas Instruments), CedarX (Allwinner), Crystal HD (Broadcom); algunos ASIC están disponibles para licencia como núcleo de propiedad intelectual de semiconductores ; por lo general, diferentes versiones implementan diferentes algoritmos de compresión y/o descompresión de vídeo; el soporte para dichos ASIC generalmente pertenece al controlador del núcleo, para inicializar el hardware y hacer cosas de bajo nivel. Mesa, que se ejecuta en el espacio de usuario, alberga las implementaciones de varias API para software, por ejemplo, VLC media player , GStreamer , HandBrake , etc., para acceder cómodamente a dichos ASIC:

Por ejemplo, Nouveau , que se ha desarrollado como parte de Mesa, pero que también incluye un componente de kernel de Linux, que se está desarrollando como parte del kernel de Linux, admite los ASIC de marca PureVideo y proporciona acceso a ellos a través de VDPAU y en parte a través de XvMC . [120]

El controlador gratuito Radeon admite el decodificador de video unificado y el motor de codificación de video a través de VDPAU y OpenMAX. [121]

V4L2 es una interfaz de kernel a espacio de usuario para transmisiones de bits de video entregadas por cámaras web o sintonizadores de TV.

Debido a preocupaciones sobre patentes con respecto a los códecs de video H.264 , H.265 y VC-1 , Fedora Linux deshabilitó el soporte para la aceleración VAAPI para aquellos en su compilación de Mesa en septiembre de 2022. [122]

Controladores de dispositivos

Los controladores de dispositivos gráficos se implementan utilizando dos componentes: un UMD (controlador de modo usuario) y un KMD (controlador de modo kernel). A partir del kernel de Linux 4.2, AMD Catalyst y Mesa compartirán el mismo controlador de kernel de Linux: amdgpu . Amdgpu proporciona interfaces definidas por DRM y KMS.

Los controladores de dispositivos gratuitos y de código abierto disponibles para chipsets gráficos están "administrados" por Mesa (porque la implementación de API libre y de código abierto existente se desarrolla dentro de Mesa). Actualmente hay dos marcos para escribir controladores gráficos: "clásico" y Gallium3D. [123] En mesamatrix.net se ofrece una descripción general de algunos (pero no todos) de los controladores disponibles en Mesa .

Existen controladores de dispositivos para tarjetas AMD/ATI R100 a R800, Intel y Nvidia con aceleración 3D. Anteriormente existían controladores para el procesador IBM/Toshiba/Sony Cell de PlayStation 3 , chipsets S3 Virge y Savage , chipsets VIA, Matrox G200 y G400, y más. [124]

Los controladores gratuitos y de código abierto compiten con los controladores propietarios de código cerrado. Dependiendo de la disponibilidad de documentación de hardware y de la mano de obra, los controladores gratuitos y de código abierto se quedan más o menos atrás en cuanto a la compatibilidad con la aceleración 3D del nuevo hardware. Además, el rendimiento de la renderización 3D era normalmente significativamente más lento con algunas excepciones notables. [125] [126] [127] [128] Hoy en día esto sigue siendo cierto para Nouveau en la mayoría de las GPU NVIDIA, mientras que en las GPU Radeon de AMD el controlador abierto ahora iguala o supera en gran medida el rendimiento del controlador propietario.

Infraestructura de renderizado directo (DRI)

En el momento en que las tarjetas gráficas 3D se volvieron más comunes para las PC, las personas, parcialmente apoyadas por algunas compañías, comenzaron a trabajar para agregar más soporte para renderizado 3D acelerado por hardware a Mesa. [ ¿Cuándo? ] La Infraestructura de Renderizado Directo (DRI) fue uno de estos enfoques para interconectar Mesa, OpenGL y otras bibliotecas API de renderizado 3D con los controladores de dispositivos y el hardware. Después de alcanzar un nivel básico de usabilidad, el soporte DRI se agregó oficialmente a Mesa. Esto amplió significativamente la gama disponible de soporte de hardware que se puede lograr al usar la biblioteca Mesa. [129]

Con la adaptación a DRI, la biblioteca Mesa finalmente asumió el rol de componente front-end de un marco OpenGL a gran escala con diversos componentes back-end que podían ofrecer distintos grados de soporte de hardware 3D sin perder la capacidad total de renderización de software. El sistema total utilizó muchos componentes de software diferentes. [129]

Si bien el diseño requiere que todos estos componentes interactúen cuidadosamente, las interfaces entre ellos son relativamente fijas. No obstante, como la mayoría de los componentes que interactúan con la pila Mesa son de código abierto, el trabajo experimental a menudo se realiza modificando varios componentes a la vez, así como las interfaces entre ellos. Si tales experimentos resultan exitosos, se pueden incorporar en la próxima versión principal o secundaria. Esto se aplica, por ejemplo, a la actualización de la especificación DRI desarrollada en el período 2007-2008. El resultado de esta experimentación, DRI2, opera sin bloqueos y con un soporte de búfer de respaldo mejorado. Para esto, se creó una rama git especial de Mesa. [130]

El controlador Intel admite DRI3 desde 2013 [131] [132] y es la opción predeterminada en algunas distribuciones Linux desde 2016 [133] para habilitar la compatibilidad con Vulkan y más. También es la opción predeterminada en el hardware AMD desde finales de 2016 (X.Org Server 1.18.3 y versiones posteriores). [134]

Renderizador de software

Mesa también contiene una implementación de renderizado de software llamada swrast que permite que los sombreadores se ejecuten en la CPU como una alternativa cuando no hay aceleradores de hardware de gráficos presentes. El rasterizador de software Gallium se conoce como softpipe o cuando se crea con soporte para LLVM llvmpipe , que genera código de CPU en tiempo de ejecución. [135] [136] Desde Mesa 10.x OpenGL 3.3+ es compatible con Softpipe (10.3) y LLVMpipe (10.2). En realidad, alrededor del 80% de las características de OpenGL 4.x están implementadas en Mesa 17.3 (consulte Mesamatrix).

En Mesa 12.0 está disponible un nuevo Intel Rasterizer OpenSWR con grandes ventajas en clústeres para grandes conjuntos de datos. Está más enfocado en la visualización de ingeniería que en la creación de imágenes de juegos o arte y solo puede funcionar en procesadores x86. [137] Por otro lado, ahora se admite OpenGL 3.1+. [138] Se midieron valores de aceleración de 29 a 51 relacionados con LLVMPIPE en algunos ejemplos. [139] OpenGL 3.3+ es compatible con OpenSWR desde Mesa 17.1.

VirGL es un rasterizador para máquinas virtuales implementado en Mesa 11.1 desde 2015 con soporte para OpenGL 3.3 y mostrado en Mesamatrix desde Mesa 18. En la nueva versión de Mesa 18.2, es compatible con más OpenGL 4.3 y OpenGL ES 3.2 que los demás. Alrededor del 80% de las características de OpenGL 4.4 y 4.5 también están listas. El desarrollo de Vulkan comienza con los proyectos GSOC 2018. [140] [141] [142] [108] [143] [144] [145]

El estado actual de virGL en Mesamatrix es soporte completo de OpenGL 4.6+ y OpenGL ES 3.2+ con algún software Linux necesario. [146]

D3d12 es un proyecto de Microsoft para la emulación WSL2 de OpenGL 3.3+ y OpenCL 1.2+ con Direct3D 12. D3D12 se fusionó en 21.0. [45] El estado actual en Mesa 23.1 es OpenGL 4.2+ con casi 4.4+ y OpenGL ES 3.1+.

Venus es un nuevo controlador de GPU Vulkan VirtIO para GPU en máquinas virtuales de Google. Venus se fusionó en la versión 21.1 y se introdujo para el público en la versión 21.2. [52] Venus es compatible con Vulkan 1.3+ en Mesa 23.1. El hardware mínimo es Vulkan 1.1 con algunas extensiones. [147]

Mega conductores

La idea de agrupar varios controladores en un único "mega" controlador fue propuesta por Emma Anholt. Permite que se utilice una única copia del código Mesa compartido entre varios controladores (en lugar de que exista en cada controlador por separado) y ofrece un mejor rendimiento que una biblioteca compartida independiente debido a la eliminación de la interfaz de biblioteca interna. [148] Los rastreadores de estado para VDPAU y XvMC se han convertido en bibliotecas independientes. [149]

base de datos de sombreado

shader-db es una colección de aproximadamente 20.000 shaders recopilados de varios juegos de computadora y pruebas comparativas, así como algunos scripts para compilarlos y recopilar algunas estadísticas. Shader-db está diseñado para ayudar a validar una optimización.

Se observó que una cantidad inesperada de sombreadores no están escritos a mano, sino generados. Esto significa que estos sombreadores se escribieron originalmente en HLSL y luego se tradujeron a GLSL mediante algún programa traductor, como por ejemplo HLSL2GLSL . El problema es que el código generado a menudo dista mucho de ser óptimo. Matt Turner dijo que era mucho más fácil solucionar esto en el programa traductor que tener que hacer que el compilador de Mesa se hiciera cargo de lidiar con sombreadores tan inflados.

Shader-db no puede considerarse software libre y de código abierto. Para usarlo legalmente, es necesario tener una licencia para todos los juegos de computadora de los que forman parte los shaders.

Arquitectura de software

Un controlador gráfico consta de una implementación de la máquina de estados OpenGL y una pila de compilación para compilar los sombreadores en el lenguaje de máquina de la GPU. Esta compilación, así como prácticamente cualquier otra cosa, se ejecuta en la CPU, luego los sombreadores compilados se envían a la GPU y son ejecutados por esta. (SDL = Simple DirectMedia Layer ).
Las representaciones intermedias (IR) en Mesa: GLSL IR, Mesa IR, TGSI y LLVM IR . Faltan HIR, LIR y NIR.
Está previsto que Mesa IR se elimine por completo.

Los denominados "controladores de dispositivos gráficos en modo usuario" (UMD) de Mesa tienen muy pocos puntos en común con lo que generalmente se denomina un controlador de dispositivo . Existen un par de diferencias:

  • Están pensados ​​para funcionar sobre controladores de dispositivos gráficos en modo kernel que ya existen, por ejemplo, como parte del kernel de Linux que se encuentra en el código fuente en /drivers/gpu/drm/Cada UMD se comunica con su contraparte en modo kernel con la ayuda de una biblioteca específica, llamada libdrm_specific y una genérica, llamada libdrm . Esta sección se centrará únicamente en la parte del modo de usuario sobre libdrm
  • Existe alguna implementación de la máquina de estados finitos, como se especifica, por ejemplo, en OpenGL; esta implementación de la máquina de estados de OpenGL puede compartirse entre varios UMD o no.
  • Consisten en gran parte en algún tipo de compilador, que ingiere, por ejemplo, GLSL y, finalmente, genera código de máquina . Los analizadores pueden compartirse entre varios UMD o ser específicos.

Representaciones intermedias de Mesa

Uno de los objetivos de Mesa es la optimización del código que se va a ejecutar en la GPU correspondiente. Otro es compartir el código. En lugar de documentar las piezas de software, este artículo analizará las representaciones intermedias que se utilizan en el proceso de compilación y optimización. Consulte el árbol de sintaxis abstracta (AST) y el formulario de asignación única estática (formulario SSA).

SPIR-V

SPIR-V es una versión determinada de la Representación Intermedia Portátil Estándar . La idea es que las aplicaciones gráficas generen SPIR-V en lugar de GLSL. A diferencia de este último, SPIR-V es binario para evitar diferencias de implementación entre los frontends de compiladores GLSL de diferentes implementaciones de controladores, ya que esto ha sido una fuente importante de incompatibilidades y errores de aplicación. Además, el binario de SPIR-V generalmente también pasa por algunas optimizaciones generales. La representación binaria de SPIR-V también ofrece cierto grado de ofuscación, que puede resultar atractivo para algunos proveedores de software como una forma de protección de la propiedad intelectual; sin embargo, SPIR-V contiene abundante información para la reflexión y existen herramientas que traducen SPIR-V nuevamente a un código de alto nivel legible para humanos y de alta calidad. Un UMD solo necesita aplicar optimizaciones que sean específicas para el hardware compatible.

  • Especificación SPIR-V (provisional)

GLSL IR

  • cgit.freedesktop.org/mesa/mesa/tree/src/compiler/glsl/README
  • XDC2014, Matt Turner: Vídeo en YouTube , Matt Turner - Compilador GLSL: dónde hemos estado y hacia dónde vamos
  • XDC2015, Matt Turner: Vídeo en YouTube , www.x.org/wiki/Events/XDC2015/Program/turner_glsl_compiler.pdf

Mesa IR

RNI

NIR (New Internal Representation) se introdujo para superar las limitaciones de TGSI. [150] [151] NIR se amplió en las últimas versiones y en las actuales como base del soporte de Spir-V y es desde 2016 el área de desarrollo principal. LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 se cambiaron de TGSI a NIR. RADV, Zink y otros controladores nuevos comienzan con NIR. Todos los controladores con soporte completo de OpenGL 4.6 están relacionados con NIR por el soporte de SPIR-V. Además, AMD r600 tiene una bifurcación con NIR para un mejor soporte de las series HD5000 y HD6000. Esta opción para r600 es predeterminada desde Mesa 21.0.

  • Connor Abbott - NIR, o más allá del GLSL IR en Mesa XDC2014
    • (Mesa-dev) 2014-12-15 Reintroducción de NIR, un nuevo IR para mesa
  • cgit.freedesktop.org/mesa/mesa/tree/src/compiler/nir/README
  • fosdem.org/2016/schedule/event/i965_nir/attachments/slides/1113/export/events/attachments/i965_nir/slides/1113/nir_vec4_i965_fosdem_2016_rc1.pdf
  • NIR en RadeonSI
  • Nueva actualización 2018
  • Nuevo con NIR en Mesa 19.3

TGSI

Tungsten Graphics Shader Infrastructure (TGSI) fue introducida en 2008 por Tungsten Graphics. Todos los UMD de estilo Gallium3D incorporan TGSI. NIR es ahora el área de desarrollo principal, por lo que TGSI solo es para controladores más antiguos, como la infraestructura predeterminada r300g, y quedará obsoleto en algunos años.

El código GLSL-To-TGSI se eliminará en Mesa 22.2. El valor predeterminado es el nuevo NIR-to-TGSI con GLSL-to-NIR para todos los controladores NIR nativos. Algunos controladores TGSI más antiguos son compatibles con esta ruta de código NIR. Más adelante, NIR-To-TGSI quedará obsoleto solo para los controladores NIR nativos. [152]

LLVM IR

Los UMD radeonsino llvmpipegeneran código de máquina, sino LLVM IR. A partir de aquí, LLVM realiza optimizaciones y la compilación a código de máquina. Esto significa que también se debe instalar una determinada versión mínima de LLVM.

ACO IR de RADV

RADV ACO utiliza su propio IR, cercano al NIR, para optimizar y generar código binario final para los shaders Vulkan SPIR-V sobre GPU Radeon (GCN 1+, también conocidas como GFX6+). A partir de la versión 20.1.0, el ACO solo se utiliza en RADV (controlador Vulkan) y todavía no en RadeonSI.

Compilador GLSL de Mesa

El compilador GLSL de Mesa genera su propio IR. Debido a que cada controlador tiene requisitos muy diferentes a los de un LIR, diferencia entre HIR (IR de alto nivel) y LIR (IR de bajo nivel).

Galio 3D

Galio 3D
Autor(es) original(es)Tungsten Graphics (ahora VMware )
Versión preliminar
0.4 [153] / 24 de abril de 2010 ; hace 14 años ( 24 de abril de 2010 )
Repositorio
  • gitlab.freedesktop.org/mesa/mesa
Escrito enC++ , C , lenguaje ensamblador
Sistema operativoMultiplataforma
TipoBiblioteca de gráficos
LicenciaLicencia MIT
Sitio webwww.freedesktop.org/wiki/Software/gallium/

Gallium3D es un conjunto de interfaces y una colección de bibliotecas de soporte [154] destinadas a facilitar la programación de controladores de dispositivos para chipsets de gráficos 3D para múltiples sistemas operativos, API de renderizado o aceleración de vídeo. Es un software de controlador de dispositivos gráficos gratuito y de código abierto .

Se proporciona una matriz de características en mesamatrix.net .

El desarrollo de Gallium3D comenzó en 2008 en Tungsten Graphics, [155] y la implementación está disponible como software libre y de código abierto como parte de Mesa 3D alojado por freedesktop.org . El objetivo principal es facilitar el desarrollo de controladores, agrupando el código duplicado de varios controladores diferentes en un solo punto y brindar soporte a las arquitecturas de hardware modernas. Esto se logra proporcionando una mejor división del trabajo, por ejemplo, dejando la gestión de la memoria al controlador DRI del núcleo .

Gallium3D ha sido parte de Mesa desde 2009 [156] y actualmente lo utiliza el controlador de gráficos gratuito y de código abierto para Nvidia ( proyecto nouveau ), [157] [158] para R300R900 de AMD , [159] [160] [161] el controlador 'Iris' de Intel para iGPU de generación 8+ [162] y para otros controladores de dispositivos GPU gratuitos y de código abierto .

Arquitectura de software

Gallium3D facilita la programación de controladores de dispositivos dividiendo el controlador del dispositivo gráfico en tres partes. Esto se logra mediante la introducción de dos interfaces : la interfaz de seguimiento de estado de Gallium3D y la interfaz WinSys de Gallium3D . Los tres componentes se denominan:

Rastreador de estado de Gallium3D
Cada API gráfica mediante la cual se accede a un controlador de dispositivo tiene su propio State Tracker, por ejemplo, existe un State Tracker de Gallium3D para OpenGL y otro diferente para Direct3D o GLX . Cada State Tracker contiene una implementación de la interfaz de State Tracker de Gallium3D y es único, es decir, lo comparten todos los controladores de dispositivo Gallium3D existentes.
Controlador de dispositivo de hardware Gallium3D
Este es el código real, que es específico para el acelerador gráfico 3D subyacente, pero solo en la medida en que lo permite la interfaz Gallium3D WinSys. Hay un controlador de dispositivo de hardware Gallium3D único para cada chip gráfico disponible y cada uno implementa la interfaz Gallium3D State Tracker, así como la interfaz Gallium3D WinSys. El controlador de dispositivo de hardware Gallium3D solo entiende TGSI (Tungsten Graphics Shader Infrastructure), un lenguaje intermedio para describir shaders. Este código tradujo shaders traducidos de GLSL a TGSI y luego los convirtió en un conjunto de instrucciones implementado por la GPU.
Gallium3D WinSys
Esto es específico del núcleo subyacente del sistema operativo y cada uno implementa la interfaz WinSys de Gallium3D para interactuar con todos los controladores de dispositivos de hardware Gallium3D disponibles.
Tanto VC4 como freedreno pueden consumir NIR directamente (y recurrir a tgsi_to_nir para los sombreadores que no usan glsl_to_nir).
Ilustración de la pila de gráficos de Linux
Mesa/ DRI y Gallium3D tienen diferentes modelos de controladores. Ambos comparten una gran cantidad de código libre y de código abierto .
Una posible matriz de ejemplo al implementar el modelo de controlador Gallium3D. Gracias a la introducción de la interfaz Gallium3D Tracker y la interfaz Gallium3D WinSys, solo se requieren 18 módulos en lugar de 36. Cada módulo WinSys puede funcionar con cada módulo de controlador de dispositivo Gallium3D y con cada módulo State Tracker.

Diferencias con los controladores gráficos clásicos

Gallium3D proporciona una API unificada que expone funciones de hardware estándar, como unidades de sombreado que se encuentran en hardware moderno. Por lo tanto, las API 3D como OpenGL 1.x/2.x, OpenGL 3.x, OpenVG , infraestructura GPGPU o incluso Direct3D (como se encuentra en la capa de compatibilidad de Wine ) necesitarán solo un único back-end, llamado rastreador de estado, que apunte a la API de Gallium3D. Por el contrario, los controladores de dispositivos DRI de estilo clásico requieren un back-end diferente para cada plataforma de hardware y varias otras API necesitan traducción a OpenGL a expensas de la duplicación de código. [163] [164] [165] Todos los controladores de dispositivos de proveedores, debido a su naturaleza propietaria y de código cerrado, están escritos de esa manera, lo que significa que, por ejemplo, AMD Catalyst implementa tanto OpenGL como Direct3D , y los controladores de proveedores para GeForce tienen sus implementaciones.

En Gallium3D, los controladores del kernel de Direct Rendering Manager (DRM) administrarán la memoria y los controladores de Direct Rendering Interface (DRI2) estarán más orientados al procesamiento de la GPU. [166] Durante el período de transición de la configuración del modo de espacio de usuario a la configuración del modo de espacio de kernel, algunos de los controladores de Mesa 3D, como el controlador radeon o los controladores de Intel, terminaron admitiendo tanto DRI1 como DRI2 y usaron DRI2 si estaba disponible en el sistema. Gallium3D además requiere un nivel de compatibilidad con sombreadores que no está disponible en tarjetas más antiguas como, por ejemplo, ATi r100-r200, por lo que los usuarios de esas tarjetas deben seguir usando Mesa 3D con DRI2 para su uso 3D.

Infraestructura de sombreado de gráficos de tungsteno

Tungsten Graphics Shader Infrastructure ( TGSI ) es una representación intermedia como la representación intermedia LLVM o la nueva representación intermedia portátil estándar (SPIR) que se utilizará en la API de Vulkan y OpenCL 2.1. Los sombreadores escritos en lenguaje de sombreado OpenGL se deben traducir/compilar en TGSI, luego se realizan optimizaciones y luego los sombreadores TGSI se compilan en sombreadores para el conjunto de instrucciones de la GPU utilizada.

NIR es la nueva representación de capas en Mesa con soporte completo para SPIR-V y desde 2019 el área de desarrollo principal de todos los controladores más nuevos con soporte para OpenGL 4.6.

Uso de LLVM

GlassyMesa es una pila de compiladores basada en LLVM para sombreadores escritos en GLSL . Para obtener información sobre SSA, consulte el artículo Formulario de asignación única estática .

Además, utilizando la estructura modular de Gallium3D, se está realizando un esfuerzo para utilizar la suite de compiladores LLVM y crear un módulo para optimizar el código de sombreado sobre la marcha. [167]

La biblioteca representa cada programa shader utilizando una representación intermedia binaria extensible llamada Tungsten Graphics Shader Infrastructure (TGSI), que LLVM luego traduce en shaders GLSL optimizados para el hardware de destino.

Adopción

Varios controladores de dispositivos gráficos libres y de código abierto , que se han escrito o se están escribiendo en base a información obtenida mediante ingeniería inversa en sala limpia , adoptaron el modelo de controlador proporcionado por Gallium3D, por ejemplo, nouveau y otros ( consulte Controlador de dispositivo gráfico libre y de código abierto para obtener una lista completa ). La razón principal puede ser que el modelo de controlador de Gallium3D reduce la cantidad de código que se requiere escribir. [ ¿ Investigación original? ] Por supuesto, al estar licenciado bajo una licencia de software libre, este código puede ser reescrito en cualquier momento por cualquier persona para implementar el modelo de controlador DRI o algún otro.

Historia

Los autores originales de Gallium3D fueron Keith Whitwell y Brian Paul de Tungsten Graphics (adquirida por VMware en 2008). [168]

Hitos

En el otoño de 2011, había al menos 10 controladores Gallium3D conocidos, maduros y en funcionamiento. [169] [ verificación fallida ] [ cita requerida ] El equipo de controladores de código abierto para tarjetas gráficas Nvidia llamado Nouveau desarrolla sus controladores utilizando el marco Gallium3D. [158] [170]

13 de julio de 2008: El desarrollo de Nouveau se realiza exclusivamente para el marco Gallium. El antiguo controlador DRI se eliminó de la rama principal del repositorio Mesa en Freedesktop.org. [171]

11-02-2009: La rama gallium-0.2 se fusionó con la rama principal Master de Mesa. [172] El desarrollo se realiza en la línea principal de Mesa.

25-02-2009: Gallium3D puede ejecutarse tanto en kernels Linux como FreeBSD. [173]

01-05-2009: Zack Rusin de Tungsten Graphics agregó el rastreador de estado OpenVG a Mesa 3D, [174] lo que permite que los gráficos vectoriales escalables sean acelerados por hardware por cualquier controlador basado en Gallium3D.

17-07-2009: Se lanza Mesa3D 7.5, la primera versión que incluye Gallium3D. [175]

10/09/2010: Se agregó soporte inicial para las GPU Evergreen al controlador r600g. [176]

21/09/2010: Hay dos controladores Gallium3D para hardware ATI conocidos como r300g y r600g para las GPU R300-R500 y R600-Evergreen respectivamente.

21/09/2010: Se realizaron importantes modificaciones al código para brindar compatibilidad con Direct3D 10 y 11. [177] Con el tiempo, esto podría ofrecer la posibilidad de usar implementaciones recientes de Direct3D en sistemas Linux.

30/11/2011: Los controladores Intel 965g y Cell Gallium se eliminaron de la rama maestra de Mesa por no tener mantenimiento y estar dañados. [178] [179]

30/11/2013: Mesa 10 con OpenGL 3.2, 3.3 y OpenCL 1.0+

18/11/2014: Se realizaron importantes modificaciones al código para dar soporte a Direct3D 9. [180]

15-09-2015: Mesa 11 con OpenGL 4.0, 4.1 y OpenCL 1.2 (incompleto)

15-12-2015: Controlador VIRGL de Mesa 11.1 para máquinas virtuales con OpenGL 3.3

08-07-2016: Mesa 12 con OpenGL 4.2, 4.3 y Vulkan 1.0 (Intel ANV y AMD RADV)

1 de noviembre de 2016: Mesa 13 con OpenGL 4.4 y OpenGL ES 3.2

13-02-2017: Mesa 17.0 con OpenGL 4.5 y controlador freedreno con OpenGL 3.0 y 3.1

10-05-2017: Mesa 17.1 OpenGL 4.2+ para Intel Ivy Bridge (más que el controlador Intel para Windows, OpenGL 3.3+ para Intel Open SWR Rasterizer (importante para computadoras en clúster para simulaciones enormes)

08/12/2017: Controlador AMD Vulkan para Mesa 17.3 totalmente compatible con RADV en la prueba Khronos de Vulkan 1.0

18/05/2018: Mesa 18.1 con Vulkan 1.1 (Intel ANV y AMD RADV)

07-09-2018: Mesa 18.2 con OpenGL 4.3 para Soft Driver VIRGL (importante para máquinas virtuales en Cluster Computer en la nube), OpenGL ES 3.1 para Freedreno con Adreno A5xx

11/06/2019: Mesa 19.1 lanzado con el controlador de gráficos 'iris' de próxima generación de Intel para iGPU de generación 8+ [181]

11/12/2019: Mesa 19.3 lanzó OpenGL 4.6 con Intel i965 con gen 7+ e Iris Gen 8+ opcional

18-03-2020: Mesa 20.0 lanzó OpenGL 4.6 con AMD GCN y Vulkan 1.2 para Intel

27/05/2020: Mesa 20.1 lanzó soporte de vectorización NIR y soporte de memoria virtual compartida para OpenCL en Clover

30/11/2020: Mesa 20.3 ofrece soporte completo para OpenCL 1.2 en Clover [41]

11-03-2021: Soporte inicial de Mesa 21.0 para "D3D12": Direct 3D 12 para WSL2 en Windows 10 con OpenGL 3.3+, ARM Freedreno: OpenGL 3.3+

05/05/2021: Soporte inicial de Mesa 21.1 para el controlador de GPU Google VirtIO "Venus" con Vulkan 1.2+; Zink: OpenGL 4.6+, OpenGL ES 3.1+; Qualcomm Turnip, Lavapipe: Vulkan 1.1+

2021-08-04: Soporte inicial de Mesa 21.2 para el nuevo controlador Intel Crocus OpenGL 4.6 basado en gallium3D para Intel Sandy Bridge a Haswell para el antiguo i965, Vulkan Driver panVK para ARM Panfrost

09-03-2022: Mesa 22.0 es compatible con Vulkan 1.3 de Intel Anvil y AMD RADV

10/05/2023: Mesa 23.1 OpenCL con Rust: RustiCL para hardware AMD GCN disponible (más hardware en progreso) [182]

30/09/2023: Mesa 23.2 con Apple Asahi OpenGL 3.1 y OpenGL ES 3.0, RADV admite Ray Tracing en AMD RDNA 2 y 3, compatibilidad con decodificación Intel Anvil Vulkan H.265 [183]

Actuación

Historia

El iniciador del proyecto, Brian Paul, era un aficionado a los gráficos. Pensó que sería divertido implementar una biblioteca de gráficos 3D simple utilizando la API OpenGL, que luego podría usar en lugar de VOGL (una biblioteca GL Like Library muy común). [184] A partir de 1993, pasó dieciocho meses de desarrollo a tiempo parcial antes de lanzar el software en Internet en febrero de 1995. [185] El software fue bien recibido y la gente comenzó a contribuir a su desarrollo. Mesa comenzó renderizando todos los gráficos de computadora 3D en la CPU . A pesar de esto, la arquitectura interna de Mesa fue diseñada para estar abierta para conectarse a la renderización 3D acelerada por el procesador de gráficos . En esta primera fase, la renderización se realizó indirectamente en el servidor de pantalla , lo que dejó algo de sobrecarga y una velocidad notablemente por detrás del máximo teórico. El Diamond Monster 3D , que usaba el chipset Voodoo Graphics , fue uno de los primeros dispositivos de hardware 3D compatibles con Mesa.

El primer soporte de hardware gráfico real se agregó a Mesa en 1997, basado en la API Glide para las entonces nuevas tarjetas gráficas 3dfx Voodoo I/II y sus sucesoras. [129] Un problema importante de usar Glide como capa de aceleración era el hábito de Glide de ejecutarse en pantalla completa, lo que solo era adecuado para juegos de computadora. Además, Glide tomaba el bloqueo de la memoria de la pantalla y, por lo tanto, el servidor de pantalla no podía realizar ninguna otra tarea de GUI. [186]

Véase también

Referencias

  1. ^ Marshall, David (16 de diciembre de 2008). "Adquisición de Tungsten Graphics por parte de VMware a finales de año". InfoWorld . Consultado el 6 de agosto de 2011 .
  2. ^ "[ANUNCIO] mesa 24.3.1". 4 de diciembre de 2024 . Consultado el 4 de diciembre de 2024 .
  3. ^ "Mejorar la compatibilidad de OpenGL con los controladores gráficos de Linux - Mesa". Indiegogo . 11 de diciembre de 2013 . Consultado el 21 de enero de 2015 .
  4. ^ "AMD explora nueva estrategia de controladores para Linux". 22 de marzo de 2014. Consultado el 23 de marzo de 2014 .
  5. ^ "Compatibilidad con Direct3D 9 lanzada para Linux a través de Gallium3D, juegos en ejecución - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  6. ^ "mesa/mesa - La biblioteca de gráficos 3D de Mesa" . Consultado el 2 de noviembre de 2016 .
  7. ^ "La matriz OpenGL vs Mesa". 25 de marzo de 2015. Consultado el 29 de marzo de 2015 .
  8. ^ "Mesa 11.0 se ha ramificado, comienza la marcha de lanzamiento". 22 de agosto de 2015 . Consultado el 22 de agosto de 2015 .
  9. ^ ab "RADV Radeon Vulkan Driver Submitted for Review to be Included in Mesa - Phoronix". Archivado desde el original el 4 de noviembre de 2016 . Consultado el 3 de noviembre de 2016 .
  10. ^ ab "Mesa 17.0.0 lanzado oficialmente". Phoronix . 13 de febrero de 2017 . Consultado el 13 de febrero de 2017 .
  11. ^ "mesa/mesa - La biblioteca de gráficos 3D de Mesa". Cgit.freedesktop.org . Consultado el 1 de agosto de 2018 .
  12. ^ "Los grandes cambios y mejoras de Mesa 17.0 - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  13. ^ "mesa/mesa - La biblioteca de gráficos 3D de Mesa". Cgit.freedesktop.org . Consultado el 1 de agosto de 2018 .
  14. ^ "Programa" (PDF) . www.x.org . 2016.
  15. ^ "mesa/mesa - La biblioteca de gráficos 3D de Mesa". Cgit.freedesktop.org . Consultado el 1 de agosto de 2018 .
  16. ^ "Una mirada a las enormes mejoras de rendimiento con Nouveau Mesa 17.0-devel en Maxwell - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  17. ^ "Pruebas de conformidad con OpenGL/OpenGL ES de código abierto de Khronos - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  18. ^ "Las grandes características de Mesa 17.1: Vega, RadeonSI Shader Cache, Vulkan en maduración, nuevas extensiones OpenGL - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  19. ^ "Notas de la versión de Mesa". Mesa3d.org . Consultado el 1 de agosto de 2018 .
  20. ^ "La matriz OpenGL vs. Mesa". mesamatrix.net . Consultado el 31 de julio de 2016 .
  21. ^ "Listado de eventos" (PDF) . www.x.org .
  22. ^ "Características de Mesa 17.3: actualizaciones de Vulkan, mejor rendimiento - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  23. ^ abcdefghijklmnopqr «Calendario de lanzamiento». Mesa3d.org . Consultado el 1 de agosto de 2018 .
  24. ^ "Las características de Mesa 18.0 incluyen muchas mejoras de OpenGL/Vulkan, Intel Shader Cache y extras - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  25. ^ ab "Mesa 18.2 se lanzará pronto con muchas mejoras en el controlador OpenGL / Vulkan - Phoronix". www.phoronix.com .
  26. ^ "Las nuevas y brillantes características de Mesa 18.3 para los controladores de gráficos Intel / Radeon de código abierto - Phoronix". www.phoronix.com .
  27. ^ "Mesa logró un progreso masivo en 2018 en los controladores Vulkan / OpenGL de código abierto - Phoronix". www.phoronix.com .
  28. ^ "Las nuevas características que llegarán a Mesa 19.0: incorporaciones a Vulkan, FreeSync, Soft FP64 y más - Phoronix".
  29. ^ "Puntos de referencia de Mesa 18.2 vs. 18.3 vs. 19.0 de enero para RadeonSI/RADV - Phoronix".
  30. ^ "Ejecución del back-end RadeonSI NIR con Mesa 19.1 Git - Phoronix".
  31. ^ "El controlador Iris Gallium3D de Intel ahora tiene mejor soporte para perfiles de compatibilidad OpenGL - Phoronix".
  32. ^ "Mesa 19.3 presenta muchas mejoras en el controlador OpenGL + Vulkan de código abierto - Phoronix".
  33. ^ "Mesa 20.0-rc1 lanzado con Intel Gallium3D predeterminado, OpenGL 4.6 para RadeonSI, Vulkan 1.2 - Phoronix".
  34. ^ "Mesa 20.0 lanzado con grandes mejoras para Intel, AMD Radeon Vulkan/OpenGL - Phoronix".
  35. ^ ab "Las características de Mesa 20.1 incluyen grandes mejoras para los controladores de gráficos Intel y Radeon de código abierto - Phoronix".
  36. ^ "Zink es ahora OpenGL 3.0 completo para GL genérico sobre Vulkan - Phoronix".
  37. ^ "El desarrollo de Mesa 20.2 finaliza después de la llegada de muchas nuevas características - Phoronix".
  38. ^ "Nouveau de Mesa 20.2 habilita HMM, OpenCL SVM ahora es compatible - Phoronix".
  39. ^ "La implementación del software Vulkan de Mesa ahora se conoce como Lavapipe". Phoronix .
  40. ^ "Los desarrolladores de V3DV presentan planes para incorporar el controlador Vulkan de Raspberry Pi 4 en Mesa - Phoronix".
  41. ^ abc "Se fusiona el soporte de OpenCL 1.2 para Gallium3D Clover de Mesa mientras se trabaja en OpenCL 3.0 - Phoronix".
  42. ^ "Zink en Mesa 20.3 ahora llega a OpenGL 3.3, puede ejecutar Blender con este OpenGL en Vulkan - Phoronix".
  43. ^ "OpenGL 4.5 ahora habilitado para LLVMpipe con Mesa 20.3, será adaptado a 20.2 - Phoronix".
  44. ^ "VALLIUM se fusionó con Mesa 20.3 como Vulkan Front-End para Gallium3D". Forónix .
  45. ^ ab "Mesa 21.0 fusiona el controlador Gallium3D de Direct3D 12 - Phoronix".
  46. ^ https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf Archivado el 30 de octubre de 2020 en Wayback Machine [ URL básica PDF ]
  47. ^ "Microsoft + Collabora trabajan para mapear OpenGL/OpenCL sobre DirectX 12 - Phoronix".
  48. ^ "Mesa ahora es 2 a 5 veces más rápido para SPECViewPerf luego de las optimizaciones de OpenGL - Phoronix".
  49. ^ "Mesa 21.0 tiene muchas características nuevas, especialmente para los gráficos de código abierto Radeon - Phoronix".
  50. ^ "Mesa 21.1-rc1 lanzado con optimizaciones RADV, Zink más rápido y muchas otras características nuevas - Phoronix".
  51. ^ "Mesa%2021.1 - Phoronix".
  52. ^ abc "El controlador Vulkan "Venus" de VirtIO-GPU de Google se fusionó con Mesa 21.1 - Phoronix".
  53. ^ "Mesa 21.2 lanzado con nuevo controlador Intel Crocus, PanVK, código M1 temprano - Phoronix".
  54. ^ "Se propone eliminar los controladores OpenGL clásicos de Mesa de la línea principal este año - Phoronix".
  55. ^ "Crocus Gallium3D se acerca a la línea principal Mesa para Gallium3D i965 a través de Haswell Graphics - Phoronix".
  56. ^ "Amber Branch — la última documentación de la biblioteca de gráficos 3D de Mesa".
  57. ^ "Mesa 22.0-rc1 lanzado con muchas características de controlador de GPU Radeon e Intel Linux, Vulkan 1.3".
  58. ^ ""Dozen" de Mesa cerca de ofrecer Vulkan sobre Direct3D 12".
  59. ^ "Rusticl de Mesa logra la conformidad oficial con OpenCL 3.0".
  60. ^ "La implementación de Rusticl OpenCL de Mesa puede superar la pila de cómputo ROCm de Radeon".
  61. ^ "El desarrollo de funciones de Mesa 23.0 finaliza con muchas incorporaciones de Vulkan".
  62. ^ "Mesa 23.0 lanzado con muchos cambios para los controladores de gráficos Intel y Radeon de código abierto".
  63. ^ "El controlador DZN Mesa de Microsoft ya llega a Vulkan 1.2".
  64. ^ "Mesa 23.1 lanzado con RadeonSI Rusticl-OpenCL, RADV GPL".
  65. ^ "Mesa 23.2 Virgl incorpora soporte para OpenGL 4.6 dentro de máquinas virtuales".
  66. ^ "Mesa 23.2 recibe cambios de Asahi AGX Gallium3D para OpenGL 3.1 + GLES 3.0".
  67. ^ "Microsoft habilita la compatibilidad con OpenGL 4.6 en Direct3D 12".
  68. ^ "Notas de la versión: la documentación más reciente de la biblioteca de gráficos 3D de Mesa".
  69. ^ "Mesa 23.1 lanzado - Phoronix".
  70. ^ Larabel, Michael (4 de marzo de 2015). "Se elimina la compatibilidad con OpenVG de Gallium3D". Phoronix . Consultado el 11 de julio de 2015 .
  71. ^ "St/Vega: Eliminar. (3acd7a34) · Commits · Mesa / Mesa · GitLab". 3 de marzo de 2015.
  72. ^ "Últimos parches para el rastreador de estados "nueve"". Cgit.freedesktop.org . 4 de febrero de 2016.
  73. ^ Larabel, Michael (14 de diciembre de 2014). «Mesa 10.4 lanzado oficialmente con Direct3D 9 State Tracker». Phoronix . Consultado el 11 de julio de 2015 .
  74. ^ "Mesa 23.0 lanzado - Phoronix".
  75. ^ "Mesa 22.3 lanzado - Phoronix".
  76. ^ "Mesa 22.2 lanzado - Phoronix".
  77. ^ "Lanzamiento de Mesa 22.1 - Phoronix".
  78. ^ "Lanzamiento de Mesa 22.0 - Phoronix".
  79. ^ "Mesa 21.3 lanzado - Phoronix".
  80. ^ "Mesa 21.2 lanzado con nuevo controlador Intel Crocus, PanVK, código M1 temprano - Phoronix".
  81. ^ "Mesa 21.1 lanzado con sombreado de velocidad variable RADV y más mejoras de Intel Vulkan - Phoronix".
  82. ^ "Mesa 21.0 lanzado con numerosas mejoras de RADV, nuevas extensiones de Vulkan y muchas correcciones - Phoronix".
  83. ^ "Mesa 20.3 lanzado con grandes mejoras para los controladores de gráficos de código abierto - Phoronix".
  84. ^ "Mesa 20.2.2 lanzado con una variedad aleatoria de correcciones - Phoronix".
  85. ^ "Los puntos de referencia RadeonSI NIR muestran un gran progreso con Mesa 20.0 - Phoronix".
  86. ^ "Mesa 19.3-RC1 lanzado con OpenGL 4.6 para Intel, muchas mejoras en el controlador Vulkan - Phoronix".
  87. ^ "Mesa 19.3 presenta muchas mejoras en el controlador OpenGL + Vulkan de código abierto - Phoronix".
  88. ^ "Mesa 18.0 debería llegar hoy con muchas mejoras en el controlador Vulkan/OpenGL - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  89. ^ "GalliumCompute". Dri.freedesktop.org . Consultado el 24 de enero de 2019 .
  90. ^ "Actualización del estado de Clover" (PDF) . Consultado el 27 de marzo de 2020 .
  91. ^ "[Mesa-announce] mesa 17.0.0". 13 de febrero de 2017. Consultado el 13 de febrero de 2017 .
  92. ^ "[Mesa-announce] mesa 13.0.0". Noviembre de 2016. Consultado el 2 de noviembre de 2016 .
  93. ^ ab "Mesa 12.0 lanzado con soporte para OpenGL 4.3, Intel Vulkan y muchas otras características". 8 de julio de 2016 . Consultado el 8 de julio de 2016 .
  94. ^ "[Mesa-anuncio] Mesa 11.2.0". 4 de abril de 2016 . Consultado el 4 de abril de 2016 .
  95. ^ "[Mesa-anuncio] Mesa 11.1.0". 15 de diciembre de 2015 . Consultado el 15 de diciembre de 2015 .
  96. ^ "[Mesa-anuncio] Mesa 11.0.0". 12 de septiembre de 2015. Consultado el 26 de septiembre de 2015 .
  97. ^ "[Mesa-anuncio] Mesa 10.6.0". 15 de junio de 2015 . Consultado el 15 de junio de 2015 .
  98. ^ Larabel, Michael (26 de octubre de 2013). "Características que se encuentran en Mesa 10.0". Phoronix .
  99. ^ "[Mesa-anuncio] Mesa 10.5.0". 7 de marzo de 2015 . Consultado el 7 de marzo de 2015 .
  100. ^ "[Mesa-announce] Mesa 10.4.0 lanzado". 14 de diciembre de 2014. Consultado el 7 de marzo de 2015 .
  101. ^ "[Mesa-announce] Mesa 10.3 released". 19 de septiembre de 2014. Consultado el 7 de marzo de 2015 .
  102. ^ "[Mesa-announce] Mesa 10.2 lanzado". 7 de junio de 2014. Consultado el 7 de marzo de 2015 .
  103. ^ "[Mesa-announce] Mesa 10.1 lanzado". 5 de marzo de 2014. Consultado el 7 de marzo de 2015 .
  104. ^ "[Mesa-announce] Mesa 10.0 lanzado". Diciembre de 2013. Consultado el 7 de marzo de 2015 .
  105. ^ "Vulkan 1.3 lanzado con renderizado dinámico en Core, nueva guía de hoja de ruta para GPU modernas".
  106. ^ "Programa" (PDF) . www.x.org .
  107. ^ "Controlador Radeon Vulkan agregado a Mesa, nuevos puntos de referencia de Radeon Vulkan vs. OpenGL + AMDGPU-PRO - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  108. ^ ab "Vulkan Virgl ha comenzado a ofrecer soporte para esta API de gráficos/computación dentro de las máquinas virtuales - Phoronix". www.phoronix.com .
  109. ^ "Vulkan basado en CPU Lavapipe portado a Windows - Phoronix".
  110. ^ "El controlador Qualcomm "TURNIP" Vulkan de código abierto agrega una característica de rendimiento importante - Phoronix".
  111. ^ "Controlador TURNIP Vulkan en funcionamiento en KGSL de Qualcomm - Phoronix".
  112. ^ "El controlador Vulkan "V3DV" de Raspberry Pi 4 se fusionó con Mesa 20.3 - Phoronix".
  113. ^ "PanVK se retira de la publicidad de Vulkan 1.1 por ahora".
  114. ^ "El código "DZN" Mesa de Microsoft logra una conformidad del 99,75 % o más con Vulkan 1.0".
  115. ^ ""Dozen" se fusionó con Mesa para implementar Vulkan en Direct3D 12".
  116. ^ "Llevar el cercado explícito de Android a la línea principal". LWN.net . 5 de octubre de 2016.
  117. ^ "libgbm en los repositorios de Debian". Packages.debian.org .
  118. ^ "Habilitación de sistemas de ventanas alternativos con una implementación de controlador de gráficos que no sea Mesa". X.org .
  119. ^ "NVIDIA quiere comentarios sobre su proyecto de asignación de memoria para dispositivos". Phoronix .
  120. ^ "Aceleración de vídeo nueva". freedesktop.org .
  121. ^ "Matriz de características de Radeon". freedesktop.org .
  122. ^ "Fedora Linux desactiva el soporte VA-API H.264 / H.265 / VC1 de Mesa por cuestiones legales". Phoronix . Consultado el 1 de octubre de 2022 .
  123. ^ Toral, Iago (8 de agosto de 2014). "Sumergirse en Mesa" . Consultado el 19 de mayo de 2016 .
  124. ^ "Página de estado de la infraestructura de renderizado directo". freedesktop.org .
  125. ^ "Cómo mejorar el rendimiento de los juegos en tu máquina Linux - APC". Apcmag.com . 25 de julio de 2013. Archivado desde el original el 25 de enero de 2019 . Consultado el 1 de agosto de 2018 .
  126. ^ "Linux: Controladores Mesa, Gallium3D, Nouveau y NVIDIA, prueba OpenGL (GTX 280, GTX 480, GTX 580) – Geeks3D". Geeks3d.com . 10 de enero de 2012 . Consultado el 1 de agosto de 2018 .
  127. ^ "El controlador Nouveau sigue siendo mucho más lento que el controlador oficial de NVIDIA - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  128. ^ "Intel/NVIDIA/AMD compiten en el rendimiento de los controladores de GPU para Linux de código abierto/cerrado - Phoronix". Phoronix.com . Consultado el 1 de agosto de 2018 .
  129. ^ abc Paul, Brian (10 de agosto de 2000). "Introducción a la infraestructura de renderizado directo". Dri.sourceforge.net . Archivado desde el original el 16 de marzo de 2018 . Consultado el 25 de enero de 2012 .
  130. ^ "DRI2". X.org. Archivado desde el original el 16 de abril de 2013. Consultado el 25 de enero de 2012 .
  131. ^ "DRI3 y el presente [LWN.net]". lwn.net . Consultado el 1 de agosto de 2018 .
  132. ^ "[PATCH 0/6] Añade compatibilidad con DRI3000 a los controladores de núcleo e i965". Lists.freedesktop.org. 31 de octubre de 2013. Consultado el 1 de agosto de 2018 .
  133. ^ "xorg-x11-drv-intel-2.99.917-19.20151206.fc23 (re)habilitado dri3 por defecto - kde - Listas de correo de Fedora". lists.fedoraproject.org . Consultado el 3 de diciembre de 2016 .
  134. ^ "Actualizaciones de Radeon-AMDGPU-1.19". Google.de . Consultado el 3 de diciembre de 2016 .
  135. ^ "LLVMpipe: OpenGL con Gallium3D en tu CPU". Phoronix.com . 30 de abril de 2010 . Consultado el 4 de noviembre de 2014 .
  136. ^ "llvmpipe". mesa3d.org . Consultado el 8 de junio de 2015 .
  137. ^ "OpenSWR". openswr.org . Consultado el 1 de agosto de 2018 .
  138. ^ "Mesamatrix: La matriz OpenGL vs. Mesa". mesamatrix.net . Consultado el 1 de agosto de 2018 .
  139. ^ "OpenSWR". openswr.org . Consultado el 1 de agosto de 2018 .
  140. ^ "Mesa (Master): Virgl: Add driver for virtio-gpu 3D (V2)". Archivado desde el original el 28 de agosto de 2018 . Consultado el 28 de agosto de 2018 .
  141. ^ "Seguimiento de las características OpenGL de VirGL de Mesa - Phoronix". www.phoronix.com .
  142. ^ "VirGL de Mesa ahora tiene soporte para OpenGL 4.2 para ofrecer máquinas virtuales invitadas - Phoronix". www.phoronix.com .
  143. ^ "El rendimiento actual de Virgl3D, planes futuros - Phoronix". www.phoronix.com .
  144. ^ "¿Qué hay de nuevo en el mundo virtual?" (PDF) . Archivado (PDF) del original el 1 de octubre de 2018. Consultado el 19 de noviembre de 2023 .
  145. ^ https://archive.fosdem.org/2019/schedule/event/virtual_gpu/attachments/slides/3353/export/events/attachments/virtual_gpu/slides/3353/Virgl_Presentation_FOSDEM2019.pdf [ URL simple PDF ]
  146. ^ "VirGL — la última documentación de la biblioteca de gráficos 3D de Mesa".
  147. ^ "Virtio-GPU Venus: la última documentación de la biblioteca de gráficos 3D de Mesa".
  148. ^ "Megaconductores DRI". X.org . 25 de septiembre de 2013.
  149. ^ "Los rastreadores de estado VDPAU y XvMC ahora son bibliotecas independientes". Phoronix.com . 23 de junio de 2014.
  150. ^ "Introducción — Documentación de NIR 0.0.1".
  151. ^ "NIR: un nuevo compilador IR para Mesa".
  152. ^ "Mesa se prepara para abandonar el antiguo GLSL a TGSI: gran eliminación de código, ganancias en rendimiento y correcciones".
  153. ^ "Archivo de configuración de compilación". cgit.freedesktop.org . Documentación de Gallium.
  154. ^ Fonseca, José (27 de abril de 2008). «Gallium3D: Introducción» . Consultado el 20 de junio de 2014 .
  155. ^ Fonseca, José. «MESA3D.org: Introducción». Archivado desde el original el 2 de noviembre de 2016. Consultado el 28 de octubre de 2016 .
  156. ^ "¡Gallium3D ahora en el código base de la línea principal de Mesa!". Phoronix . 11 de febrero de 2009 . Consultado el 26 de octubre de 2010 .
  157. ^ "El estado de Nouveau, parte 2". LWN.net . 26 de febrero de 2008 . Consultado el 7 de marzo de 2008 .
  158. ^ ab "Nouveau Companion 36". Nouveau.freedesktop.org . 7 de marzo de 2008. Archivado desde el original el 7 de marzo de 2013 . Consultado el 1 de abril de 2008 .
  159. ^ "La compatibilidad con DRI Gallium3D de la ATI R300 está "finalizada"". Phoronix . 9 de noviembre de 2009 . Consultado el 15 de noviembre de 2010 .
  160. ^ "El controlador Gallium3D de Radeon "R600g" se fusionó con [Mesa] Master". Phoronix . 27 de mayo de 2010 . Consultado el 26 de octubre de 2010 .
  161. ^ "Estado de galio de X.Org Wiki". Xorg . 22 de septiembre de 2010 . Consultado el 7 de diciembre de 2010 .
  162. ^ "iris: Agregar un nuevo controlador Gallium experimental para GPU Intel Gen8+ (!283) · Solicitudes de fusión · Mesa / mesa". GitLab . 20 de febrero de 2019 . Consultado el 21 de septiembre de 2019 .
  163. ^ "TG-Gallium3D". Tungsten Graphics. Archivado desde el original el 3 de mayo de 2008. Consultado el 1 de abril de 2008 .
  164. ^ Rusin, Zack (6 de febrero de 2008). «GPGPU» . Consultado el 1 de abril de 2008 .
  165. ^ Rusin, Zack (7 de febrero de 2008). «OpenVG y aceleración 2D» . Consultado el 1 de abril de 2008 .
  166. ^ "DRI2". 4 de octubre de 2007. Archivado desde el original el 4 de julio de 2008. Consultado el 1 de abril de 2008 .
  167. ^ Rusin, Zack (2 de noviembre de 2007). «Gallium3D LLVM» . Consultado el 1 de abril de 2008 .
  168. ^ Marshall, David (16 de diciembre de 2008). "Adquisición de Tungsten Graphics por parte de VMware a finales de año". InfoWorld.
  169. ^ "Galio". Freedesktop.org . 2 de noviembre de 2011 . Consultado el 24 de agosto de 2012 .
  170. ^ "Nouveau Companion 37". Nouveau.freedesktop.org . 21 de marzo de 2008. Archivado desde el original el 8 de febrero de 2012 . Consultado el 1 de abril de 2008 .
  171. ^ "Nuevo: diga adiós al viejo controlador DRI... (cgit en FDO)". Cgit.freedesktop.org . 13 de julio de 2008.
  172. ^ "¡Gallium3D ahora en el código base de la línea principal de Mesa!". Phoronix.com . 11 de febrero de 2009.
  173. ^ Larabel, Michael (25 de febrero de 2009). "Gallium3D y EGL ahora compilables en FreeBSD". Phoronix .
  174. ^ "El rastreador de estado de OpenVG está en Mesa 3D". Sourceforge.net . 1 de mayo de 2009.
  175. ^ "Notas de la versión de Mesa 7.5 / 17 de julio de 2009". Mesa3d.org . 17 de julio de 2009. Archivado desde el original el 13 de junio de 2010 . Consultado el 12 de septiembre de 2017 .
  176. ^ "r600g: añadir soporte evergreen inicial (cgit en FDO)". Cgit.freedesktop.org . 10 de septiembre de 2010.
  177. ^ "d3d1x: añade un nuevo rastreador de estado COM de Direct3D 10/11 para Gallium". Cgit.freedesktop.org . 21 de septiembre de 2010.
  178. ^ Larabel, Michael (30 de noviembre de 2011). "El controlador Intel 965 de Gallium3D se abandona". Phoronix . p. 1 . Consultado el 1 de diciembre de 2011 .
  179. ^ Larabel, Michael (30 de noviembre de 2011). "El controlador de celda Gallium3D también se descarta". Phoronix . p. 1 . Consultado el 1 de diciembre de 2011 .
  180. ^ "nueve: Añadir el rastreador de estado nueve para Direct3D9 (v3)". Cgit.freedesktop.org . 18 de noviembre de 2014.
  181. ^ "Mesa 19.1 lanzado con Intel Gallium3D experimental y otros nuevos controladores GL/VLK también - Phoronix". www.phoronix.com . Consultado el 21 de septiembre de 2019 .
  182. ^ "Mesa 23.1 lanzado con RadeonSI Rusticl-OpenCL, RADV GPL".
  183. ^ "El desarrollo de características de Mesa 23.2 concluye con numerosas nuevas extensiones de Vulkan".
  184. ^ "Introducción a Mesa". Equipo Mesa . Archivado desde el original el 4 de mayo de 2015. Consultado el 8 de junio de 2015 .
  185. ^ "Historial del proyecto". Documentación de Mesa . Consultado el 11 de marzo de 2021 .
  186. ^ "¿Cuál es la relación entre Glide y DRI?". dri.freedesktop.org . Consultado el 25 de enero de 2012 .
  • Sitio web oficial
  • Edge, Jake (octubre de 2013). “La historia de Mesa”.
  • freedesktop.org - Gallium3D, un artículo sobre el estado actual de Gallium3D
  • Fonseca, José (abril de 2008), Introducción a Gallium3D
  • Rusin, Zack (21 de septiembre de 2007), Gallium3D
  • Corbet, Jonathan (noviembre de 2007), Gestión de memoria para procesadores gráficos
  • Decodificación de vídeo genérica acelerada por GPU, proyecto Google Summer of Code 2008 que utiliza Gallium, archivado desde el original el 31 de julio de 2008
  • Rusin, Zack (2008), Gallium3D: Gráficos bien hechos (PDF) (presentación), Akademy
  • Rusin, Zack (2008), Gallium3D: Graphics Done Right (presentación), Akademy , archivado desde el original (video) el 1 de enero de 2011
  • Actualización sobre los puertos de Gallium3D para AROS y Haiku (PDF) , FOSDEM 2010, 7 de febrero de 2010
Varias capas dentro de Linux, que también muestran la separación entre el espacio del usuario y el espacio del kernel
Modo de usuarioAplicaciones de usuariobash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Componentes del sistemademonio init :
OpenRC , runit , systemd ...
Demonios del sistema :
polkitd , smbd , sshd , udevd ...
Gestores de ventanas :
X11 , Wayland , SurfaceFlinger (Android)
Gráficos :
Mesa , AMD Catalyst , ...
Otras bibliotecas:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
Biblioteca estándar de Cfopen, execv, malloc, memcpy, localtime, pthread_create... (hasta 2000 subrutinas )
glibc apunta a ser rápido, musl apunta a ser liviano, uClibc apunta a sistemas integrados, bionic fue escrito para Android , etc. Todos apuntan a ser compatibles con POSIX / SUS .
Modo kernelNúcleo de Linuxstat, splice, dup, read, open, ioctl, write, mmap, close, exit, etc. (aproximadamente 380 llamadas al sistema)
La interfaz de llamadas al sistema (SCI) del kernel de Linux pretende ser compatible con POSIX / SUS [1]
Subsistema de programación de procesosSubsistema IPCSubsistema de gestión de memoriaSubsistema de archivos virtualesSubsistema de redes
Otros componentes: ALSA , DRI , evdev , klibc , LVM , device mapper , Linux Network Scheduler , Netfilter
Módulos de seguridad de Linux : SELinux , TOMOYO , AppArmor , Smack
Hardware ( CPU , memoria principal , dispositivos de almacenamiento de datos , etc.)
  1. ^ "Guía de administración README". Repositorios git de Kernel.org .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Mesa_(gráficos_por_computadora)&oldid=1261294083"