
Un controlador de dispositivo gráfico libre y de código abierto es un conjunto de software que controla el hardware gráfico de la computadora y admite interfaces de programación de aplicaciones ( API ) para la renderización de gráficos. Se distribuye bajo una licencia de software libre y de código abierto . Los controladores de dispositivo gráfico se escriben para hardware específico, para funcionar dentro de un núcleo de sistema operativo específico y para admitir una variedad de API que las aplicaciones utilizan para acceder al hardware gráfico. También pueden controlar la salida a la pantalla si el controlador de pantalla forma 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 se compone de un compilador , una API de renderización y 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 sistemas operativos propensos al desarrollo y cambio constantes (como Linux) generan problemas para los usuarios finales y los mantenedores de paquetes . Estos problemas, que afectan la estabilidad, la seguridad y el rendimiento del sistema, son la principal razón del desarrollo independiente de controladores libres y de código abierto. Cuando no se dispone de documentación técnica , a menudo se obtiene una comprensión del hardware subyacente mediante ingeniería inversa . Con base en esta comprensión, se pueden escribir y publicar legalmente controladores de dispositivos bajo cualquier licencia de software .
En raras ocasiones, el código fuente de un controlador de fabricante está disponible en internet sin licencia . Esto significa que el código puede estudiarse y modificarse para uso personal, pero el código fuente modificado (y generalmente el original) no puede distribuirse libremente. Las soluciones a los errores del controlador no se pueden compartir fácilmente mediante versiones modificadas. Por lo tanto, la utilidad de estos controladores se reduce significativamente en comparación con los controladores gratuitos y de código abierto.
Problemas con los controladores propietarios
Punto de vista del desarrollador de software

Hay objeciones a los controladores binarios únicamente basadas 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 manera 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 errores", [ 3 ] una observación que ha sido en cierta medida justificada por fallas encontradas en 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 a menudo no funcionan con las versiones actuales del software de código abierto y rara vez son compatibles con las versiones de desarrollo de dicho software. Por lo general, un desarrollador no puede usar directamente los controladores propietarios de Nvidia o ATI con una versión de desarrollo de un servidor X o del kernel de Linux. Las funciones como la configuración del modo del kernel solo pueden ser añadidas a los controladores binarios por los proveedores, lo que impide su inclusión si el proveedor carece de capacidad o interés.
En la comunidad de desarrollo del kernel de Linux , Linus Torvalds ha hecho declaraciones contundentes sobre el tema de los módulos binarios: "Me niego siquiera a considerar atarme las manos con respecto a algún módulo binario... Quiero que la gente sepa que cuando usan módulos binarios, es su problema". [ 5 ] Otro desarrollador del kernel, Greg Kroah-Hartman , ha dicho que un módulo del kernel binario no cumple con la licencia del kernel (la Licencia Pública General de GNU ); "simplemente viola la GPL debido a cosas divertidas como obras derivadas 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 pueda 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 del 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 a lo largo de los años sobre este tema, y todos coinciden en que hoy en día es imposible crear un módulo del kernel de Linux de código cerrado. Simplemente viola la GPL debido a cuestiones como las obras derivadas 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 encontró en los controladores de módem de la serie Samsung Galaxy . [ 11 ]
Punto de vista del desarrollador de hardware

Cuando aplicaciones como un motor de juegos 3D o un software de gráficos 3D transfieren cálculos de la CPU a la GPU, suelen usar una API específica como OpenGL o Direct3D y no interactúan directamente con el hardware. Dado que toda la traducción (de las llamadas a la API a los códigos de operación de la GPU ) la realiza el controlador del dispositivo, este contiene conocimientos especializados y es objeto de optimización. Debido a la rigidez histórica del desarrollo de controladores propietarios, se ha producido un aumento reciente en el número de controladores de dispositivos respaldados por la comunidad para GPU de escritorio y móviles. Organizaciones de hardware libre y abierto como FOSSi, LowRISC y otras, también se beneficiarían del desarrollo de un estándar abierto de hardware gráfico. Esto proporcionaría a los fabricantes de ordenadores, aficionados y otros usuarios una plataforma completa y libre de regalías para desarrollar hardware informático y dispositivos relacionados.
El mercado de ordenadores de sobremesa 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. Contaba con tres grandes competidores (Nvidia, AMD e Intel). El principal factor competitivo era el precio del hardware y el rendimiento bruto en juegos de ordenador 3D, que se ve muy afectado por la traducción eficiente de las llamadas a la API a códigos de operación de la GPU. El controlador de pantalla y el decodificador de vídeo son partes inherentes de la tarjeta gráfica: hardware diseñado para ayudar en los cálculos necesarios para la decodificación de flujos de vídeo. Dado que el mercado de hardware para PC se ha reducido, parece improbable que entren nuevos competidores en este mercado y no está claro cuánto conocimiento adicional podría obtener una empresa al ver el código fuente de los controladores de otras empresas.
El sector 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) independientes en el chip, dado 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 la aceleración 3D. El objetivo del desarrollo no es solo el rendimiento 3D puro, sino también 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 aprovecha mejor la tecnología de muestreo y retención para reducir el consumo de energía.
Durante el segundo trimestre de 2013, el 79,3% de los smartphones vendidos en todo el mundo ejecutaban una versión de Android , [ 12 ] y el kernel de Linux domina los smartphones. Los desarrolladores de hardware tienen un incentivo para proporcionar controladores de Linux para su hardware, pero, debido a la competencia, no tienen incentivos para que estos controladores sean gratuitos y de código abierto. Problemas adicionales son las ampliaciones específicas de Android al kernel de Linux que no han sido aceptadas en la rama principal , como el Atomic Display Framework (ADF). [ 13 ] ADF es una característica de los kernels AOSP 3.10 que proporciona un marco centrado en dma-buf entre el HAL hwcomposer de Android y el controlador del kernel. ADF se superpone significativamente con el marco DRM - KMS . ADF no ha sido aceptado en la rama principal, pero un conjunto diferente de soluciones que abordan los mismos problemas (conocido como configuración de modo atómico ) está en desarrollo. Proyectos como libhybris aprovechan los controladores de dispositivos Android para ejecutarse en plataformas Linux distintas de Android.
Arquitectura de software


Los controladores gratuitos y de código abierto se desarrollan principalmente en y para Linux por desarrolladores del kernel de Linux, entusiastas de la programación de terceros y empleados de empresas como Advanced Micro Devices . Cada controlador tiene cinco partes:
- DRM de un componente del kernel de Linux
- Un componente del kernel de Linux , el controlador KMS (el controlador de la pantalla ).
- Un componente de espacio de usuario de libDRM (una biblioteca contenedora para las llamadas al sistema DRM, que solo debe ser utilizada por Mesa 3D).
- 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, a código máquina para la GPU. Debido a que el controlador del dispositivo está dividido, es posible el serializado . 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 ajustaban a las especificaciones de Gallium3D . Un rastreador de estado completamente funcional para Direct3D versión 9 está escrito en C , y un rastreador sin mantenimiento para Direct3D versiones 10 y 11 está escrito en C++ . [ 14 ] Wine tiene Direct3D versión 9. Otro componente de Wine traduce llamadas de Direct3D a llamadas de OpenGL, trabajando con OpenGL.
- Device Dependent X (DDX), otro controlador de dispositivos gráficos 2D para X.Org Server
El DRM es específico del kernel . Generalmente, existe 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 la BIOS de vídeo por el fabricante. [ 15 ]
Historia
La pila gráfica de Linux ha evolucionado, desviada por el protocolo central del Sistema X Window .
Controladores 2D en el servidor X

Todo el acceso se realiza a través del Administrador de renderizado directo.
En el kernel de Linux 3.12, los nodos de renderizado se fusionan y la configuración del modo se separa. Wayland implementa el renderizado directo sobre EGL .
Controladores gratuitos y de código abierto
ATI y AMD
Radeon


glxinfomuestra información de OpenGL glxgearsejecutándose en un sistema Linux con el módulo del kernel AMDGPU.El controlador propietario de AMD , AMD Catalyst para sus tarjetas gráficas Radeon , está disponible para Microsoft Windows y Linux (anteriormente conocido como fglrx). Se puede descargar una versión actual desde el sitio web de AMD, y algunas distribuciones de Linux la incluyen en sus repositorios. Actualmente se está reemplazando por un controlador híbrido AMDGPU-PRO que combina el kernel de código abierto y los controladores multimedia X y Mesa con los controladores de código cerrado OpenGL, OpenCL y Vulkan derivados de Catalyst.
Los controladores FOSS para las GPU de ATI y AMD se están desarrollando bajo el nombre Radeon (xf86-video-ati o xserver-xorg-video-radeon). Aún deben cargar microcódigo propietario en la GPU para habilitar la aceleración por hardware. [ 16 ]
El código Radeon 3D se divide en seis controladores, según la tecnología de la GPU: los controladores radeon, r200 y r300 classic y los controladores r300g, r600g y radeonsi Gallium3D :
- Radeon es compatible con la serie R100 .
- El R200 es compatible con la serie R200 .
- R300g admite microarquitecturas de modelos de sombreado pre-unificados : R300 , R400 y R500 .
- El R600g es compatible con todas las GPU basadas en TeraScale (VLIW5/4) : R600 , R700 , HD 5000 (Evergreen) y HD 6000 (Islas del Norte) .
- Radeonsi es compatible con todas las GPU basadas en Graphics Core Next : HD 7000 , HD 8000 y Rx 200 (Islas del Sur, Islas del Mar e Islas Volcánicas).
Se encuentra disponible una matriz de características actualizada, [ 17 ] y se ofrece 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 se obtienen mediante ingeniería inversa, sino que se basan en la documentación publicada por AMD sin necesidad 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 dar soporte a su hardware y funciones. [ 18 ]
Todos los componentes del controlador de la tarjeta gráfica Radeon son desarrollados por colaboradores principales y partes interesadas de todo el mundo. En 2011, el 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 rebasar 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 del kernel y pila 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 la compatibilidad experimental con tarjetas gráficas GCN 1.0 y 1.1 (que solo son compatibles oficialmente con el controlador Radeon) mediante un parámetro del kernel. [ 30 ] [ 31 ] Se ha incluido una libdrm separada , libdrm-amdgpu, desde libdrm 2.4.63. [ 32 ]
El código 3D de 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

El controlador propietario de Nvidia , Nvidia GeForce driver for GeForce , está disponible para Windows x86 / x86-64 , Linux x86/x86-64/ ARM , OS X 10.5 y versiones 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 incluyen en sus repositorios. El controlador beta Nvidia GeForce 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 dicho que su código fuente es confuso. [ 36 ] [ 37 ] [ 38 ] Nvidia decidió descontinuar nv, no agregando soporte para GPU Fermi o posteriores y DisplayPort , en marzo de 2010. [ 39 ]
En diciembre de 2009, Nvidia anunció que no apoyaría las iniciativas de gráficos libres. [ 40 ] El 23 de septiembre de 2013, la compañía anunció que publicaría documentación sobre 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 usando Gallium3D . [ 42 ] El 26 de marzo de 2012, el componente DRM de Nouveau fue marcado como estable y promovido desde el área de pruebas del kernel de 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 el GK20A ( Tegra K1 ) a Nouveau. [ 45 ] En junio de 2014, Codethink supuestamente ejecutó un compositor Weston basado en Wayland con el kernel de Linux 3.15, usando EGL y una "pila de controladores gráficos 100% de código abierto" en un Tegra K1 . [ 46 ] Hay una matriz de características disponible. [ 47 ] En julio de 2014, Nouveau no pudo superar al controlador GeForce de Nvidia debido a la falta de soporte para el cambio de frecuencia. Tegra-re es un proyecto que trabaja en la ingeniería inversa de 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 fabricantes de equipos originales (OEM) y como parte de su kit de desarrollo Linux for Tegra (anteriormente L4T). [ 49 ] Nvidia y un socio, Avionic Design , estaban trabajando en la presentación de Grate (controladores libres y de código abierto para Tegra) al núcleo principal de Linux en abril de 2012. [ 50 ] [ 51 ] El cofundador y director ejecutivo de la compañía 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 de controladores de Nvidia para Linux en sistemas compatibles con nvidia-uvm.ko.
En mayo de 2022, Nvidia anunció una nueva iniciativa y política para liberar el código fuente de sus módulos de kernel cargables de GPU con licencia dual GPL - MIT , pero solo nuevos modelos en calidad alfa . Sin embargo, declaró: "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 ] El controlador de código abierto se ha actualizado desde entonces al estado de producción y ahora se recomienda oficialmente para las GPU de la serie RTX 20 y posteriores. [ 54 ] [ 55 ] Las arquitecturas de GPU NVIDIA Blackwell ( generación RTX 50 ) y posteriores solo son compatibles con el controlador abierto. [ 56 ]
Intel
Intel tiene un historial de producir (o encargar) controladores de código abierto para sus chips gráficos, con la excepción de sus chips basados en PowerVR . [ 57 ] Su controlador 2D X.Org se llama xf86-video-intel. El controlador de configuración de modo del kernel en el kernel de Linux no utiliza la BIOS de vídeo para cambiar los modos de vídeo ; dado que algunas BIOS tienen un rango limitado de modos, esto proporciona un acceso más fiable a los compatibles con los adaptadores de vídeo de Intel.
La empresa trabajó en la optimización de sus controladores gratuitos para Linux para lograr un rendimiento similar al de sus homólogos de Windows , especialmente en Sandy Bridge y hardware más reciente, donde las optimizaciones de rendimiento permitieron que el controlador de Intel superara a sus controladores propietarios de Windows en ciertas tareas, en 2011. [ 58 ] [ 59 ] [ 60 ] Algunas de las mejoras de rendimiento también pueden beneficiar a los usuarios de hardware más antiguo. [ 61 ]
Se añadió soporte para Intel LLC (Last Level Cache, L4-Cache, Crystalwell e Iris Pro) en el kernel de Linux 3.12. [ 62 ] [ 63 ] En 2013, la empresa tenía entre 20 y 30 desarrolladores de gráficos Linux a tiempo completo. [ 64 ]
Matrox
Matrox desarrolla y fabrica los chipsets Matrox Mystique , Parhelia , G200 , G400 y G550 . Si bien la compañía ofrece controladores gratuitos y de código abierto para sus chipsets anteriores al G550, los chipsets posteriores al G550 son compatibles con un controlador de código cerrado.
Gráficos S3
S3 Graphics desarrolla S3 Trio , ViRGE , Savage y Chrome , con soporte de OpenChrome. [ 65 ]
Arm Ltd
Arm Ltd es una empresa de semiconductores sin fábrica que licencia núcleos de propiedad intelectual de semiconductores . Aunque son conocidos por licenciar el conjunto de instrucciones ARM y las CPU basadas en él, también desarrollan y licencian la serie de GPU Mali, y más recientemente las GPU Imortalis que admiten trazado de rayos. El 21 de enero de 2012, Phoronix informó que Luc Verhaegen estaba liderando 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, fue presentado en FOSDEM el 4 de febrero de 2012. [ 66 ] [ 67 ] El 2 de febrero de 2013, Verhaegen demostró Quake III Arena en modo timedemo, ejecutándose sobre el controlador Lima. [ 68 ] En mayo de 2018, un desarrollador de Lima publicó el controlador para su inclusión en el kernel de Linux. [ 69 ] A partir de mayo de 2019, el controlador Lima forma parte del núcleo principal de Linux. [ 70 ]
Panfrost es una pila de controladores de código abierto para GPU Mali (e Immortalis), que cubre Txxx (Midgard) y generaciones más recientes. Se presentó una charla introductoria sobre Panfrost en la Conferencia de Desarrolladores de X.Org 2018. [ 71 ] A partir de mayo de 2019, el controlador del kernel Panfrost forma parte del kernel principal de Linux. [ 72 ] El lado del espacio de usuario consta del controlador Panfrost de Mesa que proporciona OpenGL ES y OpenGL ; así como el controlador de espacio de usuario PanVK que proporciona Vulkan . [ 73 ]
Collabora desarrolló el controlador de kernel Panthor para las GPU Valhall de tercera generación y posteriores. [ 74 ] Los controladores de espacio de usuario Panfrost y PanVK en Mesa utilizan el controlador de kernel Panthor en estas GPU. Posteriormente, Collabora anunció el controlador de kernel Tyr, un esfuerzo conjunto entre Collabora, Arm y Google , escrito en Rust y diseñado para eventualmente reemplazar al controlador de kernel Panthor. [ 75 ]
Tecnologías de la imaginación
Imagination Technologies es una empresa de semiconductores sin fábrica propia 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 dispositivos móviles de sistema en un chip (SoC). 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. [ 76 ] A marzo de 2022, Imagination ha proporcionado un controlador FOSS para su PowerVR GX6250 de 2014, basado en la arquitectura Rogue , y para sus GPU AXE-1-16M y BXS-4-64 , más recientes, basadas en la arquitectura de la serie A. [ 77 ]
Vivante
Vivante Corporation es una empresa de semiconductores sin fábrica propia que licencia núcleos de propiedad intelectual de semiconductores y desarrolla la serie de GPU GCxxxx. Un controlador Linux propietario y de código cerrado de Vivante consta de partes para el espacio del kernel y para el espacio de usuario. Si bien el componente del kernel es de código abierto ( GPL ), los componentes del espacio de usuario —que consisten en las implementaciones de 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 descubrió y documentó los bits de estado, el flujo de comandos y el ISA del sombreador estudiando cómo funcionan los blobs, examinando y manipulando volcados del flujo de comandos. El controlador Etnaviv Gallium3D se está escribiendo basándose en esta documentación. El trabajo de Van der Laan se inspiró en el controlador Lima, y el proyecto ha producido un controlador LLVM Gallium3D funcional pero no optimizado. El controlador Etnaviv ha tenido un mejor rendimiento que el código propietario de Vivante en algunas pruebas de rendimiento, y es compatible con las series GC400, GC800, GC1000, GC2000, GC3000 y GC7000 de Vivante. [ 78 ] En enero de 2017, Etnaviv se añadió a Mesa con soporte para OpenGL ES 2.0 y Desktop OpenGL 2.1. [ 79 ]
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 la ingeniería inversa de controladores para la serie de GPU Adreno. [ 80 ] [ 81 ] 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 con los núcleos Imagination PowerVR y ARM Mali , que habrían sido sus objetivos principales; tenía flujos de comandos funcionales para soporte 2D, y los comandos 3D parecían tener las mismas características. [ 82 ] El código del controlador se publicó en Gitorious "freedreno", [ 83 ] y se ha trasladado a Mesa. [ 84 ] [ 85 ] En 2012, se completó un ensamblador de sombreadores funcional; [ 86 ] se desarrollaron versiones de demostración para el mapeo de texturas [ 87 ] y el sombreado phong , [ 88 ] utilizando el compilador de sombreadores de ingeniería inversa. Clark demostró Freedreno ejecutando composición de escritorio, el reproductor multimedia XBMC y Quake III Arena en FOSDEM el 2 de febrero de 2013. [ 89 ]
En agosto de 2013, el componente del kernel de freedreno (controlador MSM) fue aceptado en la rama principal y está disponible en el kernel de Linux 3.12 y posteriores. [ 90 ] El controlador DDX obtuvo soporte para descriptores de archivos administrados por el servidor que requieren X.Org Server versión 1.16 y superior en julio de 2014. [ 91 ] En enero de 2016, el controlador Mesa Gallium3D-style obtuvo soporte para Adreno 430; [ 92 ] en noviembre de ese año, el controlador agregó soporte para la serie Adreno 500. [ 93 ] Freedreno se puede usar en dispositivos como 96Boards Dragonboard 410c y Nexus 7 (2013) en distribuciones tradicionales de Linux (como Debian y Fedora ) y en Android .
Broadcom

Broadcom desarrolla y diseña la serie de GPU VideoCore como parte de sus SoC . Dado que se utiliza en la Raspberry Pi , ha habido un interés considerable en un controlador FOSS para VideoCore. [ 95 ] La Fundación Raspberry Pi, en cooperación con Broadcom, anunció el 24 de octubre de 2012 que habían liberado el código fuente de "todo el código ARM (CPU) que controla la GPU". Sin embargo, el anuncio fue engañoso; según el autor del controlador Lima de ingeniería inversa, los componentes recién liberados 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. [ 96 ] La GPU VideoCore ejecuta un RTOS que gestiona el procesamiento; la aceleración de vídeo se realiza con el firmware del RTOS codificado para su GPU propietaria, y el firmware no se liberó como código fuente en esa fecha. [ 97 ] Dado que no existía ni una cadena de herramientas dirigida a la GPU propietaria ni un conjunto de instrucciones documentado , no se podía obtener ninguna ventaja si el código fuente del firmware estuviera disponible. El proyecto Videocoreiv [ 98 ] intentó documentar las GPU VideoCore.
El 28 de febrero de 2014 (segundo aniversario de Raspberry Pi), Broadcom y la Fundación Raspberry Pi anunciaron la publicación de la documentación completa para el núcleo gráfico VideoCore IV y una publicación completa del código fuente de la pila gráfica bajo una licencia BSD de 3 cláusulas . [ 99 ] [ 100 ] El código gráfico 3D de licencia libre se incorporó a Mesa el 29 de agosto de 2014, [ 101 ] y apareció por primera vez en la versión 10.3 de Mesa.
Otros proveedores
Aunque Silicon Integrated Systems y VIA Technologies han expresado un interés limitado en los controladores de código abierto, ambas han publicado código fuente que ha sido integrado en X.Org por 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. [ 102 ] La empresa no ha colaborado con la comunidad de código abierto para proporcionar documentación y un controlador DRM funcional , dejando insatisfechas las expectativas de soporte para Linux. [ 103 ] El 6 de enero de 2011, se anunció que VIA ya no estaba interesada en apoyar iniciativas de gráficos libres. [ 104 ]
DisplayLink anunció un proyecto de código abierto, Libdlo, [ 105 ] con el objetivo de brindar soporte para su tecnología gráfica USB a Linux y otras plataformas. Su código está disponible bajo la licencia LGPL , [ 106 ] pero no se ha integrado en un controlador X.Org . El soporte gráfico de DisplayLink está disponible a través del controlador udlfb del kernel (con fbdev) en la rama principal y el controlador udl/drm, que en marzo de 2012 solo estaba disponible en el árbol drm-next.
Los proveedores no relacionados con el hardware también pueden ayudar a las iniciativas de gráficos gratuitos. Red Hat tiene dos empleados a tiempo completo (David Airlie y Jérôme Glisse) que trabajan en el software Radeon, [ 107 ] 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 gratuitos. [ 108 ] Otras empresas que han proporcionado desarrollo o soporte incluyen Novell y VMware .
proyectos de hardware abierto


El proyecto VGA tiene como objetivo crear una tarjeta de video compatible con VGA de bajo costo y código abierto . [ 109 ] El Open Graphics Project tenía como objetivo crear una GPU de hardware abierto. En septiembre de 2010, las primeras 25 placas OGD1 estuvieron disponibles para la solicitud de subvenciones y la compra. [ 110 ] El sistema en un chip Milkymist , dirigido 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. [ 111 ]
El Nyuzi, [ 112 ] 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 programables en campo Terasic DE2-115 . [ 113 ] [ 114 ]
Si un proyecto utiliza FPGA, generalmente tiene una cadena de herramientas de código cerrado parcial o totalmente. Sin embargo, actualmente hay un par de cadenas de herramientas de código abierto disponibles para FPGA basadas en Lattice (en particular para las placas iCE40 y ECP5) que utilizan Project IceStorm [ 115 ] y Trellis [ 116 ] respectivamente. También hay un esfuerzo más amplio y en curso para crear el "GCC de FPGA" llamado SymbiFlow [ 117 ] , que incluye las cadenas de herramientas de FPGA mencionadas anteriormente, así como una cadena de herramientas de código abierto en etapa temprana para FPGA basadas en Xilinx.
Véase también
Referencias
- ^ de Raadt, Theo (3 de diciembre de 2006). "Documentación abierta para hardware" . Diapositivas de presentación de OpenCON 2006 . Consultado el 1 de febrero de 2007 .
- ↑ "¿Qué significa "binario" en un controlador de dispositivo?" . Consultado el 14 de noviembre de 2017 .
- ↑ "3.9: "¡Mancha!"" . OpenBSD . Consultado el 12 de febrero de 2007 .
- ↑ "Linux - ¿Cómo afecta el aviso Rapid7 R7-0025 al controlador Unix de NVIDIA?" .
- ↑ "a/lt-binario" .
- ↑ Kroah-Hartman, Greg. "Mitos, mentiras y verdades sobre el kernel de Linux" . linux kernel monkey log.
- ↑ Gutmann, Peter (26 de diciembre de 2006). "Análisis de costos de la protección de contenido de Windows Vista" . Recuperado el 28 de enero de 2007 .
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda ) - ↑ Noticias semanales de Linux, 14 de agosto de 2006: X.org, distribuidores y módulos propietarios
- ↑ Kroah-Hartman, Greg (2006). "Mitos, mentiras y verdades sobre el kernel de Linux" . Simposio de Linux .
- ↑ "La interfaz del controlador del kernel de Linux" . Consultado el 4 de marzo de 2014 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "SamsungGalaxyBackdoor" . 4 de febrero de 2014.
- ↑ "Android se acerca al 80% de cuota de mercado en envíos mundiales de smartphones, mientras que la cuota de iOS y BlackBerry disminuye, según IDC" . 7 de agosto de 2013.
- ↑ "Marco de visualización atómica" .
- ↑ "Direct3D 9 state tracker" . 16 de julio de 2013. Archivado del original el 20 de julio de 2013. Consultado el 15 de noviembre de 2017 .
- ↑ "Índice de /doc/Documentation/fb/" . Consultado el 15 de noviembre de 2017 .
- ↑ Detalles del paquete Debian firmware-linux-nonfree en Stable Debian.org
- ↑ "Característica de Radeon" . Consultado el 15 de noviembre de 2017 .
- 1 2 "Soporte inicial para VCE en el kernel de Linux y en el controlador Mesa" . 4 de febrero de 2014.
- ↑ "drm-next-3.15 Feb 18" . 18 de febrero de 2014.
- ↑ "drm-next-3.15 Mar 04" . 4 de marzo de 2014.
- ↑ "Guías para desarrolladores de AMD" . Archivado del original el 16 de julio de 2013.
- ↑ "Documentación proporcionada por AMD" .
- ↑ "Lista de documentación 3D de AMD" . Archivado del original el 7 de octubre de 2013.
- ↑ "AMD abrirá las especificaciones gráficas" . LWN.net . 5 de septiembre de 2007. Consultado el 15 de julio de 2014 .
- ↑ "AMD: ¡Especificaciones de GPU sin acuerdos de confidencialidad!" . 10/09/2007 . Consultado el 15/07/2014 .
- ↑ Airlie, David (13 de septiembre de 2007). "AMD, dame las especificaciones en un CD" . Archivado del original el 22 de octubre de 2012. Recuperado el 15 de julio de 2014 .
- ↑ "AMD explora una nueva estrategia de controladores para Linux" . 22 de marzo de 2014. Consultado el 23 de marzo de 2014 .
- ↑ "Lanzamiento inicial del controlador AMDGPU" . 2015-04-20 . Consultado el 2016-04-26 .
- ↑ "AMD avanza con una estrategia unificada de controladores Linux y un nuevo controlador de kernel" . Phoronix .
- ↑ "Documentación del controlador AMDGPU" . Freedesktop.org .
- ↑ "AMD lanza la compatibilidad inicial con el controlador AMDGPU para las GPU GCN 1.0 / Southern Islands" . Phoronix .
- ↑ "libdrm 2.4.63" . 14/08/2015.
- ↑ "Soporte para EGL en plataformas de 32 bits" . 4 de octubre de 2013. Consultado el 15 de julio de 2014 .
- ↑ "Lista de archivos lib32-nvidia-utils 340.24-1" . 15/07/2014.
- ↑ "Página del controlador nv de X.org" . 2013-05-20.
- ↑ "Parche de Dirk Hohndel" . 18 de noviembre de 1998. Archivado del original el 1 de febrero de 2014. Consultado el 15 de julio de 2014. ...
nos oponemos a dicho código ofuscado. No lo consideramos software libre según nuestros estándares.
- ↑ "Nouveau: La comunidad y desarrollos pasados, presentes y futuros" (PDF) . 13 de septiembre de 2011. Consultado el 15 de julio de 2014 .
- 1 2 Airlie, David M. (19 de julio de 2006). "Controladores gráficos de código abierto: no matan gatitos" (PDF) . Actas del Simposio Linux, Volumen Uno . Ottawa , Ontario, Canadá. Archivado del original (PDF) el 8 de febrero de 2007. Recuperado el 28 de enero de 2007 .
- ↑ "Nvidia deja de usar "NV"" . Phoronix . 26-03-2010.
- ↑ "Respuesta de Nvidia al reciente trabajo de Nouveau" . Phoronix . 14 de diciembre de 2009.
- ↑ "Nvidia ofrece publicar documentación pública sobre ciertos aspectos de sus GPU" . 23 de septiembre de 2013. Consultado el 24 de septiembre de 2013 .
- ↑ "Nouveau: controlador de código abierto acelerado para tarjetas nVidia" . Archivado del original el 23 de julio de 2014. Consultado el 10 de agosto de 2006 .
- ↑ "El conductor del Nouveau se gradúa de la etapa de puesta en escena" . LWN.net . 23 de marzo de 2012.
- ↑ "Nombres técnicos para Nvidia" .
- ↑ "drm/nouveau: soporte inicial para GK20A (Tegra K1)" . 31/01/2014.
- ↑ "Codethink logra que la NVIDIA Jetson TK1 funcione con Linux 3.15 y Wayland" . Phoronix . 12 de junio de 2014.
- ↑ "Matriz de características del nuevo controlador" . Consultado el 16 de noviembre de 2017 .
- ↑ "Tegra-re" . GitHub . Consultado el 16 de noviembre de 2017 .
- ↑ "Archivo de Linux para Tegra" . 30 de enero de 2014. Consultado el 16 de noviembre de 2017 .
- ↑ Mayo, Jon (2012-04-20). " [ RFC 0/4 ] Agregar soporte DRM de NVIDIA Tegra" . dri-devel (Lista de correo) . Recuperado el 21-08-2012 .
- ↑ Larabel, Michael (11 de abril de 2012). "Un controlador DRM/KMS de NVIDIA Tegra 2 revela información" . Phoronix Media . Recuperado el 21 de agosto de 2012 .
- ↑ "GTC 2013: Hoja de ruta de Tegra de NVIDIA (6 de 11)" . YouTube. 19 de marzo de 2013. Archivado del original el 21 de diciembre de 2021. Consultado el 10 de julio de 2013 .
- ↑ "NVIDIA lanza módulos de kernel de GPU de código abierto" . 19 de mayo de 2022. Consultado el 7 de junio de 2022 .
- ↑ "Lanzamiento de la versión beta del controlador NVIDIA 560 para Linux: por defecto utiliza módulos de kernel de GPU abiertos" . www.phoronix.com . Consultado el 4 de abril de 2025 .
- ↑ "NVIDIA promueve su soporte para controladores de kernel de GPU de código abierto" . www.phoronix.com . Consultado el 4 de abril de 2025 .
- ↑ "Capítulo 44. Módulos abiertos del kernel de Linux" . download.nvidia.com . Consultado el 10 de mayo de 2025 .
- ↑ Una descripción general de los fabricantes de tarjetas gráficas y su compatibilidad con Ubuntu Ubuntu Gamer, 10 de enero de 2011 (Artículo de Luke Benstead); ( copia del artículo )
- ↑ "Más rendimiento se obtiene de Intel Linux SNB" . Phoronix . 22 de marzo de 2011. Consultado el 23 de marzo de 2011 .
- ↑ "El rendimiento de Intel Sandy Bridge vuelve a subir" . Phoronix . 31 de marzo de 2011. Consultado el 31 de marzo de 2011 .
- ↑ "El controlador Intel SNB para Linux puede superar en rendimiento al controlador de Windows" . Phoronix . 23 de mayo de 2011. Consultado el 23 de mayo de 2011 .
- ↑ "Una mirada histórica al rendimiento gráfico de Intel Ironlake" . Phoronix . 25 de mayo de 2011. Consultado el 25 de mayo de 2011 .
- ↑ "drm/i915: Usar eLLC/LLC por defecto cuando esté disponible" .
- ↑ "drm/i915: Usar caché de escritura directa para el plano de visualización en Iris" .
- ↑ "Intel tiene entre 20 y 30 desarrolladores de gráficos Linux a tiempo completo" . 2 de febrero de 2013.
- ↑ "OpenChrome" . Consultado el 16 de noviembre de 2017 .
- ↑ phoronix (6 de febrero de 2012). "Phoronix.com - FOSDEM 2012 - Malware ARM de código abierto" . Archivado del original el 21 de diciembre de 2021 , vía YouTube.
- ↑ Phoronix, 21 de enero de 2012: Un controlador de GPU Mali de código abierto y desarrollado mediante ingeniería inversa.
- ↑ "¡Demostración contrarreloj de Quake 3 Arena sobre el controlador Lima!" . Archivado del original el 9 de febrero de 2013.
- ↑ "Controlador Lima DRM [ LWN.net ] " . lwn.net .
- ↑ drm/lima: controlador para GPU ARM Mali4xx}
- ↑ Rosenzweig, Alyssa; Abbott, Connor; Paul, Lyude; BiOpen. "Panfrost: Un controlador FOSS de ingeniería inversa para GPU Mali Midgard y Bifrost" (PDF) .
- ↑ "kernel/git/torvalds/linux.git - Árbol de código fuente del kernel de Linux" . git.kernel.org . Consultado el 15 de enero de 2023 .
- ↑ "Panfrost" . La biblioteca de gráficos 3D de Mesa . Consultado el 18 de junio de 2026 .
- ↑ "¡Suelten a la pantera! "
- ↑ "Presentamos Tyr, un nuevo controlador DRM para Rust" .
- ↑ Fundación del Software Libre, 25 de abril de 2005: Proyectos de software libre de alta prioridad
- ↑ "Imagination Tech publica un controlador PowerVR Vulkan de código abierto para Mesa" . www.phoronix.com . Consultado el 19 de abril de 2022 .
- ↑ «laanwj/etna_viv» . GitHub .
- ↑ «etnaviv: controlador de galio para GPU Vivante» .
- ↑ Larabel, Michael (14 de abril de 2012). "Un controlador gráfico de código abierto para Snapdragon" . Phoronix . Consultado el 15 de abril de 2012 .
- ↑ Soulskill (14 de abril de 2012). "Se publica el controlador de GPU Qualcomm de código abierto" . Slashdot . Consultado el 15 de abril de 2012 .
- ↑ Clark, Rob (14 de abril de 2012). "¡Luchando contra los blobs binarios!" . Linaro . Consultado el 15 de abril de 2012 .
- ↑ Freedreno, 15 de abril de 2012. Archivado el 24 de octubre de 2012 en Wayback Machine.
- ↑ "Mesa/Gallium3D obtiene su primer controlador de GPU para SoC ARM - Phoronix" .
- ↑ "Mesa (master): r600g: agregar identificadores pci de APU Richland" . 15 de marzo de 2013.
- ↑ Clark, Rob (29 de julio de 2012). "Actualización de freedreno: ¡primeros renders del ensamblador de sombreadores!" . Recuperado el 16 de agosto de 2012 .
- ↑ Clark, Rob (5 de agosto de 2012). "Cubo texturizado (¡pantalla completa!)" . Recuperado el 16 de agosto de 2012 .
- ↑ Clark, Rob (15 de agosto de 2012). "¡Lolscat de código abierto!" . Recuperado el 16 de agosto de 2012 .
- ↑ "Controladores de GPU Open ARM – Freedreno" . FOSDEM . 2013-02-02 . Consultado el 2014-07-15 .
- ↑ "Fusionar el controlador MSM de Rob Clark" . kernel.org . 28 de agosto de 2013. Consultado el 4 de junio de 2014 .
- ↑ "xf86-video-freedreno 1.2.0" . freedesktop.org . 2014-07-14.
- ↑ "Añadir soporte para Adreno 430" . Consultado el 15 de noviembre de 2017 .
- ↑ "Índice Mesa-Mesa" . Consultado el 15 de noviembre de 2017 .
- ↑ Anholt, Eric (17 de junio de 2014). "Nuevo trabajo en Broadcom" . Archivado del original el 7 de abril de 2015.
- ↑ "Phoronix en la GPU de Raspberry Pi" .
- ↑ "Espacio de usuario ARM de código abierto - Raspberry Pi" . 24 de octubre de 2012.
- ↑ "Espacio de usuario ARM de código abierto - Raspberry Pi" . 24 de octubre de 2012. Archivado del original el 30 de octubre de 2012. Consultado el 1 de noviembre de 2012 .
- ↑ "hermanhermitage/videocoreiv" . GitHub .
- ↑ "Raspberry Pi celebra su segundo aniversario con un plan para un controlador gráfico de código abierto" . 28 de febrero de 2014.
- ↑ Upton, Eben (28 de febrero de 2014). "Un regalo de cumpleaños de Broadcom: Raspberry Pi" . Fundación Raspberry Pi . Consultado el 8 de julio de 2019 .
- ↑ "vc4: Importación inicial del controlador de esqueleto" . La biblioteca de gráficos Mesa 3D. 09/08/2014.
- ↑ Larabel, Michael (26 de julio de 2008). "VIA publica tres guías de programación" . Phoronix . Consultado el 4 de agosto de 2008 .
- ↑ Larabel, Michael (21 de noviembre de 2009). "Lista de tareas pendientes de VIA para Linux... ¿Quizás deberíamos esperar hasta 2011?" . Phoronix . Consultado el 30 de diciembre de 2009 .
- ↑ El controlador gráfico Open Linux de VIA ha sido defenestrado Phoronix , 6 de enero de 2011 (artículo de Michael Larabel )
- ↑ "Libdlo" . Consultado el 16 de noviembre de 2017 .
- ↑ "DisplayLink publica el código fuente de Linux para sus procesadores gráficos USB" (Comunicado de prensa). DisplayLink. 15 de mayo de 2009. Consultado el 15 de mayo de 2009 .
- ↑ AMD contrata a otro desarrollador de controladores de código abierto. Phoronix , 11 de diciembre de 2010 (artículo de Michael Larabel ).
- ↑ Es la semana de pruebas gráficas de Fedora Phoronix , 22 de febrero de 2011 (artículo de Michael Larabel )
- ↑ "Sede del Proyecto VGA, la tarjeta de video compatible con VGA, de bajo costo y código abierto" .090503 wacco.mveas.com
- ↑ "Fondo Linux: OGD1" . Proyecto de gráficos abiertos . 23 de septiembre de 2010. Consultado el 4 de noviembre de 2011 .
- ↑ Bourdeauducq, Sebastien (junio de 2010). "Una arquitectura SoC orientada al rendimiento para la síntesis de vídeo" (PDF) . Archivado del original (PDF) el 27 de julio de 2011. Consultado el 5 de noviembre de 2010 .
- ↑ "Nyuzi es un procesador GPGPU experimental" . GitHub . Junio de 2021.
- ↑ "Entorno de prueba SOC" . GitHub .
- ↑ "Ejecutándose en la placa FPGA Terasic DE2-115" . GitHub .
- ↑ "Página principal del proyecto IceStorm" . 21 de enero de 2022.
- ↑ "Repositorio del proyecto Trellis" . GitHub . 30 de mayo de 2021.
- ↑ "Página principal de SymbiFlow" .
Enlaces externos
- Controladores gráficos de Linux de Intel
- Mejor tarjeta gráfica para Linux (Archivado el 25/03/2017 en Wayback Machine)
- Página del portal de controladores Unix de NVIDIA
- Proyecto VGA
- Rastreador de estados de Direct3D 9 en Gallium3D
- d3d1x: agrega un nuevo rastreador de estado COM de Direct3D 10/11 para Gallium.
- Freedreno en GitHub
- Actualización de Freedreno/Galio
- Suite de pruebas Phoronix
- Actualizaciones de estado para tres controladores gráficos (Nouveau, amdgpu y Etnaviv) LWN.net 2015
- Infraestructura de renderizado directo
- Software libre y de código abierto
- Hardware gráfico
- controladores Linux