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

Software que controla el hardware de gráficos de computadora
Diagrama de flujo con Tux, el pingüino de Linux
Los datos y las instrucciones se envían a la GPU para su procesamiento. Los resultados generados se almacenan en un búfer de cuadros , cuyo contenido es escaneado por el controlador de pantalla y enviado a la pantalla.

Un controlador de dispositivo gráfico libre y de código abierto es una pila de software que controla el hardware gráfico de la computadora y admite interfaces de programación de aplicaciones (API) de renderización de gráficos y se publica bajo una licencia de software libre y de código abierto . Los controladores de dispositivo gráfico están escritos para que un hardware específico funcione dentro de un núcleo de sistema operativo específico y admitan una variedad de API utilizadas por las aplicaciones para acceder al hardware gráfico. También pueden controlar la salida a la pantalla si el controlador de pantalla es parte del hardware gráfico. La mayoría de los controladores de dispositivo gráfico libres y de código abierto son desarrollados por el proyecto Mesa . El controlador está compuesto por un compilador , una API de renderización y un software que administra el acceso al hardware gráfico.

Los controladores sin código fuente disponible de forma libre (y legal) se conocen comúnmente como controladores binarios . Los controladores binarios utilizados en el contexto de sistemas operativos que son propensos a un desarrollo y cambio continuos (como Linux) crean problemas para los usuarios finales y los encargados del mantenimiento de paquetes . Estos problemas, que afectan la estabilidad, la seguridad y el rendimiento del sistema, son la razón principal para el desarrollo independiente de controladores libres y de código abierto. Cuando no hay documentación técnica disponible, a menudo se obtiene una comprensión del hardware subyacente mediante ingeniería inversa en sala limpia . En función de esta comprensión, los controladores de dispositivos se pueden escribir y publicar legalmente bajo cualquier licencia de software .

En casos excepcionales, el código fuente del controlador de un fabricante está disponible en Internet sin una licencia libre . Esto significa que el código se puede estudiar y modificar para uso personal, pero el código fuente modificado (y normalmente el original) no se puede distribuir libremente. Las soluciones a los errores del controlador no se pueden compartir fácilmente en forma de versiones modificadas del controlador. Por lo tanto, la utilidad de dichos controladores se reduce significativamente en comparación con los controladores gratuitos y de código abierto.

Problemas con los controladores propietarios

La visión del desarrollador de software

Diagrama de flujo; ver título
Ilustración de la pila de gráficos de Linux

Existen objeciones a los controladores binarios basados ​​en preocupaciones de derechos de autor, seguridad, confiabilidad y desarrollo. Como parte de una campaña más amplia contra los blobs binarios , el desarrollador principal de OpenBSD, Theo de Raadt, dijo que con un controlador binario "no hay forma de arreglarlo cuando se rompe (y se romperá)"; cuando un producto que depende de controladores binarios es declarado al final de su vida útil por el fabricante, está efectivamente "roto para siempre". [1] El proyecto también ha declarado que los controladores binarios [2] "ocultan errores y soluciones alternativas para los errores", [3] una observación que ha sido reivindicada en cierta medida por los defectos encontrados en los controladores binarios (incluido un error explotable en los controladores 3D de Nvidia descubierto en octubre de 2006 por Rapid7 ). Se especula que el error ha existido desde 2004; Nvidia lo ha negado, afirmando que el problema solo se les comunicó en julio de 2006 y que el error de 2004 era un error en X.Org (no en el controlador de Nvidia). [4]

Los controladores binarios no suelen funcionar con las versiones actuales de software de código abierto y rara vez admiten instantáneas de desarrollo de software de código abierto; normalmente, no es posible que un desarrollador utilice directamente los controladores propietarios de Nvidia o ATI con una instantánea de desarrollo de un servidor X o una instantánea de desarrollo del núcleo Linux. Nadie más que los proveedores puede añadir funciones como la configuración del modo del núcleo a los controladores binarios, lo que impide su inclusión si el proveedor carece de capacidad o interés.

En la comunidad de desarrollo del núcleo Linux , Linus Torvalds ha hecho fuertes declaraciones sobre el tema de los módulos sólo binarios: "Me niego a siquiera considerar atarme las manos sobre algún módulo sólo binario... Quiero que la gente sepa que cuando usan módulos sólo binarios, es su problema". [5] Otro desarrollador del núcleo, Greg Kroah-Hartman , ha dicho que un módulo del núcleo sólo binario no cumple con la licencia del núcleo (la Licencia Pública General GNU ); "sólo viola la GPL debido a cosas divertidas como trabajos derivados y enlaces y otras cosas". [6] El escritor y científico informático Peter Gutmann ha expresado su preocupación de que el esquema de gestión de derechos digitales en el sistema operativo Windows Vista de Microsoft puede limitar la disponibilidad de la documentación necesaria para escribir controladores abiertos, ya que "requiere que los detalles operativos del dispositivo se mantengan confidenciales". [7]

En el caso de los controladores binarios, existen objeciones debido a la filosofía del software libre , la calidad del software y las preocupaciones de seguridad . [8] En 2006, Greg Kroah-Hartman concluyó que:

"Los módulos de kernel de Linux de código cerrado son ilegales. Así de simple. He tenido la mala suerte de hablar con muchos abogados de propiedad intelectual diferentes a lo largo de los años sobre este tema, y ​​todos con los que he hablado están de acuerdo en que no hay forma de que alguien pueda crear un módulo de kernel de Linux, hoy en día, que pueda ser de código cerrado. Simplemente viola la GPL debido a cosas divertidas como los trabajos derivados y los enlaces ". [9]

El núcleo de Linux nunca ha mantenido una interfaz binaria de aplicación estable dentro del núcleo . [10] También existen preocupaciones de que los controladores propietarios puedan contener puertas traseras , como la que se encuentra en los controladores de módem de la serie Samsung Galaxy . [11]

La visión del desarrollador de hardware

Otro diagrama de flujo; ver título
En el futuro, libGL-fglrx-glx podría usar la libDRM del controlador de código abierto Radeon en lugar del blob binario propietario ; la mayor parte de la inversión está en el controlador de espacio de usuario.

Cuando aplicaciones como un motor de juegos 3D o un software de gráficos de computadora 3D derivan los cálculos de la CPU a la GPU, generalmente utilizan una API de propósito especial como OpenGL o Direct3D y no se dirigen al hardware directamente. Debido a que toda la traducción (desde las llamadas a la API hasta los códigos de operación de la GPU ) la realiza el controlador del dispositivo, contiene conocimiento especializado y es un objeto de optimización. Debido a la historia de la rigidez del desarrollo de controladores propietarios, ha habido un aumento reciente en la cantidad de controladores de dispositivos respaldados por la comunidad para GPU de escritorio y móviles. Las organizaciones de hardware libre y abierto como FOSSi, LowRISC y otras también se beneficiarían del desarrollo de un estándar de hardware gráfico abierto. Esto luego proporcionaría a los fabricantes de computadoras, aficionados y similares una plataforma completa y libre de regalías con la que desarrollar hardware informático y dispositivos relacionados.

El mercado de las computadoras de escritorio estuvo dominado durante mucho tiempo por el hardware para PC que utilizaba el conjunto de instrucciones x86 / x86-64 y las GPU disponibles para PC. Con tres competidores principales (Nvidia, AMD e Intel). El principal factor de competencia era el precio del hardware y el rendimiento bruto en los juegos de computadora 3D, que se ve afectado en gran medida por la traducción eficiente de las llamadas API en códigos de operación de GPU. El controlador de pantalla y el decodificador de video son partes inherentes de la tarjeta gráfica: hardware diseñado para ayudar en los cálculos necesarios para la decodificación de transmisiones de video. A medida que el mercado de hardware para PC se ha reducido, parece poco probable que ingresen nuevos competidores en este mercado y no está claro cuánto más conocimiento podría obtener una empresa al ver el código fuente de los controladores de otras empresas.

El sector de la telefonía móvil presenta una situación diferente. Los bloques funcionales (el controlador de pantalla del circuito integrado específico de la aplicación , la aceleración 2D y 3D y la decodificación y codificación de vídeo) son bloques de propiedad intelectual de semiconductores (SIP) separados en el chip, ya que los dispositivos de hardware varían sustancialmente; algunos reproductores multimedia portátiles requieren un controlador de pantalla que acelere la decodificación de vídeo, pero no requieren aceleración 3D. El objetivo del desarrollo no es sólo el rendimiento 3D puro, sino la integración del sistema, el consumo de energía y las capacidades 2D. También existe un enfoque que abandona el método tradicional ( Vsync ) de actualización de la pantalla y hace un mejor uso de la tecnología de muestreo y retención para reducir el consumo de energía.

Durante el segundo trimestre de 2013, el 79,3 por ciento de los teléfonos inteligentes vendidos en todo el mundo ejecutaban una versión de Android , [12] y el núcleo Linux domina los teléfonos inteligentes. Los desarrolladores de hardware tienen un incentivo para entregar controladores Linux para su hardware pero, debido a la competencia, no hay incentivo para hacer que estos controladores sean gratuitos y de código abierto. Problemas adicionales son las ampliaciones específicas de Android al núcleo Linux que no han sido aceptadas en la línea principal , como el Atomic Display Framework (ADF). [13] ADF es una característica de los núcleos AOSP 3.10 que proporciona un marco centrado en dma-buf entre el HAL hwcomposer de Android y el controlador del núcleo. ADF se superpone significativamente con el marco DRM - KMS . ADF no ha sido aceptado en la línea principal, pero se está desarrollando un conjunto diferente de soluciones que abordan los mismos problemas (conocido como configuración de modo atómico ). Proyectos como libhybris aprovechan los controladores de dispositivos Android para ejecutarse en plataformas Linux distintas de Android.

Arquitectura de software

Ilustración de las diferencias entre los modelos de Gallium3D y de infraestructura de renderizado directo
Mesa ( DRI ) y Gallium3D tienen diferentes modelos de controladores, pero comparten código gratuito y de fuente abierta .
Matriz de ejemplo de controlador
Matriz de ejemplo del modelo de controlador Gallium3D. Con la introducción del rastreador Gallium3D y las interfaces WinSys, 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 cada módulo State Tracker.

Los controladores gratuitos y de código abierto son desarrollados principalmente en y para Linux por desarrolladores del núcleo de Linux, entusiastas de la programación de terceros y empleados de empresas como Advanced Micro Devices . Cada controlador consta de cinco partes:

  1. Un componente del kernel de Linux DRM
  2. Un controlador KMS del componente del kernel de Linux (el controlador del controlador de pantalla )
  3. Un componente de espacio de usuario libDRM (una biblioteca contenedora para llamadas al sistema DRM, que solo debe ser utilizada por Mesa 3D)
  4. Un componente de espacio de usuario de Mesa 3D . Este componente es específico del hardware; se ejecuta en la CPU y traduce comandos OpenGL, por ejemplo, en código de máquina para la GPU. Debido a que el controlador del dispositivo está dividido, es posible el marshalling . Mesa 3D es la única implementación libre y de código abierto de OpenGL , OpenGL ES , OpenVG , GLX , EGL y OpenCL . En julio de 2014, la mayoría de los componentes se ajustaron a las especificaciones de Gallium3D . Un rastreador de estado completamente funcional para la versión 9 de Direct3D está escrito en C , y un rastreador sin mantenimiento para las versiones 10 y 11 de Direct3D está escrito en C++ . [14] Wine tiene la versión 9 de Direct3D. Otro componente de Wine traduce las llamadas de Direct3D en llamadas de OpenGL, trabajando con OpenGL.
  5. Device Dependent X (DDX), otro controlador de dispositivo de gráficos 2D para X.Org Server

El DRM es específico del kernel . Generalmente, hay un controlador VESA disponible para cualquier sistema operativo. El controlador VESA admite la mayoría de las tarjetas gráficas sin aceleración y con resoluciones de pantalla limitadas a un conjunto programado en el BIOS de video por el fabricante. [15]

Historia

La pila de gráficos de Linux ha evolucionado, desviada por el protocolo central del sistema X Window .

Controladores gratuitos y de código abierto

ATI y AMD

Radeon

Diagrama
Controladores de dispositivos Linux para hardware AMD en agosto de 2016

El controlador propietario de AMD , AMD Catalyst para sus Radeon , está disponible para Microsoft Windows y Linux (anteriormente fglrx). Se puede descargar una versión actual desde el sitio de AMD, y algunas distribuciones de Linux la contienen en sus repositorios. Está en proceso de ser reemplazada por un controlador híbrido AMDGPU-PRO que combina el kernel de código abierto, los controladores multimedia X y Mesa con controladores de código cerrado OpenGL, OpenCL y Vulkan derivados de Catalyst.

Los controladores FOSS para las GPU ATI -AMD se están desarrollando bajo el nombre de Radeon (xf86-video-ati o xserver-xorg-video-radeon). Aún deben cargar microcódigo propietario en la GPU para habilitar la aceleración de hardware. [16] [ verificación fallida ]

El código Radeon 3D se divide en seis controladores, según la tecnología de la GPU: los controladores clásicos radeon, r200 y r300 y los controladores Gallium3D r300g, r600g y radeonsi :

Hay disponible una matriz de características actualizada, [17] y hay soporte para Video Coding Engine [18] y Unified Video Decoder . [19] [20] Los controladores de dispositivos gráficos Radeon gratuitos y de código abierto no están diseñados a la inversa, sino que se basan en documentación publicada por AMD sin el requisito de firmar un acuerdo de confidencialidad (NDA). [21] [22] [23] La documentación comenzó a publicarse gradualmente en 2007. [24] [25] [26]

Además de proporcionar la documentación necesaria, los empleados de AMD contribuyen con código para respaldar su hardware y sus funciones. [18]

Todos los componentes del controlador de dispositivo gráfico Radeon son desarrollados por colaboradores principales y partes interesadas de todo el mundo. En 2011, la r300g superó a Catalyst en algunos casos.

GPU AMD

En la Game Developers Conference de 2014 , AMD anunció que estaban explorando un cambio de estrategia para volver a basar la parte del espacio de usuario de Catalyst en un módulo de kernel DRM gratuito y de código abierto en lugar de su blob de kernel propietario . [27]

El lanzamiento del nuevo módulo y pila del kernel AMDGPU se anunció en la lista de correo dri-devel en abril de 2015. [28] Aunque AMDGPU solo admite oficialmente tarjetas gráficas GCN 1.2 y posteriores, [29] se puede habilitar el soporte experimental para tarjetas gráficas GCN 1.0 y 1.1 (que solo son oficialmente compatibles con el controlador Radeon) a través de un parámetro del kernel. [30] [31] Se ha incluido una libdrm independiente, libdrm-amdgpu, desde libdrm 2.4.63. [32]

El código 3D radeonsi mencionado en el párrafo anterior sobre Radeon también se utiliza con amdgpu; el controlador 3D tiene back-ends tanto para radeon como para amdgpu.

Nvidia

Captura de pantalla de la hierba que crece fuera del agua.
Captura de pantalla de REnouveau, un programa que recopila datos para la mayor parte del trabajo de ingeniería inversa de Nouveau

El controlador propietario de Nvidia , el controlador Nvidia GeForce para GeForce , está disponible para Windows x86 / x86-64 , Linux x86/x86-64/ ARM , OS X 10.5 y posteriores, Solaris x86/x86-64 y FreeBSD x86/x86-64. Se puede descargar una versión actual de Internet y algunas distribuciones de Linux la contienen en sus repositorios. El controlador Nvidia GeForce beta 331.13 del 4 de octubre de 2013 admite la interfaz EGL , lo que permite la compatibilidad con Wayland junto con este controlador. [33] [34]

El controlador gratuito y de código abierto de Nvidia se llama nv. [35] Es limitado (solo admite aceleración 2D) y Matthew Garrett , Dirk Hohndel y otros han calificado su código fuente de confuso. [36] [37] [38] Nvidia decidió dejar obsoleto nv, sin agregar soporte para Fermi o GPU posteriores y DisplayPort , en marzo de 2010. [39]

En diciembre de 2009, Nvidia anunció que no apoyaría iniciativas de gráficos gratuitos. [40] El 23 de septiembre de 2013, la compañía anunció que publicaría parte de la documentación de sus GPU. [41]

Nouveau se basa casi por completo en información obtenida a través de ingeniería inversa . Este proyecto tiene como objetivo producir aceleración 3D para X.Org/Wayland utilizando Gallium3D . [ 42] El 26 de marzo de 2012, el componente DRM de Nouveau se marcó como estable y se promovió desde el área de ensayo del núcleo Linux. [43] Nouveau admite GPU basadas en Tesla (y anteriores), Fermi , Kepler y Maxwell . [44] El 31 de enero de 2014, el empleado de Nvidia Alexandre Courbot envió un extenso conjunto de parches que agrega soporte inicial para GK20A ( Tegra K1 ) a Nouveau. [45] En junio de 2014, Codethink ejecutó un compositor Weston basado en Wayland con el núcleo Linux 3.15, utilizando EGL y una "pila de controladores de gráficos 100% de código abierto" en un Tegra K1 . [46] Hay disponible una matriz de características. [47] En julio de 2014, Nouveau no pudo superar al controlador Nvidia GeForce debido a la falta de compatibilidad con la función de re-clocking. Tegra-re es un proyecto que trabaja para aplicar ingeniería inversa a la serie de GPU Tegra de nVidia basadas en VLIW que son anteriores a Tegra K1. [48]

Nvidia distribuye controladores de dispositivos propietarios para Tegra a través de OEM y como parte de su kit de desarrollo Linux para Tegra (anteriormente L4T). [49] Nvidia y un socio, Avionic Design, estaban trabajando en la presentación de Grate (controladores gratuitos y de código abierto para Tegra) antes del kernel principal de Linux en abril de 2012. [50] [51] El cofundador y director ejecutivo de la empresa presentó la hoja de ruta del procesador Tegra con Ubuntu Unity en la Conferencia de tecnología de GPU de 2013. [52 ]

El controlador de memoria unificada de Nvidia (nvidia-uvm.ko), que implementa la gestión de memoria para las GPU Pascal y Volta en Linux, tiene licencia MIT. El código fuente está disponible en las descargas del controlador de Nvidia para Linux en los sistemas que admiten nvidia-uvm.ko.

En mayo de 2022, Nvidia anunció una nueva iniciativa y política para abrir el código fuente de sus módulos de kernel cargables por GPU con licencia dual GPL / MIT , pero solo nuevos modelos en calidad alfa . Pero dijo: "Estos cambios son para los módulos del kernel, mientras que los componentes del modo de usuario no se modifican. El modo de usuario sigue siendo de código cerrado y se publica con binarios precompilados en el controlador y el kit de herramientas CUDA". [53]

Intel

Intel tiene un historial de producción (o puesta en servicio) de controladores de código abierto para sus chips gráficos, con la excepción de sus chips basados ​​en PowerVR . [54] Su controlador 2D X.Org se llama xf86-video-intel. El controlador de configuración de modo de kernel en el kernel de Linux no utiliza el BIOS de video para cambiar los modos de video ; dado que algunos BIOS tienen un rango limitado de modos, esto proporciona un acceso más confiable a aquellos compatibles con los adaptadores de video Intel.

La compañía trabajó en optimizar sus controladores Linux gratuitos para un rendimiento cercano al de sus contrapartes de Windows , especialmente en Sandy Bridge y hardware más nuevo donde las optimizaciones de rendimiento han permitido que el controlador Intel supere a sus controladores propietarios de Windows en ciertas tareas, en 2011. [55] [56] [57] Algunas de las mejoras de rendimiento también pueden beneficiar a los usuarios de hardware más antiguo. [58]

El soporte para LLC de Intel (Last Level Cache, L4-Cache, Crystalwell e Iris Pro) se agregó en el kernel de Linux 3.12. [59] [60] En 2013, la empresa tenía entre 20 y 30 desarrolladores de gráficos Linux a tiempo completo. [61]

Matrox

Matrox desarrolla y fabrica los chipsets Matrox Mystique , Parhelia , G200 , G400 y G550 . Aunque la empresa ofrece controladores gratuitos y de código abierto para sus chipsets más antiguos que el G550, los chipsets más nuevos que el G550 cuentan con el respaldo de un controlador de código cerrado.

Gráficos S3

S3 Graphics desarrolla S3 Trio , ViRGE , Savage y Chrome , con soporte de OpenChrome. [62]

Arm Ltd

Arm Ltd es una empresa de semiconductores fabless que otorga licencias de núcleos de propiedad intelectual de semiconductores . Aunque son conocidos por otorgar licencias del conjunto de instrucciones ARM y las CPU basadas en él, también desarrollan y otorgan licencias para la serie de GPU Mali y, más recientemente, las GPU Imortalis que admiten el trazado de rayos. El 21 de enero de 2012, Phoronix informó que Luc Verhaegen estaba impulsando un intento de ingeniería inversa dirigido a la serie de GPU Arm Mali (específicamente, las versiones Mali-200 y Mali-400). El proyecto de ingeniería inversa, conocido como Lima, se presentó en FOSDEM el 4 de febrero de 2012. [63] [64] El 2 de febrero de 2013, Verhaegen demostró Quake III Arena en modo timedemo, ejecutándose sobre el controlador Lima. [65] En mayo de 2018, un desarrollador de Lima publicó el controlador para su inclusión en el kernel de Linux. [66] A partir de mayo de 2019, el controlador Lima es parte del kernel principal de Linux. [67]

Panfrost es un proyecto de ingeniería inversa para las GPU Mali Txxx (Midgard) y Gxx (Bifrost). La charla sobre la introducción de Panfrost se presentó en la Conferencia de desarrolladores de X.Org 2018. A partir de mayo de 2019, el controlador Panfrost es parte del núcleo principal de Linux. [68]

ARM no ha indicado ninguna intención de proporcionar soporte para su hardware de aceleración de gráficos con licencia libre y de código abierto. Sin embargo, los empleados de ARM enviaron parches para el kernel de Linux para soportar su controlador de pantalla ARM HDLCD y los bloques SIP Mali DP500, DP550 y DP650 en diciembre de 2015 y abril de 2016. [69] [70]

Tecnologías de la imaginación

Imagination Technologies es una empresa de semiconductores fabless que desarrolla y licencia núcleos de propiedad intelectual de semiconductores , entre los que se encuentran las GPU PowerVR . Intel ha fabricado varias GPU basadas en PowerVR . Las GPU PowerVR se utilizan ampliamente en SoC móviles . Debido a su amplio uso en dispositivos integrados, la Free Software Foundation ha incluido la ingeniería inversa del controlador PowerVR en su lista de proyectos de alta prioridad. [71] A partir de marzo de 2022, Imagination ha proporcionado un controlador FOSS para su PowerVR GX6250 basado en la arquitectura Rogue de 2014 y sus GPU AXE-1-16M y BXS-4-64 basadas en la arquitectura A-Series más recientes. [72]

Viviente

Vivante Corporation es una empresa de semiconductores sin fábrica que otorga licencias de propiedad intelectual sobre núcleos de semiconductores y desarrolla la serie GCxxxx de GPU. Un controlador Linux de código cerrado y propietario de Vivante consta de partes de espacio de usuario y de núcleo. Aunque el componente de núcleo es de código abierto ( GPL ), los componentes de espacio de usuario (que consisten en las implementaciones GLES(2) y una biblioteca HAL) no lo son; estos contienen la mayor parte de la lógica del controlador.

Wladimir J. van der Laan encontró y documentó los bits de estado, el flujo de comandos y el ISA del sombreador estudiando cómo funcionan los blobs, examinando y manipulando los volcados del flujo de comandos. El controlador Etnaviv Gallium3D se está escribiendo en base a esta documentación. El trabajo de Van der Laan se inspiró en el controlador Lima, y ​​el proyecto ha producido un controlador Gallium3D LLVM funcional pero no optimizado. El controlador Etnaviv ha tenido un mejor rendimiento que el código propietario de Vivante en algunos puntos de referencia, y es compatible con las series GC400, GC800, GC1000, GC2000, GC3000 y GC7000 de Vivante. [73] En enero de 2017, Etnaviv se agregó a Mesa con soporte para OpenGL ES 2.0 y Desktop OpenGL 2.1. [74]

Qualcomm

Qualcomm desarrolla la serie de GPU móviles Adreno (anteriormente ATI Imageon ), y la incluye como parte de su serie de SoC móviles Snapdragon . Phoronix y Slashdot informaron en 2012 que Rob Clark, inspirado por el controlador Lima, estaba trabajando en controladores de ingeniería inversa para la serie de GPU Adreno. [75] [76] En una publicación de blog referenciada, Clark escribió que estaba haciendo el proyecto en su tiempo libre y que la plataforma Qualcomm era su único objetivo viable para trabajar en gráficos 3D abiertos. Sus empleadores ( Texas Instruments y Linaro ) estaban afiliados a los núcleos Imagination PowerVR y ARM Mali , que habrían sido sus objetivos principales; tenía flujos de comandos en funcionamiento para soporte 2D, y los comandos 3D parecían tener las mismas características. [77] El código del controlador se publicó en Gitorious "freedreno", [78] y se ha movido a Mesa. [79] [80] En 2012, se completó un ensamblador de sombreadores en funcionamiento; [81] Se desarrollaron versiones de demostración para mapeo de texturas [82] y sombreado phong , [83] utilizando el compilador de sombreadores de ingeniería inversa. Clark demostró Freedreno ejecutando la composición de escritorio, el reproductor multimedia XBMC y Quake III Arena en FOSDEM el 2 de febrero de 2013. [84]

En agosto de 2013, el componente kernel de freedreno (controlador MSM) fue aceptado en la línea principal y está disponible en el kernel de Linux 3.12 y posteriores. [85] El controlador DDX obtuvo soporte para descriptores de archivos administrados por servidor que requieren X.Org Server versión 1.16 y posteriores en julio de 2014. [86] En enero de 2016, el controlador de estilo Mesa Gallium3D obtuvo soporte para Adreno 430; [87] en noviembre de ese año, el controlador agregó soporte para la serie Adreno 500. [88] Freedreno se puede utilizar en dispositivos como 96Boards Dragonboard 410c y Nexus 7 (2013) en distribuciones tradicionales de Linux (como Debian y Fedora ) y en Android .

Broadcom

Diagrama de software
El controlador Mesa para VideoCore4, VC4, fue escrito desde cero por Eric Anholt de Broadcom. [89]

Broadcom desarrolla y diseña la serie de GPU VideoCore como parte de sus SoC . Dado que es utilizada por Raspberry Pi , ha habido un interés considerable en un controlador FOSS para VideoCore. [90] La Fundación Raspberry Pi, en cooperación con Broadcom, anunció el 24 de octubre de 2012 que habían abierto el código fuente de "todo el código ARM (CPU) que controla la GPU". [ cita requerida ] Sin embargo, el anuncio fue engañoso; según el autor del controlador Lima diseñado a la inversa, los nuevos componentes de código abierto solo permitían el paso de mensajes entre la CPU ARM y VideoCore, pero ofrecían poca información sobre Videocore y poca programabilidad adicional. [91] La GPU Videocore ejecuta un RTOS que maneja el procesamiento; la aceleración de video se realiza con firmware RTOS codificado para su GPU propietaria, y el firmware no era de código abierto en esa fecha. [92] Dado que no había una cadena de herramientas dirigida a la GPU propietaria ni un conjunto de instrucciones documentado , no se podía aprovechar ninguna ventaja si el código fuente del firmware estaba disponible. El proyecto Videocoreiv [93] intentó documentar las GPU VideoCore.

El 28 de febrero de 2014 (el segundo aniversario de Raspberry Pi), Broadcom y la Fundación Raspberry Pi anunciaron el lanzamiento de la documentación completa para el núcleo de gráficos VideoCore IV y una versión completa del código fuente de la pila de gráficos bajo una licencia BSD de 3 cláusulas . [94] [95] El código de gráficos 3D con licencia libre se envió a Mesa el 29 de agosto de 2014, [96] y apareció por primera vez en la versión 10.3 de Mesa.

Otros vendedores

Aunque Silicon Integrated Systems y VIA Technologies han expresado un interés limitado en los controladores de código abierto, ambos han publicado el código fuente que ha sido integrado en X.Org por los desarrolladores de FOSS. [38] En julio de 2008, VIA abrió la documentación de sus productos para mejorar su imagen en las comunidades de Linux y de código abierto. [97] La ​​empresa no ha trabajado con la comunidad de código abierto para proporcionar documentación y un controlador DRM funcional , lo que ha dejado sin cumplir las expectativas de soporte para Linux. [98] El 6 de enero de 2011, se anunció que VIA ya no estaba interesada en apoyar las iniciativas de gráficos libres. [99]

DisplayLink anunció un proyecto de código abierto, Libdlo, [100] con el objetivo de brindar soporte para su tecnología de gráficos USB a Linux y otras plataformas. Su código está disponible bajo la licencia LGPL , [101] pero no se ha integrado en un controlador X.Org . El soporte de gráficos de DisplayLink está disponible a través del controlador udlfb del núcleo (con fbdev) en la línea principal y el controlador udl/drm, que en marzo de 2012 solo estaba disponible en el árbol drm-next.

Los proveedores no relacionados con hardware también pueden ayudar a las iniciativas de gráficos libres. Red Hat tiene dos empleados a tiempo completo (David Airlie y Jérôme Glisse) que trabajan en el software de Radeon, [102] y el Proyecto Fedora patrocina un evento Fedora Graphics Test Week antes del lanzamiento de sus nuevas versiones de distribución Linux para probar controladores de gráficos libres. [103] Otras empresas que han proporcionado desarrollo o soporte incluyen Novell y VMware .

Proyectos de hardware abiertos

Ver subtítulo
Proyecto ensamblado de placa gráfica VGA
Otra placa de circuito
Prototipo del proyecto Open Graphics

El proyecto VGA tiene como objetivo crear una tarjeta de vídeo de bajo presupuesto y de código abierto compatible con VGA . [104] El proyecto Open Graphics tiene como objetivo crear una GPU de hardware abierto. El Open Graphics Device v1 tiene salidas DVI-I duales y un conector IDC de 100 pines. En septiembre de 2010, las primeras 25 placas OGD1 se pusieron a disposición para la solicitud de subvención y la compra. [105] El sistema en un chip Milkymist , orientado a gráficos integrados en lugar de computadoras de escritorio, admite una salida VGA, un sombreador de vértices limitado y una unidad de texturizado 2D. [106]

El Nyuzi, [107] un procesador GPGPU experimental, incluye un diseño de hardware sintetizable escrito en System Verilog , un emulador de conjunto de instrucciones, un compilador C-C++ basado en LLVM , bibliotecas de software y pruebas y explora software y hardware paralelos. Puede ejecutarse en una placa de matriz de puertas programable en campo Terasic DE2-115 . [108] [109]

Si un proyecto utiliza FPGAs, generalmente tiene una cadena de herramientas de código cerrado parcialmente (o completamente). Sin embargo, actualmente hay un par de cadenas de herramientas de código abierto disponibles para FPGAs basados ​​en Lattice (en particular para placas iCE40 y ECP5) que utilizan Project IceStorm, [110] y Trellis, [111] respectivamente. También hay un esfuerzo mayor y en curso para crear el "GCC de FPGAs" llamado SymbiFlow [112] que incluye las cadenas de herramientas de FPGA mencionadas anteriormente, así como una cadena de herramientas de código abierto en etapa inicial para FPGAs basados ​​en Xilinx.

Véase también

Referencias

  1. ^ Theo de Raadt (3 de diciembre de 2006). "Documentación abierta para hardware". Diapositivas de presentación de OpenCON 2006 . Consultado el 1 de febrero de 2007 .
  2. ^ "¿Qué significa "binario" en el controlador del dispositivo?" . Consultado el 14 de noviembre de 2017 .
  3. ^ "3.9: "¡Blob!"". OpenBSD . Consultado el 12 de febrero de 2007 .
  4. ^ "Linux: ¿Cómo afecta el aviso Rapid7 R7-0025 al controlador NVIDIA Unix?".
  5. ^ "a/lt-binario".
  6. ^ Kroah-Hartman, Greg. "Mitos, mentiras y verdades sobre el núcleo de Linux". registro de mono del núcleo de Linux.
  7. ^ Peter Gutmann (26 de diciembre de 2006). "Un análisis de costos de la protección de contenido de Windows Vista" . Consultado el 28 de enero de 2007 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  8. ^ Linux Weekly News, 14 de agosto de 2006: X.org, distribuidores y módulos propietarios
  9. ^ Greg Kroah-Hartman (2006). "Mitos, mentiras y verdades sobre el núcleo Linux". Simposio Linux .
  10. ^ "La interfaz del controlador del núcleo de Linux". Archivado desde el original el 4 de noviembre de 2013. Consultado el 4 de marzo de 2014 .
  11. ^ "Puerta trasera del Samsung Galaxy". 4 de febrero de 2014.
  12. ^ "Android se acerca al 80% de la cuota de mercado en los envíos mundiales de teléfonos inteligentes, mientras que iOS y BlackBerry caen, según IDC". 7 de agosto de 2013.
  13. ^ "Marco de visualización atómica".
  14. ^ "Direct3D 9 state tracker". 16 de julio de 2013. Archivado desde el original el 20 de julio de 2013. Consultado el 15 de noviembre de 2017 .
  15. ^ "Índice de /doc/Documentación/fb/" . Consultado el 15 de noviembre de 2017 .
  16. ^ Detalles del paquete Debian firmware-linux-nonfree en Stable Debian.org
  17. ^ "Radeon Feature" . Consultado el 15 de noviembre de 2017 .
  18. ^ ab "Soporte inicial de VCE en el kernel de Linux y en el controlador Mesa". 4 de febrero de 2014.
  19. ^ "drm-next-3.15 18 de febrero". 18 de febrero de 2014.
  20. ^ "drm-next-3.15 Mar 04". 4 de marzo de 2014.
  21. ^ "Guías para desarrolladores de AMD". Archivado desde el original el 16 de julio de 2013.
  22. ^ "Documentación proporcionada por AMD".
  23. ^ "Lista de documentación de AMD 3D". Archivado desde el original el 7 de octubre de 2013.
  24. ^ "AMD abrirá las especificaciones gráficas". LWN.net . 2007-09-05 . Consultado el 2014-07-15 .
  25. ^ "AMD: ¡Especificaciones de GPU sin acuerdos de confidencialidad!". 2007-09-10 . Consultado el 2014-07-15 .
  26. ^ David Airlie (13 de septiembre de 2007). "AMD me entrega las especificaciones en un CD". Archivado desde el original el 22 de octubre de 2012. Consultado el 15 de julio de 2014 .
  27. ^ "AMD explora nueva estrategia de controladores para Linux". 22 de marzo de 2014. Consultado el 23 de marzo de 2014 .
  28. ^ "Lanzamiento inicial del controlador AMDGPU". 20 de abril de 2015. Consultado el 26 de abril de 2016 .
  29. ^ "AMD avanza con una estrategia de controladores unificados para Linux y un nuevo controlador de kernel". Phoronix .
  30. ^ "Documentación del controlador AMDGPU". Freedesktop.org .
  31. ^ "AMD lanza soporte inicial del controlador AMDGPU para GPU GCN 1.0/Southern Islands". Phoronix .
  32. ^ "libdrm 2.4.63". 14 de agosto de 2015.
  33. ^ "Soporte para EGL en plataformas de 32 bits". 2013-10-04 . Consultado el 2014-07-15 .
  34. ^ "Lista de archivos lib32-nvidia-utils 340.24-1". 15 de julio de 2014.
  35. ^ "Página del controlador nv de X.org". 20 de mayo de 2013.
  36. ^ "Patch by Dirk Hohndel". 18 de noviembre de 1998. Archivado desde el original el 1 de febrero de 2014. Consultado el 15 de julio de 2014. ... se opone a ese código ofuscado. No lo consideramos software libre según nuestros estándares
  37. ^ "Nouveau – La comunidad y los desarrollos pasados, actuales y futuros" (PDF) . 2011-09-13 . Consultado el 2014-07-15 .
  38. ^ ab David M. Airlie (19 de julio de 2006). "Controladores gráficos de código abierto: no matan gatitos" (PDF) . Actas del Simposio sobre Linux, volumen uno . Ottawa , Ontario, Canadá. Archivado desde el original (PDF) el 8 de febrero de 2007. Consultado el 28 de enero de 2007 .
  39. ^ "Nvidia deja de usar "NV"". Phoronix . 26 de marzo de 2010.
  40. ^ "Respuesta de Nvidia al trabajo reciente de Nouveau". Phoronix . 14 de diciembre de 2009.
  41. ^ "Nvidia ofrece publicar documentación sobre ciertos aspectos de sus GPU". 23 de septiembre de 2013. Consultado el 24 de septiembre de 2013 .
  42. ^ "Nouveau: controlador acelerado de código abierto para tarjetas nVidia". Archivado desde el original el 23 de julio de 2014. Consultado el 10 de agosto de 2006 .
  43. ^ "El piloto de Nouveau se gradúa de la puesta en escena". LWN.net . 2012-03-23.
  44. ^ "Nombres de ingeniería para Nvidia".
  45. ^ "drm/nouveau: soporte inicial para GK20A (Tegra K1)". 31 de enero de 2014.
  46. ^ "Codethink hace funcionar el NVIDIA Jetson TK1 con Linux 3.15, Wayland". Phoronix . 12 de junio de 2014.
  47. ^ "Matriz de características del controlador Nouveau" . Consultado el 16 de noviembre de 2017 .
  48. ^ "Tegra-re". GitHub . Consultado el 16 de noviembre de 2017 .
  49. ^ "Archivo Linux para Tegra". 30 de enero de 2014. Consultado el 16 de noviembre de 2017 .
  50. ^ Mayo, Jon (20 de abril de 2012). "[RFC 0/4] Añadir compatibilidad con NVIDIA Tegra DRM". dri-devel (Lista de correo) . Consultado el 21 de agosto de 2012 .
  51. ^ Larabel, Michael (11 de abril de 2012). "Un controlador DRM/KMS para NVIDIA Tegra 2 da pistas". Phoronix Media . Consultado el 21 de agosto de 2012 .
  52. ^ "GTC 2013: Hoja de ruta de NVIDIA para Tegra (6 de 11)". YouTube. Archivado desde el original el 2021-12-21 . Consultado el 2013-07-10 .
  53. ^ "NVIDIA lanza módulos de kernel de GPU de código abierto". 2022-05-19 . Consultado el 2022-06-07 .
  54. ^ Una descripción general de los fabricantes de tarjetas gráficas y su funcionamiento con Ubuntu Ubuntu Gamer, 10 de enero de 2011 (artículo de Luke Benstead); (copia del artículo)
  55. ^ "El SNB Intel Linux ofrece más rendimiento". Phoronix . 2011-03-22 . Consultado el 2011-03-23 ​​.
  56. ^ "El rendimiento de Intel Sandy Bridge vuelve a subir". Phoronix . 2011-03-31 . Consultado el 2011-03-31 .
  57. ^ "El controlador de Linux de Intel SNB puede superar al controlador de Windows". Phoronix . 2011-05-23 . Consultado el 2011-05-23 .
  58. ^ "Una mirada histórica al rendimiento de los gráficos Intel Ironlake". Phoronix . 2011-05-25 . Consultado el 2011-05-25 .
  59. ^ "drm/i915: utilizar eLLC/LLC de forma predeterminada cuando esté disponible".
  60. ^ "drm/i915: Utilice el almacenamiento en caché de escritura simultánea para el plano de visualización en Iris".
  61. ^ "Intel tiene entre 20 y 30 desarrolladores de gráficos para Linux a tiempo completo". 2 de febrero de 2013.
  62. ^ "OpenChrome" . Consultado el 16 de noviembre de 2017 .
  63. ^ phoronix (6 de febrero de 2012). «Phoronix.com - FOSDEM 2012 - ARM Mali de código abierto». Archivado desde el original el 21 de diciembre de 2021, vía YouTube.
  64. ^ Phoronix, 21 de enero de 2012: Un controlador de GPU Mali de código abierto y diseñado a la inversa
  65. ^ "¡Demostración temporal de Quake 3 Arena en la cima del Lima Driver!". Archivado desde el original el 9 de febrero de 2013.
  66. ^ "Controlador DRM de Lima [LWN.net]". lwn.net .
  67. ^ drm/lima: controlador para GPU ARM Mali4xx}
  68. ^ drm/panfrost: Agregar el controlador panfrost inicial
  69. ^ "drm: Agregar soporte para el controlador de pantalla ARM HDLCD". Lista de correo del kernel de Linux . 2015-12-11.
  70. ^ "Soporte inicial para el controlador de pantalla ARM Mali". Lista de correo del kernel de Linux . 2016-04-01.
  71. ^ Free Software Foundation, 25 de abril de 2005: Proyectos de software libre de alta prioridad
  72. ^ "Imagination Tech publica un controlador Vulkan PowerVR de código abierto para Mesa". www.phoronix.com . Consultado el 19 de abril de 2022 .
  73. ^ "laanwj/etna_viv". GitHub .
  74. ^ "etnaviv: controlador de galio para GPU Vivante".
  75. ^ Michael Larabel (14 de abril de 2012). "Un controlador gráfico de código abierto para Snapdragon". Phoronix . Consultado el 15 de abril de 2012 .
  76. ^ Soulskill (14 de abril de 2012). "Publicado el controlador de GPU Qualcomm de código abierto". Slashdot . Consultado el 15 de abril de 2012 .
  77. ^ Rob Clark (14 de abril de 2012). "¡Defendiendo los blobs binarios!". Linaro . Consultado el 15 de abril de 2012 .
  78. ^ Freedreno, 15 de abril de 2012 Archivado el 24 de octubre de 2012 en Wayback Machine .
  79. ^ "Mesa/Gallium3D obtiene su primer controlador de GPU SoC ARM - Phoronix".
  80. ^ "Mesa (master): r600g: agregar identificadores PCI de APU Richland". 15 de marzo de 2013.
  81. ^ Rob Clark (29 de julio de 2012). "Actualización de freedreno: ¡primera representación del ensamblador de sombreadores!" . Consultado el 16 de agosto de 2012 .
  82. ^ Rob Clark (5 de agosto de 2012). "cubo texturizado (¡pantalla completa!)" . Consultado el 16 de agosto de 2012 .
  83. ^ Rob Clark (15 de agosto de 2012). "Open Source lolscat!" . Consultado el 16 de agosto de 2012 .
  84. ^ "Controladores de GPU Open ARM – Freedreno". FOSDEM . 2013-02-02 . Consultado el 2014-07-15 .
  85. ^ "Fusionar el controlador MSM de Rob Clark". kernel.org . 2013-08-28 . Consultado el 2014-06-04 .
  86. ^ "xf86-video-freedreno 1.2.0". freedesktop.org . 14 de julio de 2014.
  87. ^ "Añadir compatibilidad con Adreno 430" . Consultado el 15 de noviembre de 2017 .
  88. ^ "Índice Mesa-Mesa" . Consultado el 15 de noviembre de 2017 .
  89. ^ Anholt, Eric (17 de junio de 2014). "Nuevo trabajo en Broadcom". Archivado desde el original el 7 de abril de 2015.
  90. ^ "Phoronix en la GPU Raspberry Pi".
  91. ^ "Zona de usuarios ARM de código abierto: Raspberry Pi". 24 de octubre de 2012.
  92. ^ "Open Source ARM userland - Raspberry Pi". 24 de octubre de 2012. Archivado desde el original el 30 de octubre de 2012 . Consultado el 1 de noviembre de 2012 .
  93. ^ "hermanhermitage/videocoreiv". GitHub .
  94. ^ "Raspberry Pi celebra su segundo aniversario con un plan para un controlador gráfico de código abierto". 28 de febrero de 2014.
  95. ^ Upton, Eben (28 de febrero de 2014). «Un regalo de cumpleaños de Broadcom: Raspberry Pi». Raspberry Pi Foundation . Consultado el 8 de julio de 2019 .
  96. ^ "vc4: Importación inicial del controlador del esqueleto". Biblioteca de gráficos 3D de Mesa. 9 de agosto de 2014.
  97. ^ Michael Larabel (26 de julio de 2008). "VIA publica tres guías de programación". Phoronix . Consultado el 4 de agosto de 2008 .
  98. ^ Michael Larabel (21 de noviembre de 2009). "Lista de tareas pendientes de Linux de VIA... ¿Quizás deberíamos mirar hacia el 2011?". Phoronix . Consultado el 30 de diciembre de 2009 .
  99. ^ El controlador de gráficos Open Linux de VIA ha sido defenestrado Phoronix , 6 de enero de 2011 (artículo de Michael Larabel )
  100. ^ "Libdlo" . Consultado el 16 de noviembre de 2017 .
  101. ^ "DisplayLink lanza código fuente Linux para sus procesadores gráficos USB" (Comunicado de prensa). DisplayLink. 15 de mayo de 2009. Consultado el 15 de mayo de 2009 .
  102. ^ AMD contrata a otro desarrollador de controladores de código abierto Phoronix , 11 de diciembre de 2010 (artículo de Michael Larabel )
  103. ^ Es la semana de pruebas de gráficos de Fedora Phoronix , 22 de febrero de 2011 (artículo de Michael Larabel )
  104. ^ "Hogar del Proyecto VGA, la tarjeta de video de bajo presupuesto, de código abierto y compatible con VGA".090503 wacco.mveas.com
  105. ^ "Fondo Linux: OGD1". Open Graphics Project . 23 de septiembre de 2010. Consultado el 4 de noviembre de 2011 .
  106. ^ Bourdeauducq, Sebastien (junio de 2010). "Una arquitectura SoC orientada al rendimiento para la síntesis de vídeo" (PDF) . Archivado desde el original (PDF) el 27 de julio de 2011. Consultado el 5 de noviembre de 2010 .
  107. ^ "Nyuzi es un procesador GPGPU experimental". GitHub . Junio ​​de 2021.
  108. ^ "Entorno de pruebas SOC". GitHub .
  109. ^ "Ejecutado en placa FPGA Terasic DE2-115". GitHub .
  110. ^ "Página de inicio del proyecto IceStorm". 21 de enero de 2022.
  111. ^ "Repositorio del proyecto Trellis". GitHub . 30 de mayo de 2021.
  112. ^ "Página de inicio de SymbiFlow".
  • Controladores de gráficos para Linux de Intel
  • La mejor tarjeta gráfica para Linux Archivado el 25 de marzo de 2017 en Wayback Machine
  • Página del portal de controladores Unix de NVIDIA
  • Proyecto VGA
  • Rastreador de estado de Direct3D 9 en Gallium3D
  • d3d1x: agrega un nuevo rastreador de estado COM de Direct3D 10/11 para Gallium
  • Página de inicio de Freedreno
  • Actualización de Freedreno/Gallium
  • Conjunto de pruebas Phoronix
  • Actualizaciones de estado para tres controladores gráficos (Nouveau, amdgpu y Etnaviv) LWN.net 2015
Obtenido de "https://es.wikipedia.org/w/index.php?title=Controlador_de_dispositivo_gráfico_libre_y_de_código_abierto&oldid=1223285086"