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 Tegra de SoC 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 en freedesktop.org y se distribuye como parte de Mesa 3D . El proyecto se basó inicialmente en el controlador "nv", gratuito y de código abierto sólo 2D , que el desarrollador de Red Hat Matthew Garrett y otros afirman que había sido ofuscado. [2] nouveau tiene la licencia MIT .
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 estilo Gallium3D y funciona sobre la infraestructura de renderizado directo (DRI). Está compuesto por los dos componentes del kernel , el controlador DRM y KMS , y los componentes del espacio de usuario libDRM y Mesa 3D .
nouveau tiene la intención de admitir todas las microarquitecturas de Nvidia: Tesla , Fermi , Kepler , Maxwell , en la versión 1.0.13 compatible con Pascal y en la versión 1.0.15 compatible con Volta . La versión 1.0.16 agrega soporte para Turing .
Por razones técnicas, todas las GPU de Nvidia arrancan con una frecuencia baja (llamada "reloj"). El controlador del dispositivo debe configurar una frecuencia más alta después del arranque. Debido a la falta de documentación de la GPU, nouveau careció 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 gran 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 4GB y aceleraciones de Pascal al nivel Maxwell 2.
A diferencia de AMD , Nvidia no proporciona documentación sobre sus GPU. Los desarrolladores del nouveau se han visto obligados a utilizar ingeniería inversa en sala limpia para obtener los datos necesarios que les permitan escribir el 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 (Ingeniería inversa para nouveau) [12] es un programa con licencia GNU GPL (usando 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 que luego el usuario de la computadora realiza un tar . bz2 lo archiva 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 gran medida por Valgrind-MMT. [ cita necesaria ]
Sólo el kernel tiene acceso directo al hardware, esto incluye 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 está escrito como un controlador de dispositivo del 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 integra en Mesa 3D y luego se distribuye como tal en las distintas distribuciones de Linux .
Mesa 3D y los controladores que incluye admiten múltiples interfaces de renderizado , todas diseñadas para brindar a los programas del 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 gratuita y de código abierto de Direct3D versión 9. Se puede utilizar con nouveau; [ cita necesaria ] 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 son 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 tipo Gallium3D, nouveau solo necesita adaptaciones menores para funcionar con esta implementación.
A partir de diciembre de 2023 [actualizar], Nouveau tiene cierta compatibilidad con la API de Vulkan a través del controlador NVK experimental. [13]
Mesa 3D admite múltiples 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 IC diseñado para realizar cálculos de renderizado para este propósito, aunque este método consume mucha más energía eléctrica en comparación con el uso del bloque SIP PureVideo .
nouveau admite 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 sólo 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. [dieciséis]
Alrededor del año 2006, Nvidia introdujo FALCON (FAst Logic CONtroller) 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 de 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 controlador experimental. [18] [20] El 26 de marzo de 2012, el controlador nouveau se marcó como estable y se promovió desde el área de preparación de Linux 3.4. [21] [22] nouveau obtuvo una importante revisión de la arquitectura interna en Linux 3.7. [22]
Nouveau utilizó originalmente la infraestructura de renderizado directo (DRI) de Mesa 3D para renderizar gráficos por computadora en 3D , lo que permite acelerar el dibujo en 3D utilizando la unidad de procesamiento de gráficos (GPU) directamente desde la aplicación 3D; pero en febrero de 2008 cesó el trabajo sobre el soporte de DRI y se pasó al nuevo Gallium3D . [23] [24]
El 23 de septiembre de 2013, [25] Nvidia anunció públicamente que publicaría 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 comprometió un extenso conjunto de parches que agrega soporte inicial para GK20A ( Tegra K1 ) a nouveau. [26]
El 9 de julio de 2016, Ben Skeggs, empleado de Red Hat, lanzó un parche que agrega soporte para el chip GP104 basado en Pascal que se encuentra en las tarjetas gráficas 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 conjuntos de chips Kepler, Maxwell, Pascal y Volta. [30] [31]
El controlador nouveau y su contraparte 3D en Mesa se han utilizado como controlador de código abierto predeterminado para tarjetas Nvidia en muchas distribuciones de Linux , incluido Fedora 11, [32] [33] openSUSE 11.3, [34] Ubuntu 10.04, [35] [ 36] y Debian . [37]
Compiz recomendó en 2010 nouveau sobre el controlador propietario de Nvidia. [38]
En junio de 2014, Codethink informó que ejecutaba el compositor Weston basado en Wayland con el kernel de Linux 3.15, utilizando EGL y una "pila de controladores de gráficos 100% de código abierto" en un Tegra K1 . [39]
En octubre de 2016, NetBSD agregó soporte experimental nouveau en NetBSD 7. [40]
{{cite web}}
: Falta o está vacío |url=
( ayuda )Nuestra recomendación: utilice nouveau.