De Wikipedia, la enciclopedia libre
  (Redirigido desde Gallium3D )
Saltar a navegación Saltar a búsqueda

Mesa , también llamado Mesa3D y The Mesa 3D Graphics Library , es una implementación de software 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 de gráficos desarrollados y financiados en su mayoría por Intel y AMD para su hardware respectivo (AMD promueve sus controladores Mesa Radeon y RadeonSI sobre el obsoleto AMD Catalyst , e Intel solo ha admitido el controlador Mesa). Los controladores de gráficos patentados (por ejemplo, el controlador Nvidia GeForce y Catalyst) reemplazan a todo Mesa, proporcionando su propia implementación de una API de gráficos. Un esfuerzo de código abierto para escribir un controlador de Mesa Nvidia llamado Nouveau es desarrollado principalmente por la comunidad.

Además de las aplicaciones 3D, como juegos, modernos servidores de visualización ( Glamour de X.org o Wayland 's Weston ) el uso de OpenGL / EGL ; por lo tanto, todos los gráficos suelen pasar 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 en todo el mundo, incluidos los fabricantes de hardware de gráficos del Grupo Khronos que administran la especificación OpenGL. Para Linux, el desarrollo también se ha visto impulsado parcialmente por el crowdfunding . [3]

Resumen [ editar ]

Los videojuegos subcontratan los cálculos de renderizado a la GPU a través de OpenGL en tiempo real. Los sombreadores se escriben en OpenGL Shading Language 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 [ editar ]

Las implementaciones gratuitas de Wayland se basan en la implementación de Mesa de EGL . La biblioteca especial llamada libwayland-EGL , escrita para acomodar el acceso al framebuffer , debería haber quedado obsoleta por la versión 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 kernel. [4]

Mesa se conoce como implementación de viviendas de API gráficas . Históricamente, la API principal que ha implementado Mesa 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 (en desuso) y Direct3D 9 desde julio de 2013. [5] Mesa tampoco es específico de 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 de gráficos como OpenGL y los controladores de hardware de gráficos en el kernel del sistema operativo. La versión admitida de las diferentes API gráficas depende del controlador, porque cada controlador de hardware tiene su propia implementación (y por lo tanto, 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 de GPU Intel, AMD / ATI y Nvidia. Mesa 11 se anunció con algunos controladores compatibles con OpenGL 4.1. [8]

Mesa 12 contiene compatibilidad con 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 funciones son compatibles con Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), pero no Khronos-Test para 4.5-Label) y soporte experimental AMD Vulkan 1.0 a través del controlador de la comunidad RADV. OpenGL ES 3.2 es posible con Intel Skylake (Gen9). [9]

La primera versión estable de 2017 es la 17.0 (contando año nuevo). [10] [11] [12] Las funciones Ready están certificadas como 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) no tienen reloj sin información de NVidia. [dieciséis]

El conjunto de pruebas Khronos CTS para OpenGL 4.4, 4.5 y OpenGL ES 3.0+ está disponible ahora (2017-01-24) de código abierto y todas las pruebas para Mesa 13 y 17 ahora son posibles sin costos. [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 2 de los aspectos más destacados. [18] [19]

Tenga en cuenta que debido a la naturaleza modular de OpenGL, Mesa puede admitir extensiones de versiones más recientes de OpenGL sin reclamar soporte completo para tales 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 varias extensiones que no forman parte de ninguna versión de OpenGL o OpenGL ES. [20]

Una pregunta abierta para Mesa y Linux es High Dynamic Range (HDR). Muchos problemas y puntos abiertos están en camino para una implementación limpia y básica. [21]

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

La cuarta versión 17.3 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). AMD Vulkan Driver RADV ahora es totalmente compatible con Khronos-Test. [23]

La primera versión de 2018 es 18.0 y está disponible desde marzo de 2018 con el mismo esquema en 2017. [24] La compatibilidad total con OpenGL 4.6 no está lista, pero muchas características y mejoras se probaron con éxito en RC3. El soporte de 10 bits para Intel i965 en colores también es un punto destacado. [25] Lo nuevo es el soporte para Intel Cannon Lake y AMD Vega con la versión actual de Linux. Los chips AMD Evergreen (RV800 o R900) son compatibles con OpenGL 4.5. Los chips AMD R600 o RV700 antiguos solo pueden admitir OpenGL 3.3 con algunas características de OpenGL 4.x. Freedreno es el controlador para hardware Adreno y es compatible con OpenGL 3.3.

La segunda versión de 2018 es la 18.1 y está disponible desde mayo. El destino es Vulkan 1.1.72 en el controlador Intel ANV y AMD RADV. OpenGL 4.6 con spir-V también es el objetivo principal. El trabajo permanente es posible completar las características 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. ARM Architecture también hizo 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 está disponible en calendario estable en septiembre. OpenGL 4.6 con spir-V y Vulkan 1.1.80 están en WIP. 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. El soporte de compresión de textura ASTC y el soporte de módulo de compatibilidad para OpenGL 4.4 (3.1 en 18.1) son otros aspectos destacados en 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 de Vulkan en Mesamatrix. [26]

La cuarta versión de 2018 es 18.3 y se lanzó como versión estable 18.3.1 en diciembre de 2018. Muchas características en detalle y el soporte de hardware más nuevo son las partes principales. El soporte completo de OpenGL 4.6 no está listo. [27] [28]

La primera versión de 2019 es la 19.0 y ahora se lanzó en marzo. El soporte completo de OpenGL 4.6 no está listo, pero muchas mejoras de esta manera están en todos los controladores. [29] [30]

La segunda versión de 2019 es la 19.1. La transición de TGSI a NIR es aquí una característica principal en el camino a OpenGL 4.6 con Spir-V y más OpenCL. RadeonSI funciona bien en dev-Version con NIR. [31]

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. [32]

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. [33]

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

La segunda versión de 2020 es la 20.1. Muchas mejoras están listas en muchos controladores. Zink es un nuevo controlador virtual para OpenGL sobre Vulkan. [36]

La tercera versión de 2020 es la 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 mejora principalmente con muchos módulos. La memoria virtual compartida es posible para OpenCL en Nouveau con Pascal y superior. [37] [38] [39]

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 admite OpenGL 3.3+. El controlador virtual LLVMpipe ahora es compatible con OpenGL 4.5+ con 4.6 a la vista. VALLIUM como Vulkan Tree de LLVMpipe se fusiona. [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 d3d12 en WSL2 para Windows 10 con Direct 3D 12. OpenCL 1.2 también es objetivo en d3d12. Se realiza una aceleración de factor 2 a 5 en Benchmark SPECviewperf con código OpenGL mejorado. [45] [46] [47] [48] Muchas funciones del 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 la segunda versión del año 2021. [50] OpenGL 4.6+ y OpenGL ES 3.1+ están disponibles para Zink. AMD Driver 600g puede cambiar a NIR con más posibilidades para las tarjetas Radeeon HD 5000 y 6000 antiguas. [51] Qualcomm Turnip llega a Vulkan 1.1+ y emulación de software Lavapipe Vulkan 1.1+ (más mesamatrix). El disponible real es RC3 para probadores.

Tabla de API de renderizado [ editar ]

Vulkan [ editar ]

El Grupo Khronos anunció oficialmente Vulkan API 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 estado 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 estado OpenGL del código que es específico del hardware.

Como Gallium3D ingiere TGSI, Vulkan ingiere SPIR-V ( versión "V" de representación intermedia portátil estándar como en "Vulkan").

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

Es de esperar que el controlador Vulkan de propiedad de AMD, que se lanzó en marzo y se anunció que se lanzaría como software gratuito y de código abierto en el futuro y se integraría en Mesa, también abandone Gallium3D. [83]

RADV es un proyecto gratuito para AMD y está disponible desde la versión 13. [9] La conformidad con Khronos-Test llegó en la versión 17.3. Actual es Soporte completo de Vulkan 1.0 y 1.1 desde Mesa 18.1.

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

Mesa Software Driver VIRGL inicia Vulkan Development en 2018 con proyectos GSOC para soporte de máquinas virtuales. [84]

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

Google presenta Venus Vulkan Driver para máquinas virtuales en Mesa 21.1. [86]

Qualcomm Turnip y Broadcom v3dv son nuevos controladores para Qualcomm Adreno y Broadcom Raspberry 4 Hardware. 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+. [87] [88] [89]

Esgrima explícita [ editar ]

Una especie de barrera de memoria que separa un búfer del resto de la memoria se llama valla. Las cercas están ahí para garantizar que un búfer no se sobrescriba antes de que las operaciones de renderizado y visualización se hayan completado en él. El cercado implícito se utiliza para la sincronización entre los controladores de gráficos y el hardware de la GPU. La valla señala cuando un componente ya no está utilizando un búfer, por lo que otro componente puede utilizarlo o reutilizarlo. En el pasado, el kernel de Linux tenía un mecanismo de cercado implícito, donde un cercado se adjunta directamente a un búfer (cf. identificadores de GEM y FD), pero el espacio de usuario no lo sabe. La valla explícita expone 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 un cercado explícito y ofrece ventajas para el rastreo y la depuración.

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

Gestión de búfer genérico [ editar ]

Generic Buffer Management (GBM) es una API que proporciona un mecanismo para asignar búferes para la representación de gráficos vinculados a Mesa. GBM está destinado a ser utilizado 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 renderizado. [91]

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 llamando a los controladores de GPU de Mesa.

Por ejemplo, el compositor de Wayland Weston hace su renderizado usando 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 denominarse plataforma GBM, ya que se basa en la interfaz Mesa GBM.

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

Implementaciones de API de aceleración de video [ editar ]

Hay tres formas posibles de realizar los cálculos necesarios para la codificación y decodificación de secuencias de video:

  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 C PU
  2. usar 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 el G PU (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 video; se ha vuelto muy común integrar dichos ASIC en el chip de la GPU / CPU / APU / SoC y, por lo tanto, está disponible 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 su licencia como núcleo de propiedad intelectual de semiconductores; generalmente, diferentes versiones implementan diferentes algoritmos de compresión de video y / o descompresión de video; el soporte para tales ASIC generalmente pertenece al controlador del kernel, para inicializar el hardware y hacer cosas de bajo nivel. Mesa, que se ejecuta en el espacio del usuario, alberga las implementaciones de varias API para software, por ejemplo, reproductor de medios VLC , GStreamer , HandBrake , etc., para acceder cómodamente a dichos ASIC:
  • Video Acceleration API (VAAPI): la API más común para Linux, utilizada por AMD e Intel
  • API de decodificación y presentación de video para Unix (VDPAU): utilizada por Nvidia
  • Aceleración de video DirectX (DXVA): solo Microsoft Windows
  • OpenMAX IL - diseñado por Khronos Group para compresión de video
  • Motor de códec distribuido (DCE): diseñado por Texas Instruments
  • Aceleración de flujo de bits de X-Video (XvBA) - extensión a Xv - reemplazada por VAAPI
  • Compensación de movimiento de X-Video (XvMC) - extensión a Xv - reemplazada por VAAPI

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

El controlador radeon gratuito es compatible con el decodificador de video unificado y el motor de codificación de video a través de VDPAU y OpenMAX. [95]

Tenga en cuenta que 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.

Controladores de dispositivo [ editar ]

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

Mesa "administra" los controladores de dispositivo de código abierto y gratuitos disponibles para los conjuntos de chips gráficos (porque la implementación de las API de código abierto y libre existente se desarrolla dentro de Mesa). Actualmente existen dos marcos para escribir controladores de gráficos: "clásico" y Gallium3D. [96] En mesamatrix .net se ofrece una descripción general de algunos (pero no todos) de los controladores disponibles en Mesa .

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

Los controladores gratuitos y de código abierto compiten con los controladores propietarios de código cerrado. Dependiendo de la disponibilidad de la documentación del hardware y de la mano de obra, el controlador gratuito y de código abierto se queda más o menos a la zaga en el soporte de la aceleración 3D de nuevo hardware. Además, el rendimiento de la renderización 3D solía ser significativamente más lento con algunas excepciones notables. [98] [99] [100] [101] Hoy en día, esto sigue siendo cierto para Nouveau para la mayoría de las GPU NVIDIA, mientras que en las GPU AMD Radeon el controlador abierto ahora coincide o excede el rendimiento del controlador propietario.

Infraestructura de renderizado directo (DRI) [ editar ]

En el momento en que las tarjetas gráficas 3D se volvieron más comunes para las PC, las personas con el apoyo parcial de algunas empresas comenzaron a trabajar para agregar más soporte para el renderizado 3D acelerado por hardware a Mesa. [ cuando? ] La Infraestructura de renderizado directo (DRI) fue uno de estos enfoques para interconectar Mesa, OpenGL y otras bibliotecas de API de renderizado 3D con los controladores de dispositivo y el hardware. Después de alcanzar un nivel básico de usabilidad, se agregó oficialmente la compatibilidad con DRI a Mesa. Esto amplió significativamente la gama disponible de soporte de hardware que se puede lograr cuando se usa la biblioteca Mesa. [102]

Con la adaptación a DRI, la biblioteca Mesa finalmente asumió el papel de componente frontal de un marco OpenGL a gran escala con diversos componentes de backend que podían ofrecer diferentes grados de soporte de hardware 3D sin dejar de lado la capacidad de renderización completa del software. El sistema total utilizó muchos componentes de software diferentes. [102]

Si bien el diseño requiere que todos estos componentes interactúen con cuidado, 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 mediante la alteración de varios componentes a la vez, así como las interfaces entre ellos. Si tales experimentos tienen éxito, pueden incorporarse en la próxima versión principal o secundaria. Eso 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, funciona sin bloqueos y con un soporte de búfer trasero mejorado. Para ello, se creó una rama git especial de Mesa. [103]

DRI3 es compatible con el controlador Intel desde 2013 [104] [105] y es predeterminado en algunas distribuciones de Linux desde 2016 [106] para habilitar el soporte Vulkan y más. También está predeterminado en el hardware de AMD desde finales de 2016 (X.Org Server 1.18.3 y más reciente). [107]

Procesador de software [ editar ]

Mesa también contiene una implementación de renderizado de software llamada swrast que permite que los sombreadores se ejecuten en la CPU como un respaldo cuando no hay aceleradores de hardware de gráficos. El rasterizador de software Gallium se conoce como softpipe o cuando se construye con soporte para LLVM llvmpipe , que genera código de CPU en tiempo de ejecución. [108] [109] Desde Mesa 10.x, OpenGL 3.3+ es compatible con Softpipe (10.3) y LLVMpipe (10.2). Aproximadamente el 80% de las funciones de OpenGL 4.x se implementan 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 imágenes de juegos o artísticas y solo puede funcionar en procesadores x86. [110] Por otro lado, OpenGL 3.1+ ahora es compatible. [111] En algunos ejemplos se midieron valores de aceleración de 29 a 51 relacionados con LLVMPIPE. [112] 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 OpenGL 3.3 y mostrado en Mesamatrix desde Mesa 18. En el nuevo Mesa 18.2 actual es compatible más que los demás con OpenGL 4.3 y OpenGL ES 3.2. Aproximadamente el 80% de las funciones de OpenGL 4.4 y 4.5 también están listas. Vulkan Development comienza con los proyectos GSOC 2018. [113] [114] [115] [84] [116] [117]

[118]

Mega conductores [ editar ]

Eric Anholt propuso la idea de agrupar varios controladores en un solo "mega" controlador. Permite utilizar 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 separada debido a la eliminación de la interfaz de la biblioteca interna. [119] Los rastreadores estatales para VDPAU y XvMC se han convertido en bibliotecas independientes. [120]

shader-db [ editar ]

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

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

shader-db no puede considerarse software gratuito y de código abierto. Para usarlo legalmente, uno debe tener una licencia para todos los juegos de computadora de los que forman parte los sombreadores.

Arquitectura de software [ editar ]

Un controlador de gráficos consiste en una implementación de la máquina de estado 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 casi cualquier otra cosa, se ejecuta en la CPU, luego los sombreadores compilados se envían a la GPU y son ejecutados por ella. (SDL = Capa DirectMedia simple ).
Las representaciones intermedias (IR) en Mesa: GLSL IR, Mesa IR, TGSI y LLVM IR . Faltan HIR, LIR y NIR.
Mesa IR debe eliminarse por completo.

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

  • están destinados a funcionar sobre los controladores de dispositivos gráficos en modo kernel existentes, que están, por ejemplo, disponibles 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, denominada libdrm_specific y uno genérico, llamado libdrm . Esta sección se verá únicamente en la parte del modo de usuario por encima de libdrm
  • hay alguna implementación de la máquina de estados finitos como lo especifica, por ejemplo, OpenGL; esta implementación de la máquina de estado OpenGL puede ser compartida entre múltiples UMD o no
  • consisten en una gran parte de algún tipo de compilador, que ingiere, por ejemplo, GLSL y eventualmente genera código de máquina . Los analizadores pueden compartirse entre varios UMD o ser específicos

Representaciones intermedias de Mesa [ editar ]

Uno de los objetivos de Mesa es la optimización del código que será ejecutado por la GPU respectiva. Otro es el intercambio de código. En lugar de documentar las piezas de software que hacen esto o aquello, este artículo de Wikipedia debe examinar las Representaciones intermedias utilizadas en el proceso de compilación y optimización. Consulte Árbol de sintaxis abstracta (AST) y Formulario de asignación única estática (formulario SSA).

SPIR-V [ editar ]

SPIR-V es una determinada versión de la Representación intermedia estándar portátil . La idea es que las aplicaciones de gráficos generen SPIR-V en lugar de GLSL. A diferencia de este último, SPIR-V es binario para evitar diferencias de implementación entre las interfaces del compilador 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 SPIR-V generalmente también pasa por algunas optimizaciones generales. Además, hasta cierto punto, la representación binaria de SPIR-V ofrece cierto grado de ofuscación, lo que podría resultar atractivo para algunos proveedores de software como una forma de protección de la propiedad intelectual; sin embargo, SPIR-V contiene amplia información para la reflexión y existen herramientas que traducen SPIR-V de nuevo a un código de alto nivel legible por humanos y de alta calidad.. Un UMD solo necesita aplicar optimizaciones, que son específicas del hardware compatible.

  • Especificación SPIR-V (provisional)

GLSL IR [ editar ]

  • cgit.freedesktop.org/mesa/mesa/tree/src/compiler/glsl/README
  • XDC2014, Matt Turner: video en YouTube , Matt Turner - compilador GLSL: dónde hemos estado y hacia dónde vamos
  • XDC2015, Matt Turner: video en YouTube , www .x .org / wiki / Events / XDC2015 / Program / turner _glsl _compiler .pdf

Mesa IR [ editar ]

NIR [ editar ]

Se introdujo NIR (Nueva Representación Interna) para superar las limitaciones de TGSI. [121] [122] NIR se extendió en las últimas versiones y versiones reales como base del soporte de Spir-V y es desde 2016 el área de desarrollo principal. LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 se cambian a NIR desde TGSI. RADV, Zink y otros controladores nuevos comienzan con NIR. Todos los controladores con compatibilidad total con OpenGL 4.6 están relacionados con la compatibilidad con NIR by 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 ir más allá de 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
  • Actualización de Noveau 2018
  • Noveau con NIR en Mesa 19.3

TGSI [ editar ]

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

LLVM IR [ editar ]

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

RADV ACO IR [ editar ]

RADV ACO utiliza su propio IR que está cerca de NIR, para optimizar y generar código binario final para los sombreadores Vulkan SPIR-V en la parte superior de las GPU Radeon (GCN 1+, también conocido como GFX6 +). A partir de la versión 20.1.0, ACO solo se usa en RADV (controlador Vulkan) y todavía no en RadeonSI.

Compilador GLSL de Mesa [ editar ]

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

Galio3D [ editar ]

Gallium3D es un conjunto de interfaces y una colección de bibliotecas de soporte [124] destinadas a facilitar la programación de controladores de dispositivos para conjuntos de chips de gráficos 3D para múltiples sistemas operativos, API de renderizado o aceleración de video.

Se proporciona una matriz de características en mesamatrix .net , y los esfuerzos de escribir controladores de dispositivo de código abierto y gratuitos para chips gráficos se documentan por separado en Wikipedia: controlador de dispositivo de gráficos gratuito y de código abierto .

El desarrollo de Gallium3D comenzó en 2008 en Tungsten Graphics, [125] y la implementación está disponible como software gratuito y de código abierto como parte de Mesa 3D alojado en freedesktop.org . El objetivo principal es facilitar el desarrollo de controladores, agrupar el código duplicado de varios controladores diferentes en un solo punto y admitir arquitecturas de hardware modernas. Esto se hace proporcionando una mejor división del trabajo, por ejemplo, dejando la administración de la memoria al controlador DRI del kernel .

Gallium3D forma parte de Mesa desde 2009 [126] y actualmente lo utiliza el controlador de gráficos gratuito y de código abierto para Nvidia ( proyecto nouveau ), [127] [128] para AMD's R300 - R900 , [129] [130] [131] Controlador 'Iris' de Intel para iGPU de generación 8+ [132] y para otros controladores de dispositivo GPU gratuitos y de código abierto .

Arquitectura de software [ editar ]

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

Rastreador de estado Gallium3D

  • Cada API gráfica mediante la cual se dirige un controlador de dispositivo tiene su propio rastreador de estado, por ejemplo, hay un rastreador de estado Gallium3D para OpenGL y uno diferente para Direct3D o GLX . Cada rastreador de estado contiene una implementación de la interfaz del rastreador de estado Gallium3D, y es único, este medio es compartido por todos los controladores de dispositivo Gallium3D existentes.

Controlador de dispositivo de hardware Gallium3D

  • Este es el código real, que es específico del acelerador gráfico 3D subyacente, pero solo en la medida en que lo permita 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 comprende TGSI (Tungsten Graphics Shader Infrastructure), un lenguaje intermedio para describir sombreadores. Este código tradujo sombreadores traducidos de GLSL a TGSI en un conjunto de instrucciones implementado por la GPU.

Galio3D WinSys

  • Esto es específico del kernel subyacente del sistema operativo y cada uno implementa la interfaz Gallium3D WinSys para interactuar con todos los controladores de dispositivos de hardware Gallium3D disponibles.
VC4 y freedreno pueden consumir NIR directamente (y recurrir a tgsi_to_nir para 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 fuente abierta.
Una posible matriz de ejemplo al implementar el modelo de controlador Gallium3D. A través de la introducción de la interfaz Gallium3D Tracker y la interfaz Gallium3D WinSys, solo se requieren 18 en lugar de 36 módulos. Cada módulo WinSys puede funcionar con cada módulo controlador de dispositivo Gallium3D y con cada módulo State Tracker.

Diferencias con los controladores gráficos clásicos [ editar ]

Gallium3D proporciona una API unificada que expone las funciones de hardware estándar, como las unidades de sombreado que se encuentran en el 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 back-end, llamado rastreador de estado, dirigido a la API 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. [133] [134] [135]Todos los controladores de dispositivos de los proveedores, debido a su naturaleza patentada y de código cerrado, están escritos de esa manera, lo que significa que, por ejemplo, AMD Catalyst implementa OpenGL y Direct3D , y los controladores de proveedores para GeForce tienen sus implementaciones.

Bajo 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 GPU. [136] 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 del kernel, algunos de los controladores Mesa 3D, como el controlador radeon o los controladores de Intel, terminaron soportando DRI1 y DRI2 y usaron DRI2 si estaban disponibles en el sistema. Además, Gallium3D requiere un nivel de soporte de sombreado 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 [ editar ]

Tungsten Graphics Shader Infrastructure ( TGSI ) es una representación intermedia como LLVM Intermediate Representation o la nueva Standard Portable Intermediate Representation (SPIR) para ser utilizada por Vulkan API y OpenCL 2.1. Los sombreadores escritos en OpenGL Shading Language deben traducirse / compilarse en TGSI, luego se realizan las 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 capa en Mesa con soporte completo SPIR-V y desde 2019 el área de desarrollo principal de todos los controladores más nuevos con soporte OpenGL 4.6.

Uso de LLVM [ editar ]

GlassyMesa es una pila de compiladores basada en LLVM para sombreadores escritos en GLSL . Para 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 el conjunto de compiladores LLVM y crear un módulo para optimizar el código de sombreado sobre la marcha. [137]

La biblioteca representa cada programa de sombreado utilizando una representación intermedia binaria extensible llamada Infraestructura de sombreado de gráficos de tungsteno (TGSI), que LLVM luego traduce en sombreadores GLSL optimizados para el hardware de destino.

Adopción [ editar ]

Varios libres y de código abierto gráficos controladores de dispositivos , que han sido, o están siendo escritos en base a la información obtenida a través de sala limpia ingeniería inversa , adoptaron el modelo de controlador proporcionado por Gallium3D, por ejemplo nouveau y otros ( véase gratuito y de código abierto dispositivo gráfico controlador para obtener una lista completa ). La razón principal puede ser que el modelo de controlador Gallium3D reduce la cantidad de código necesario para escribir. [ investigación original? ] Por supuesto, al tener 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 [ editar ]

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

Hitos [ editar ]

En el otoño de 2011, había al menos 10 controladores Gallium3D conocidos, maduros y en funcionamiento. [139] [ Verificación fallida ] [ cita requerida ] Controladores de código abierto para tarjetas gráficas Nvidia con el nombre de Nouveau team desarrolla sus controladores utilizando el marco Gallium3D. [128] [140]

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

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

2009-02-25: Gallium3D puede ejecutarse tanto en Linux como en núcleos FreeBSD. [143]

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

2009-07-17: Lanzamiento de Mesa3D 7.5, la primera versión que incluye Gallium3D. [145]

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

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

2010-09-21: Se realizaron importantes confirmaciones en el código para admitir Direct3D 10 y 11. [147] Con el tiempo, esto podría ofrecer la posibilidad de utilizar implementaciones recientes de Direct3D en sistemas Linux.

2011-11-30: Los controladores Intel 965g y Cell Gallium se eliminaron de la rama maestra de Mesa por falta de mantenimiento y rotos. [148] [149]

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

2014-11-18: Se realizaron importantes confirmaciones en el código para admitir Direct3D 9. [150]

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

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

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

2016-11-01: Mesa 13 con OpenGL 4.4 y OpenGL ES 3.2

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

2017-05-10: 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 de clúster para grandes simulaciones)

2017-12-08: Mesa 17.3 AMD Vulkan Driver RADV totalmente compatible en Khronos Test of Vulkan 1.0

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

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

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

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

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

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

2020-11-30: Mesa 20.3 soporte completo de OpenCL 1.2 en Clover [152]

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

Rendimiento [ editar ]

  • Comparación de rendimiento de controladores de dispositivos gráficos gratuitos y de código abierto

Historia [ editar ]

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 de OpenGL, que luego podría usar en lugar de VOGL (una biblioteca similar a GL muy común). [153] A partir de 1993, pasó dieciocho meses de desarrollo a tiempo parcial antes de lanzar el software en Internet en febrero de 1995. [154] El software fue bien recibido y la gente comenzó a contribuir a su desarrollo. Mesa comenzó renderizando todos los gráficos de computadora en 3D en la CPU . A pesar de esto, la arquitectura interna de Mesa fue diseñada para estar abierta para adjuntarla al renderizado 3D acelerado por el procesador de gráficos . En esta primera fase, el renderizado se realizó de forma indirecta en elservidor de pantalla , dejando algo de sobrecarga y una velocidad notable por detrás del máximo teórico. El Diamond Monster 3D , que utiliza el conjunto de chips Voodoo Graphics , fue uno de los primeros dispositivos de hardware 3D compatibles con Mesa.

El primer soporte de hardware de gráficos verdadero se agregó a Mesa en 1997, basado en la API Glide para las entonces nuevas tarjetas gráficas 3dfx Voodoo I / II y sus sucesores. [102] Un problema importante de usar Glide como capa de aceleración fue el hábito de Glide de ejecutarse en pantalla completa, que solo era adecuada para juegos de computadora. Además, Glide tomó el bloqueo de la memoria de la pantalla y, por lo tanto, el servidor de pantalla no pudo realizar ninguna otra tarea de la GUI. [155]

Ver también [ editar ]

  • Controlador de dispositivo gráfico gratuito y de código abierto

Referencias [ editar ]

  1. ^ Marshall, David (16 de diciembre de 2008). "Adquisición de fin de año de VMware de Tungsten Graphics" . InfoWorld . Consultado el 6 de agosto de 2011 .
  2. ^ "Notas de la versión de Mesa 21.0.3" . Consultado el 22 de abril de 2021 .
  3. ^ "Mejorar la compatibilidad con OpenGL para los controladores de gráficos de Linux - Mesa" . Indiegogo . 11 de diciembre de 2013 . Consultado el 21 de enero de 2015 .
  4. ^ "AMD explora una nueva estrategia de controlador de Linux" . 22 de marzo de 2014 . Consultado el 23 de marzo de 2014 .
  5. ^ "Soporte de Direct3D 9 lanzado 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. ^ a b "Copia archivada" . Archivado desde el original el 4 de noviembre de 2016 . Consultado el 3 de noviembre de 2016 .CS1 maint: archived copy as title (link)
  10. ^ a b "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, 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 los enormes aumentos de rendimiento con Nouveau Mesa 17.0-devel en Maxwell - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  17. ^ "Pruebas de conformidad de Khronos Open-Source OpenGL / OpenGL ES - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  18. ^ "Las grandes características de Mesa 17.1: Vega, RadeonSI Shader Cache, Maduring Vulkan, 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. ^ "Título" (PDF) . Consultado el 1 de agosto de 2018 .
  22. ^ "Listado de eventos" (PDF) . www.x.org .
  23. ^ "Características de Mesa 17.3 - Actualizaciones de Vulkan, mejor rendimiento - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  24. ^ a b c d e f g h i "Calendario de lanzamientos" . Mesa3d.org . Consultado el 1 de agosto de 2018 .
  25. ^ "Las características de Mesa 18.0 incluyen muchas mejoras de OpenGL / Vulkan, caché de Intel Shader y extras - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  26. ^ a b "Mesa 18.2 se lanzará pronto con muchas mejoras del controlador OpenGL / Vulkan - Phoronix" . www.phoronix.com .
  27. ^ "Las nuevas características brillantes de Mesa 18.3 para controladores de gráficos Intel / Radeon de código abierto - Phoronix" . www.phoronix.com .
  28. ^ "Mesa hizo un progreso masivo en 2018 en controladores Vulkan / OpenGL de código abierto - Phoronix" . www.phoronix.com .
  29. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.0-Features-Queue
  30. ^ https://www.phoronix.com/scan.php?page=article&item=mesa190-rad-jan&num=1
  31. ^ https://www.phoronix.com/scan.php?page=article&item=radeonsi-nir-2019&num=1
  32. ^ https://www.phoronix.com/scan.php?page=news_item&px=Iris-GLSL-460-Compatibility
  33. ^ https://www.phoronix.com/scan.php?page=article&item=mesa-193-features
  34. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-rc1-Released
  35. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.0-Released
  36. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.1-Features
  37. ^ https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.0-Over-Vulkan
  38. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-RC1-Features-Released
  39. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2-Nouveau-HMM
  40. ^ https://www.phoronix.com/scan.php?page=news_item&px=V3DV-Mesa-Upstream-Plans
  41. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  42. ^ https://www.phoronix.com/scan.php?page=news_item&px=Zink-OpenGL-3.3-Mesa-20.3
  43. ^ https://www.phoronix.com/scan.php?page=news_item&px=OpenGL-4.5-LLVMpipe-Lands
  44. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-VALLIUM-Merged
  45. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-Direct3D-12-Gallium3D
  46. ^ https://xdc2020.x.org/event/9/contributions/621/attachments/701/1297/XDC_-_Mesa_for_Mapping_Layers.pdf
  47. ^ https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Collabora-DirectX
  48. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-2-5x-Faster-SPECViewPerf
  49. ^ https://www.phoronix.com/scan.php?page=article&item=mesa-21-features&num=1
  50. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.1-rc1-Released
  51. ^ https://www.phoronix.com/scan.php?page=search&q=Mesa%2021.1&popular
  52. ^ https://docs.mesa3d.org/relnotes.html
  53. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-21.0-Publicado
  54. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  55. ^ Larabel, Michael (4 de marzo de 2015). "Soporte OpenVG despojado de Gallium3D" . Phoronix . Consultado el 11 de julio de 2015 .
  56. ^ https://gitlab.freedesktop.org/mesa/mesa/commit/3acd7a34ab05b87521b74f626ec637e7fdcc6595
  57. ^ "últimos parches para" nueve "rastreador de estado" . Cgit.freedesktop.org . 4 de febrero de 2016.
  58. ^ 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 .
  59. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-Publicado
  60. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.2.2-Publicado
  61. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.1-Features
  62. ^ https://www.phoronix.com/scan.php?page=article&item=mesa20-radeonsi-nir&num=1
  63. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-19.3-RC1-Released
  64. ^ https://www.phoronix.com/scan.php?page=article&item=mesa-193-features&num=1
  65. ^ "Mesa 18.0 debería llegar hoy con muchas mejoras del controlador Vulkan / OpenGL - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  66. ^ "GalliumCompute" . Dri.freedesktop.org . Consultado el 24 de enero de 2019 .
  67. ^ "Actualización de estado de Clover" (PDF) . Consultado el 27 de marzo de 2020 .
  68. ^ "[Mesa-anuncio] mesa 17.0.0" . Consultado el 13 de febrero de 2017 .
  69. ^ "[Mesa-anuncio] mesa 13.0.0" . Consultado el 2 de noviembre de 2016 .
  70. ^ a b "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 .
  71. ^ "[Mesa-anuncio] Mesa 11.2.0" . Consultado el 4 de abril de 2016 .
  72. ^ "[Mesa-anuncio] Mesa 11.1.0" . Consultado el 15 de diciembre de 2015 .
  73. ^ "[Mesa-anuncio] Mesa 11.0.0" . Consultado el 26 de septiembre de 2015 .
  74. ^ "[Mesa-anuncio] Mesa 10.6.0" . Consultado el 15 de junio de 2015 .
  75. ^ Larabel, Michael (26 de octubre de 2013). "Funciones que se encuentran en Mesa 10.0" . Phoronix .
  76. ^ "[Mesa-anuncio] Mesa 10.5.0" . Consultado el 7 de marzo de 2015 .
  77. ^ "[Mesa-anuncio] Lanzamiento de Mesa 10.4.0" . Consultado el 7 de marzo de 2015 .
  78. ^ "[Mesa-anuncio] Mesa 10.3 lanzado" . Consultado el 7 de marzo de 2015 .
  79. ^ "[Mesa-anuncio] Mesa 10.2 lanzado" . Consultado el 7 de marzo de 2015 .
  80. ^ "[Mesa-anuncio] Mesa 10.1 lanzado" . Consultado el 7 de marzo de 2015 .
  81. ^ "[Mesa-anuncio] Mesa 10.0 lanzado" . Consultado el 7 de marzo de 2015 .
  82. ^ "Programa" (PDF) . www.x.org .
  83. ^ "Controlador Radeon Vulkan agregado a Mesa, Fresh Radeon Vulkan vs. OpenGL Benchmarks + AMDGPU-PRO - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  84. ^ a b "Vulkan Virgl ha comenzado para admitir esta API de gráficos / cómputo dentro de las máquinas virtuales - Phoronix" . www.phoronix.com .
  85. ^ https://www.phoronix.com/scan.php?page=news_item&px=Lavapipe-CPU-Vulkan-Windows
  86. ^ https://www.phoronix.com/scan.php?page=news_item&px=VirtIO-GPU-Venus-Vulkan
  87. ^ https://www.phoronix.com/scan.php?page=news_item&px=TURNIP-Hardware-Binning
  88. ^ https://www.phoronix.com/scan.php?page=news_item&px=TURNIP-KGSL-Vulkan-Bringup
  89. ^ https://www.phoronix.com/scan.php?page=news_item&px=V3DV-Raspberry-Pi4-Mesa-20.3
  90. ^ "Llevando la esgrima explícita de Android a la línea principal" . LWN.net . 5 de octubre de 2016.
  91. ^ "libgbm en los repositorios de Debian" . Packages.debian.org .
  92. ^ "Habilitación de sistemas de ventanas alternativos con una implementación de controlador de gráficos no Mesa" . X.org .
  93. ^ "NVIDIA quiere comentarios sobre su proyecto de asignación de memoria de dispositivo" . Phoronix .
  94. ^ "Aceleración de vídeo Nouveau" . freedesktop.org .
  95. ^ "Matriz de funciones de Radeon" . freedesktop.org .
  96. ^ Toral, Iago (8 de agosto de 2014). "Buceando en Mesa" . Consultado el 19 de mayo de 2016 .
  97. ^ "Página de estado de la infraestructura de renderizado directo" . freedesktop.org .
  98. ^ "Cómo mejorar el rendimiento de los juegos en su máquina Linux - APC" . Apcmag.com . 25 de julio de 2013 . Consultado el 1 de agosto de 2018 .
  99. ^ "Linux: Controladores Mesa, Gallium3D, Nouveau y NVIDIA, prueba OpenGL (GTX 280, GTX 480, GTX 580) - Geeks3D" . Geeks3d.com . Consultado el 1 de agosto de 2018 .
  100. ^ "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 .
  101. ^ "Intel / NVIDIA / AMD compiten en el rendimiento del controlador de GPU Linux de código abierto / cerrado - Phoronix" . Phoronix.com . Consultado el 1 de agosto de 2018 .
  102. ↑ a b c Paul, Brian (10 de agosto de 2000). "Introducción a la infraestructura de renderizado directo" . Dri.sourceforge.net . Consultado el 25 de enero de 2012 .
  103. ^ "DRI2" . X.org. Archivado desde el original el 16 de abril de 2013 . Consultado el 25 de enero de 2012 .
  104. ^ "DRI3 y presente [LWN.net]" . lwn.net . Consultado el 1 de agosto de 2018 .
  105. ^ "[PATCH 0/6] Agregue compatibilidad con DRI3000 a los controladores core e i965" . Lists.freedesktop.org . Consultado el 1 de agosto de 2018 .
  106. ^ "xorg-x11-drv-intel-2.99.917-19.20151206.fc23 (re) habilitado dri3 por defecto - kde - Listas de correo de Fedora" . listas.fedoraproject.org . Consultado el 3 de diciembre de 2016 .
  107. ^ "Radeon-AMDGPU-1.19-Actualizaciones" . Google.de . Consultado el 3 de diciembre de 2016 .
  108. ^ "LLVMpipe: OpenGL con Gallium3D en su CPU" . Phoronix.com . 30 de abril de 2010 . Consultado el 4 de noviembre de 2014 .
  109. ^ "llvmpipe" . mesa3d.org . Consultado el 8 de junio de 2015 .
  110. ^ "OpenSWR" . openswr.org . Consultado el 1 de agosto de 2018 .
  111. ^ "Mesamatrix: la matriz OpenGL vs Mesa" . mesamatrix.net . Consultado el 1 de agosto de 2018 .
  112. ^ "OpenSWR" . openswr.org . Consultado el 1 de agosto de 2018 .
  113. ^ "Copia archivada" . Archivado desde el original el 28 de agosto de 2018 . Consultado el 28 de agosto de 2018 .CS1 maint: archived copy as title (link)
  114. ^ "Seguimiento de características VirGL OpenGL de Mesa - Phoronix" . www.phoronix.com .
  115. ^ "VirGL de Mesa ahora tiene compatibilidad con OpenGL 4.2 para ofrecer máquinas virtuales invitadas - Phoronix" . www.phoronix.com .
  116. ^ "El rendimiento actual de Virgl3D, planes futuros - Phoronix" . www.phoronix.com .
  117. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 1 de octubre de 2018 . Consultado el 13 de diciembre de 2018 . CS1 maint: archived copy as title (link)
  118. ^ https://archive.fosdem.org/2019/schedule/event/virtual_gpu/attachments/slides/3353/export/events/attachments/virtual_gpu/slides/3353/Virgl_Presentation_FOSDEM2019.pdf
  119. ^ "Megadrivers DRI" . X.org . 25 de septiembre de 2013.
  120. ^ "Los rastreadores de estado de VDPAU y XvMC ahora son bibliotecas separadas" . Phoronix.com . 23 de junio de 2014.
  121. ^ https://people.freedesktop.org/~cwabbott0/nir-docs/intro.html
  122. ^ http://www.jlekstrand.net/jason/projects/mesa/nir-notes/
  123. ^ "Crear archivo de configuración" . cgit.freedesktop.org . Documentación de galio.
  124. ^ Fonseca, José (27 de abril de 2008). "Gallium3D: Introducción" . Consultado el 20 de junio de 2014 .
  125. Fonseca, José. "MESA3D.org: Introducción" . Consultado el 28 de octubre de 2016 .
  126. ^ "¡Gallium3D ahora en Mainline Mesa Code-Base!" . Phoronix . 11 de febrero de 2009 . Consultado el 26 de octubre de 2010 .
  127. ^ "El estado de Nouveau, parte 2" . LWN.net . 26 de febrero de 2008 . Consultado el 7 de marzo de 2008 .
  128. ^ a b "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 .
  129. ^ "La compatibilidad con ATI R300 Gallium3D DRI está" lista " " . Phoronix . 9 de noviembre de 2009 . Consultado el 15 de noviembre de 2010 .
  130. ^ "Radeon" R600g "Controlador Gallium3D combinado con [Mesa] Master" . Phoronix . 27 de mayo de 2010 . Consultado el 26 de octubre de 2010 .
  131. ^ "X.Org Wiki GalliumStatus" . Xorg . 22 de septiembre de 2010 . Consultado el 7 de diciembre de 2010 .
  132. ^ "iris: agregue un nuevo controlador Galium experimental para las GPU Intel Gen8 + (! 283) · Solicitudes de combinación · Mesa / mesa" . GitLab . Consultado el 21 de septiembre de 2019 .
  133. ^ "TG-Gallium3D" . Gráficos de tungsteno. Archivado desde el original el 3 de mayo de 2008 . Consultado el 1 de abril de 2008 .
  134. ^ Rusin, Zack (6 de febrero de 2008). "GPGPU" . Consultado el 1 de abril de 2008 .
  135. ^ Rusin, Zack (7 de febrero de 2008). "OpenVG y aceleración 2D" . Consultado el 1 de abril de 2008 .
  136. ^ "DRI2" . 4 de octubre de 2007. Archivado desde el original el 4 de julio de 2008 . Consultado el 1 de abril de 2008 .
  137. ^ Rusin, Zack (2 de noviembre de 2007). "Gallium3D LLVM" . Consultado el 1 de abril de 2008 .
  138. ^ Marshall, David (16 de diciembre de 2008). "Adquisición de fin de año de VMware de Tungsten Graphics" . InfoWorld.
  139. ^ "Galio" . Freedesktop.org . 2 de noviembre de 2011 . Consultado el 24 de agosto de 2012 .
  140. ^ "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 .
  141. ^ "nouveau: dígale adiós al viejo controlador DRI ... (cgit en FDO)" . Cgit.freedesktop.org . 13 de julio de 2008.
  142. ^ "¡Gallium3D ahora en Mainline Mesa Code-Base!" . Phoronix.com . 11 de febrero de 2009.
  143. ^ Larabel, Michael (25 de febrero de 2009). "Gallium3D, EGL ahora compilable en FreeBSD" . Phoronix .
  144. ^ "El rastreador de estado de OpenVG está en Mesa 3D" . Sourceforge.net . 1 de mayo de 2009.
  145. ^ "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 .
  146. ^ "r600g: agregar soporte de hoja perenne inicial (cgit en FDO)" . Cgit.freedesktop.org . 10 de septiembre de 2010.
  147. ^ "d3d1x: agregar nuevo rastreador de estado COM Direct3D 10/11 para Galio" . Cgit.freedesktop.org . 21 de septiembre de 2010.
  148. ^ Larabel, Michael (30 de noviembre de 2011). "Se elimina el controlador Gallium3D Intel 965" . Phoronix . pag. 1 . Consultado el 1 de diciembre de 2011 .
  149. ^ Larabel, Michael (30 de noviembre de 2011). "El controlador de celda Gallium3D también se cae" . Phoronix . pag. 1 . Consultado el 1 de diciembre de 2011 .
  150. ^ "nueve: agregue el rastreador de estado nueve para Direct3D9 (v3)" . Cgit.freedesktop.org . 18 de noviembre de 2014.
  151. ^ "Mesa 19.1 lanzado con Experimental Intel Gallium3D, otros nuevos controladores GL / VLK también - Phoronix" . www.phoronix.com . Consultado el 21 de septiembre de 2019 .
  152. ^ https://www.phoronix.com/scan.php?page=news_item&px=Mesa-20.3-OpenCL-1.2-Clover
  153. ^ "Introducción a Mesa" . Equipo Mesa . Consultado el 8 de junio de 2015 .
  154. ^ "Historial del proyecto" . Documentación de Mesa . Consultado el 11 de marzo de 2021 .
  155. ^ "¿Cuál es la relación entre Glide y DRI?" . dri.freedesktop.org . Consultado el 25 de enero de 2012 .

Enlaces externos [ editar ]

  • Página web oficial
  • Edge, Jake (octubre de 2013). "La historia de Mesa" .

Enlaces externos para Gallium3D [ editar ]

  • freedesktop.org - Gallium3D , un artículo sobre el estado actual de Gallium3D
  • Fonseca, José (abril de 2008), Introducción a Gallium3D
  • Rusin, Zack, Galio3D
  • Corbet, Jonathan (noviembre de 2007), Gestión de memoria para procesadores gráficos
  • Decodificación de video genérica acelerada por GPU , proyecto Google Summer of Code 2008 con Gallium, archivado desde el original el 31 de julio de 2008
  • Rusin, Zack (2008), Gallium3D: Graphics Done Right (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 puertos Gallium3D para AROS y Haiku (PDF) , FOSDEM 2010, 7 de febrero de 2010