nouveau ( / n uː ˈ v oʊ / ) es un controlador de dispositivo gráfico gratuito y de código abierto para tarjetas de video Nvidia y la familia de SoC Tegra escrito por ingenieros de software independientes, con una pequeña ayuda de los empleados de Nvidia.
El objetivo del proyecto es crear un controlador de código abierto mediante ingeniería inversa de los controladores Linux propietarios de Nvidia . Está administrado por la Fundación X.Org , alojado por freedesktop.org y se distribuye como parte de Mesa 3D . El proyecto se basó inicialmente en el controlador "nv" libre y de código abierto solo para 2D , que el desarrollador de Red Hat Matthew Garrett y otros afirman que había sido ofuscado. [2] nouveau tiene licencia MIT License .
El nombre del proyecto proviene de la palabra francesa nouveau , que significa nuevo . [3] Fue sugerido por el autor original, Stéphane Marchesin, después de que el sistema de autocorrección en francés de su cliente IRC ofreciera la palabra "nouveau" como corrección para las letras "nv". [4]
nouveau es un controlador de dispositivo de estilo Gallium3D y funciona sobre la Infraestructura de renderizado directo (DRI). Está compuesto por los dos componentes del núcleo DRM y KMS driver y los componentes de espacio de usuario libDRM y Mesa 3D .
nouveau pretende soportar todas las microarquitecturas de Nvidia: Tesla , Fermi , Kepler , Maxwell ; en la versión 1.0.13, soporte para Pascal y en la versión 1.0.15, soporte para Volta . La versión 1.0.16 añade soporte para Turing .
Por razones técnicas, todas las GPU de Nvidia arrancan con una frecuencia baja (denominada "clock"). El controlador del dispositivo tiene que establecer una frecuencia más alta después del arranque. Debido a la falta de documentación de la GPU, Nouveau carecía de esta capacidad desde el principio. El resultado fue/es una pérdida importante de rendimiento, como lo demuestran los puntos de referencia que compararon el rendimiento del controlador de dispositivo propietario de Nvidia con el de Nouveau. [5] En junio de 2014, finalmente se logró un avance y se agregó soporte de re-clocking inicial a Nouveau. [6] [7] [8] Con la versión 1.0.14, el soporte de Pascal está al nivel de Maxwell 2. [9] Con la versión 1.0.15 hay un parche para GTX 970 con 4 GB y aceleraciones de Pascal a nivel Maxwell 2.
A diferencia de AMD , Nvidia no proporciona documentación sobre sus GPU. Los desarrolladores de nouveau se han visto obligados a utilizar ingeniería inversa en sala limpia para obtener los datos necesarios que les permitan escribir nouveau. El proyecto utiliza varios programas personalizados para su ingeniería inversa, como MmioTrace (Memory Mapped I/O Trace), [10] REnouveau y Valgrind MMT. [11]
REnouveau (Reverse Engineering for nouveau) [12] es un programa con licencia GNU GPL (utilizando SDL ) que recopila datos para la mayor parte del trabajo de ingeniería inversa de nouveau. Los usuarios con controladores propietarios de NVIDIA pueden ayudar al desarrollo de nouveau proporcionando información sobre el hardware de sus tarjetas NVIDIA a través de REnouveau. REnouveau funciona copiando el espacio de registro MMIO de la tarjeta gráfica actual , dibujando algunos gráficos y tomando otra copia del MMIO, y enviando la diferencia a un archivo de texto. Ejecuta alrededor de seis docenas de pruebas diferentes de las cuales el usuario de la computadora luego crea un archivo tar . bz2 y lo envía por correo electrónico , después de lo cual se transfiere automáticamente a los servidores FTP del proyecto para que los desarrolladores lo analicen. Actualmente, REnouveau ha sido reemplazado en su mayor parte por Valgrind-MMT. [ cita requerida ]
Sólo el núcleo tiene acceso directo al hardware, incluida la tarjeta gráfica. El software del usuario final accede a él a través de varias interfaces , que son específicas para la tarea. nouveau se escribe como un controlador de dispositivo de tipo Gallium3D , lo que significa que comparte grandes cantidades de código con otros controladores Gallium3D. La mayor parte de este núcleo compartido se incluye en Mesa 3D y luego se distribuye como tal por las distintas distribuciones de Linux .
Mesa 3D y los controladores que incluye, admiten múltiples interfaces de renderizado , todas diseñadas para dar a los programas de espacio de usuario, como por ejemplo videojuegos o software CAD , acceso a los bloques SIP correspondientes .
Se ha incorporado a Mesa 3D una implementación libre y de código abierto de la versión 9 de Direct3D . Se puede utilizar con Nouveau; [ cita requerida ] Sin embargo, dado que cualquier software que utilice Direct3D está programado para Windows, este software solo se puede utilizar junto con Wine en Linux.
La interfaz de renderizado OpenGL está siendo desarrollada por Khronos Group . Las implementaciones de esta API forman parte de los controladores de Nvidia y del "Catalyst" propietario de AMD . Otra implementación está siendo escrita por entusiastas del software libre, como Brian Paul o Intel, y coordinada en Mesa 3D. Al ser un controlador de tipo Gallium3D, nouveau solo necesita pequeñas adaptaciones para funcionar con esta implementación.
A partir de diciembre de 2023 [actualizar], Nouveau tendrá soporte para API Vulkan a través del controlador NVK experimental. [13]
Mesa 3D admite varias interfaces, todas diseñadas para brindar a los programas del espacio de usuario, como por ejemplo GStreamer o HandBrake , acceso a los bloques SIP correspondientes. También es posible utilizar el CI diseñado para los cálculos de renderización para este propósito, aunque este enfoque consume mucha más energía eléctrica en comparación con el uso del bloque SIP de PureVideo .
Nouveau es compatible con PureVideo y proporciona acceso a él a través de VDPAU y parcialmente a través de XvMC . [14]
nouveau no es compatible con Nvidia NVENC .
En Mesa, GalliumCompute también es el proyecto principal de Nvidia, pero solo la parte de AMD está cerca de la versión beta para OpenCL 1.0, 1.1 y 1.2. [15]
nouveau no es compatible con CUDA .
Con el proyecto Coriander es posible la conversión de código CUDA en OpenCL 1.2. [16]
Alrededor del año 2006, Nvidia introdujo FALCON (FAst Logic CONTROLER) en sus GPU.
En el cuarto taller RISC-V en julio de 2016, los empleados de Nvidia presentaron sus planes para reemplazar FALCON con un nuevo diseño personalizado patentado basado en el conjunto de instrucciones RISC-V. [17]
Nouveau fue iniciado en 2005 por Stéphane Marchesin como una serie de parches para el controlador "nv", [18] y anunciado oficialmente en febrero de 2006 en un evento FOSDEM. [19] La primera demostración en vivo de Nouveau fue en Linux.conf.au 2007. [19] En 2010 Nouveau fue aceptado en la versión 2.6.33 del kernel de Linux como un controlador experimental. [18] [20] El 26 de marzo de 2012, el controlador Nouveau fue marcado como estable y promovido desde el área de prueba de Linux 3.4. [21] [22] Nouveau recibió una importante revisión de la arquitectura interna en Linux 3.7. [22]
Nouveau originalmente utilizó la Infraestructura de Renderizado Directo (DRI) de Mesa 3D para renderizar gráficos de computadora 3D , lo que permite acelerar el dibujo 3D usando la unidad de procesamiento de gráficos (GPU) directamente desde la aplicación 3D; pero en febrero de 2008 el trabajo en el soporte de DRI cesó y se pasó al nuevo Gallium3D . [23] [24]
El 23 de septiembre de 2013, [25] Nvidia anunció públicamente que publicaría cierta documentación sobre sus GPU con la intención de abordar áreas que afectan la usabilidad inmediata de las GPU NVIDIA con nouveau.
A partir del 31 de enero de 2014, Alexandre Courbot de Nvidia implementó un amplio conjunto de parches que agregan soporte inicial para GK20A ( Tegra K1 ) a Nouveau. [26]
A partir del 9 de julio de 2016, el empleado de Red Hat, Ben Skeggs, envió un parche que agrega soporte para el chip GP104 basado en Pascal que se encuentra en las tarjetas gráficas de marca GeForce GTX 1070 y GeForce GTX 1080 al kernel de Linux. [27]
El estado de 2016 y el trabajo futuro se presentaron en XDC2016. [28] El estado de los nuevos esfuerzos en OpenCL se muestra en FOSDEM. [29]
En 2019, Nvidia puso a disposición cierta documentación sobre sus chipsets Kepler, Maxwell, Pascal y Volta. [30] [31] En 2024, Nvidia contrata al ingeniero principal Ben Skeggs para seguir trabajando en el controlador de código abierto. [32]
El controlador nouveau y su contraparte 3D en Mesa se han utilizado como el controlador de código abierto predeterminado para tarjetas Nvidia en muchas distribuciones de Linux , incluidas Fedora 11, [33] [34] openSUSE 11.3, [35] Ubuntu 10.04, [36] [37] y Debian . [38]
Compiz recomendó en 2010 Nouveau en lugar del controlador propietario de Nvidia . [39]
En junio de 2014, Codethink informó que ejecutaba el compositor Weston basado en Wayland con el kernel Linux 3.15, haciendo uso de EGL y una "pila de controladores de gráficos 100% de código abierto" en un Tegra K1 . [40]
En octubre de 2016, NetBSD agregó soporte experimental nuevo en NetBSD 7. [41]
{{cite web}}
: Falta o está vacío |url=
( ayuda )Nuestra recomendación: utilizar nouveau.