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.
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]
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.
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:
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]
La pila de gráficos de Linux ha evolucionado, desviada por el protocolo central del sistema X Window .
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.
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.
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 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 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.
S3 Graphics desarrolla S3 Trio , ViRGE , Savage y Chrome , con soporte de OpenChrome. [62]
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]
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]
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 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 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.
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 .
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.
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )... se opone a ese código ofuscado. No lo consideramos software libre según nuestros estándares