Creador | Brian paul |
---|---|
Desarrollado por | Brian Paul, Tungsten Graphics, Inc. (adquirido por VMware ), Intel , Linaro et al. |
Primera versión | Agosto de 1993 |
Última versión | 21.0.3 (21 de abril de 2021) |
Versión avanzada |
18.0.0-rc5 (21 de marzo de 2018) 19.1.0-rc5 (5 de junio de 2019) 1.0 (Febrero de 1995) 21.0.0-rc3 (27 de enero de 2021) |
Depositar | gitlab.freedesktop.org/mesa/mesa |
Seguro de calidad | Integración continua |
Escrito en | C , C ++ y ensamblador |
Sistema de explotación | Linux , FreeBSD , NetBSD , OpenBSD y Haiku |
Tipo |
Biblioteca de gráficos Biblioteca de software Biblioteca C ( d ) |
Licencia | Licencia MIT |
Sitio web | mesa3d.org |
Mesa 3D es una biblioteca de gráficos gratuita , desarrollada originalmente por Brian Paul , deAgosto de 1993, Que proporciona una implementación genérica de OpenGL para lograr gráficos tridimensionales renderizados en tiempo real y en múltiples plataformas . Aunque Mesa 3D no es una implementación oficial de OpenGL, las estructuras, sintaxis y semántica de su API son las de OpenGL.
En Julio de 2007, Mesa 3D es el único Implementación OpenGL de código abierto . Es utilizado principalmente por la implementación X.Org 's X Window System , que usa OpenGL para renderizar los controladores DRI X.Org/OpenGL de código abierto . X.Org proporciona una funcionalidad esencial para la mayoría de las aplicaciones gráficas que se ejecutan en plataformas similares a Unix , como GNU / Linux .
Se ha realizado una actualización importante en julio de 2009con la incorporación del trabajo realizado en Gallium3D , desarrollado principalmente por la empresa Tungsten Graphics (adquirida por VMware ) e inicialmente previsto para sustituir Mesa 3D. Esta nueva versión simplifica el desarrollo de controladores gráficos al ofrecer un nivel único de abstracción requerido por los controladores gráficos y que a su vez puede utilizar diferentes procesos de aceleración basados en OpenGL, OpenGL ES , OpenCL o incluso Direct3D (que Wine podría tener atractivo). En general, debería permitir un mejor uso de las capacidades de los procesadores gráficos actuales y puede proporcionar un método de decodificación de video universal. Por último, Gallium3D permite utilizar el procesador de gráficos (GPU) para tareas de computación, anteriormente delegado al procesador central (CPU) (luego hablamos de computación de propósito general en GPU o GPGPU ).
En la arquitectura x86, los controladores gratuitos para procesadores gráficos AMD ( controladores R300 , R600 , Radeon y RadeonSI ) y Nvidia (controlador nuevo ) utilizan Gallium3D. En Intel, por otro lado, solo los procesadores de la generación i915 usan Gallium, los procesadores más recientes (arquitectura / controlador i965), continúan usando Mesa para controladores gratuitos. También está presente el código de ensamblaje para la aceleración de cálculos a través de SIMD x86 y x86_64 (AMD64).
En la arquitectura ARM , el código ensamblador para la aceleración SIMD ( NEON ) se integró desde 2012.
Los controladores gratuitos, que utilizan Gallium, están disponibles en la línea principal de Mesa, para diferentes arquitecturas:
En cuanto a los procesadores gráficos Mali de ARM, una primera versión del controlador Lima , para los Mali-400s, cuyo desarrollador prefirió quedarse fuera de Mesa, se estancó a partir de 2012 y luego fue abandonado en 2013. Se lanzó una nueva versión.junio de 2017, administra los procesadores de las series Mali-400 y 450 de la arquitectura Utgard, y debería integrarse en Mesa en el transcurso de 2018. Otros 2 controladores, Chai para la arquitectura Midgard (Mail-Txxx) para la arquitectura Bitfrost (Mail -Gxx) , comienzan aproximadamente al mismo tiempo y se unifican desde principios de 2018, bajo el nombre Panfrost . El controlador común es compatible con OpenGL 3.1 (escritorio) y OpenGL ES 3.0 a principios de 2021.
El acelerador de renderizado LLVMpipe puramente software , del proyecto Gallium3D, se ha adaptado a la arquitectura x86 y a la arquitectura ARM . Está vinculado a Mesa 3D de forma predeterminada, desde la versión 10.2, lanzada enjunio de 2014. Los autores del piloto Panfrost planean usarlo para permitir la representación en funciones no implementadas durante la fase de desarrollo.
Mesa 3D implementa las siguientes interfaces gráficas de programación :
y controladores para hardware de gráficos.
Los siguientes controladores para convertir diferentes API 3D a Vulkan y, por lo tanto, beneficiarse de su rendimiento y menor consumo de energía con aplicaciones que no están diseñadas para esta API:
Inicialmente, Mesa 3D hacía todo el renderizado de gráficos 3D en el nivel del procesador central (CPU) , pero la arquitectura de Mesa 3D se abrió para implementar el renderizado acelerado por hardware en el nivel del procesador de gráficos (GPU) para descargar el procesador central para esta tarea. Uno de los primeros controladores que admitió la aceleración de hardware fue el controlador 3dfx para Glide API para la muy popular Voodoo I / II y otras tarjetas gráficas . Todo el renderizado se realizó indirectamente en el servidor X , lo que no fue óptimo en términos de velocidad de renderizado.
La Infraestructura de renderizado directo (DRI) finalmente ha logrado la antigua arquitectura dentro de Mesa 3D al proporcionar una interfaz de renderizado 3D directo para aplicaciones OpenGL.
La versión 7.4 permitió que el hardware compatible (Intel primero, ATI y NVidia después) aprovechara las evoluciones del sistema de gráficos Linux que son Graphics Execution Manager (GEM) y DRI2 , luego el código Gallium3D se integró en la versión 7.5.
Versión 7.5 lanzada el 17 de julio de 2009 implementa OpenGL versión 2.1.
Versión 7.6, publicada 28 de septiembre de 2009, incluye soporte OpenVG y una implementación alfa de llvmpipe ( Low-Level Virtual Machine ) desarrollada por José Fonseca y Zack Rusin para VMware , lo que permite acelerar ciertas partes del código durante la interpretación puramente de software mediante la compilación previa del código.
Versión 7.7, publicada el 21 de diciembre de 2009, agrega el controlador Gallium " SVGA " de VMware, que permite que los sistemas invitados se beneficien de la aceleración 3D en el contexto de la virtualización .
Versión 8.0 lanzada el 9 de febrero de 2012 implementa la versión 3.0 de OpenGL.
Versión 9.0, publicada el 8 de octubre de 2012, trae soporte para OpenGL 3.1. En lo que respecta específicamente a los controladores gratuitos basados en Gallium3D, esta versión agrega el soporte de OpenCL para los chips Nvidia y AMD (el controlador R600g parece sin embargo el más avanzado de los controladores gratuitos en la materia), y el de VDPAU (por el momento limitado a MPEG1 y MPEG2).
Versión 9.1, publicada el 22 de febrero de 2013, trae soporte para OpenGL ES 3.0.
Versión 9.2, publicada el 27 de agosto de 2013, Integra el conductor Gallium3D para los Adreno fichas , diseñados por Qualcomm para dotar a la ARM Snapdragon SoC .
Versión 10.0, publicada el 30 de noviembre de 2013, integra DRI3 y ofrece soporte para OpenGL 3.2 y 3.3.
Versión 10.1, publicada el 4 de marzo de 2014, mejora la compatibilidad con OpenGL 3.3 al agregar algunos chips nVidia y ATI.
Versión 10.2, publicada 6 de junio de 2014, es el primero en estar vinculado a llvmpipe de forma predeterminada. Esto mejora enormemente la renderización del software (sin aceleración por un chip gráfico).
Versión 10.3, publicada el 19 de septiembre de 2014, mejora la compatibilidad con OpenGL 4.x al agregar funciones de esta API.
La versión 10.4 fue lanzada el 14 de diciembre de 2014.
Versión 11.0, publicada el 12 de septiembre de 2015 implementa OpenGL 4.1.
Versión 12.0, publicada el 8 de julio de 2016implementa OpenGL 4.3, agrega soporte parcial para Vulkan .
Versión 13.0 lanzada el 1 st de noviembre de 2016 implementa OpenGL 4.4.
Versión 17.0 lanzada el 13 de febrero de 2017 implementa OpenGL 4.5.
Versión 17.1 publicada el 10 de mayo de 2017 implementa sombreadores geométricos en rasterizador de software, OpenGL 4.2 en arquitecturas Intel i965.
Versión 17.2 publicada el 4 de septiembre de 2017 proporciona algunas funciones adicionales dependiendo de las arquitecturas.
Versión 17.3 publicada el 8 de diciembre de 2017 agrega libtxc_dxtn, activa por defecto las compresiones de textura GL_EXT_texture_compression_s3tc y GL_ANGLE_texture_compression_dxt, en las arquitecturas que lo soportan.
Versión 18.0 lanzada el 27 de marzo de 2018 implementa OpenGL 4.5.
Versión 19.0 lanzada el 13 de marzo de 2019 implementa OpenGL 4.5.
Versión 19.1 publicada el 11 de junio de 2019 implementa OpenGL 4.5.
Versión 19.2 lanzada el 25 de septiembre de 2019, implementa el soporte Vulkan 1.1, mejora el controlador Panfrost para los procesadores gráficos ARM Mali , de las familias Midgard y, asociado con el lanzamiento del kernel de Linux 5.2, hace que X11 sea utilizable con este controlador.
Versión 20.3, publicada el 3 de diciembre de 2020, implementa GL 4.5 para llvmpipe, agrega el controlador Lavapipe, su equivalente para Vulkan, Zink, que asigna OpenGL a Vulkan, es compatible con OpenGL 3.3. Los nuevos controladores V3DK (Vulkan para Broadcom BCM2711). Finalmente, se admiten nuevas GPU, incluidas las GPU ARM Mali Bifrost a través de Panfrost, las GPU Intel Gen12 Alder Lake, así como los gráficos AMD Dimgrey Cavefish y VanGogh.