nouveau ( / n ü v oʊ / ) es un controlador de dispositivo gráfico libre y de código abierto para Nvidia tarjetas de vídeo y el Tegra familia de SoCs escritos por ingenieros de software independientes, con la ayuda de los empleados de menor importancia Nvidia.
Versión inicial | 1.0 / 18 de junio de 2012 [1] |
---|---|
Lanzamiento estable | , |
Repositorio | cgit.freedesktop.org/nouveau/xf86-video-nouveau |
Escrito en | C |
Sistema operativo | Linux , NetBSD |
Plataforma | x86 , x86-64 , ARM , PowerPC |
Tipo | Controlador de dispositivo |
Licencia | Licencia MIT |
Sitio web | nouveau |
El objetivo del proyecto es crear un controlador de código abierto mediante la ingeniería inversa de los controladores de Linux patentados 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" de código abierto y gratuito únicamente en 2D , que el desarrollador de Red Hat Matthew Garrett y otros afirman que se había ofuscado. [4] nouveau tiene la licencia MIT .
El nombre del proyecto proviene de la palabra francesa nouveau , que significa nuevo . [5] Fue sugerido por la función de autoreplace francés del cliente de IRC del autor original, que sugería la palabra "nouveau" cuando escribía "nv". [6]
Arquitectura de software
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 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 de Pascal y en la versión 1.0.15 de Volta . La última versión 1.0.16 es compatible con el nuevo Turing .
Volver a marcar
Por razones técnicas, todas las GPU de Nvidia arrancan con una frecuencia baja (llamada "reloj"). El controlador del dispositivo debe 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 en el rendimiento, como lo demuestran los puntos de referencia que compararon el rendimiento del controlador de dispositivo propietario de Nvidia con el de nouveau. [7] En junio de 2014, finalmente se logró un gran avance y se agregó a nouveau la compatibilidad con el cambio de reloj inicial. [8] [9] [10] Con la versión 1.0.14, el soporte de Pascal está al nivel de Maxwell 2. [11] Con la versión 1.0.15 hay un parche para GTX 970 con 4GB y aceleraciones de Pascal a Maxwell 2 Level.
Herramientas
A diferencia de AMD , Nvidia no proporciona documentación sobre sus GPU. Los desarrolladores de nouveau se han visto obligados a utilizar la ingeniería inversa de sala limpia para obtener los datos necesarios que les permitan escribir nouveau. El proyecto utiliza varios programas hechos a medida para su ingeniería inversa, como MmioTrace (Rastreo de E / S mapeado en memoria), [12] REnouveau y Valgrind MMT. [13]
REnouveau
REnouveau (Ingeniería inversa para nouveau) [14] es un programa con licencia GNU GPL (que utiliza SDL ) que recopila datos para la mayor parte del trabajo de ingeniería inversa de nouveau. Los usuarios con los controladores patentados 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 actual tarjeta gráfica MMIO espacio de registro, dibujo algunos gráficos y tomando otra copia de la MMIO, y dar salida a la diferencia a un archivo de texto. Ejecuta alrededor de seis docenas de pruebas diferentes que el usuario de la computadora luego hace un alquitrán . bz2 archiva y 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.
Interfaces compatibles
Solo 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 de la tarea. nouveau se está escribiendo 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 está integrando en Mesa 3D y luego se distribuye como tal por las diversas distribuciones de Linux .
API de renderizado
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 .
Direct3D
Una implementación gratuita y de código abierto de Direct3D versión 9 se ha integrado en Mesa 3D. Se puede utilizar con nouveau; [ cita requerida ] sin embargo, dado que cualquier software que use Direct3D está programado para Windows, este software solo se puede usar junto con Wine en Linux.
OpenGL
La interfaz de renderizado OpenGL está siendo desarrollada por Khronos Group . Las implementaciones de esta API son parte del "Catalyst" patentado por Nvidia o 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 adaptaciones menores para trabajar con esta implementación.
Aceleración de video
Mesa 3D admite múltiples interfaces, todas diseñadas para brindar a los programas de espacio de usuario, como por ejemplo GStreamer o HandBrake , acceso a los bloques SIP correspondientes. También es posible usar el IC diseñado para renderizar cálculos con este propósito, aunque este enfoque consume mucha más energía eléctrica en comparación con la utilización del bloque PureVideo SIP.
nouveau admite PureVideo y proporciona acceso a él a través de VDPAU y, en parte, a través de XvMC . [15]
nouveau no es compatible con Nvidia NVENC .
API de computación
OpenCL
En Mesa, GalliumCompute también es el proyecto principal para Nvidia, pero solo la parte de AMD está cerca de la beta para OpenCL 1.0, 1.1 y 1.2. [dieciséis]
CUDA
nouveau no es compatible con CUDA .
Con el proyecto Coriander, es posible la conversión del código CUDA en OpenCL 1.2. [17] Por lo tanto, el soporte CUDA es posible con el soporte completo de OpenCL 1.2 en GalliumCompute.
Nvidia FALCON
Alrededor del año 2006, Nvidia introdujo FALCON (FAst Logic CONtroller) en sus GPU. En el cuarto taller de 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. [18]
Historia
nouveau fue iniciado en 2005 por Stéphane Marchesin como una serie de parches sobre el controlador "nv", [19] y anunciado oficialmente en febrero de 2006 en un evento de FOSDEM. [20] La primera demostración en vivo de nouveau fue en Linux.conf.au 2007. [20] En 2010, nouveau fue aceptado en la versión 2.6.33 del kernel de Linux como un controlador experimental. [19] [21] El 26 de marzo de 2012, el controlador nouveau se marcó como estable y se promovió desde el área de prueba de Linux 3.4. [22] [23] nouveau obtuvo una importante revisión de la arquitectura interna en Linux 3.7. [23]
nouveau usó 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 la compatibilidad con DRI y pasó al nuevo Gallium3D . [24] [25]
El 23 de septiembre de 2013 [26] Nvidia anunció públicamente que publicaría cierta documentación sobre sus GPU con la intención de abordar áreas que impactan en la usabilidad inmediata de las GPU de 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 el GK20A ( Tegra K1 ) a nouveau. [27]
A partir del 9 de julio de 2016, el empleado de Red Hat, Ben Skeggs, comprometió 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. [28]
El estado de 2016 y el trabajo futuro se introdujeron en XDC2016. [29] El estado de los nuevos esfuerzos en OpenCL se muestra en FOSDEM. [30]
Adopción
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 , incluyendo Fedora 11, [31] [32] openSUSE 11.3, [33] Ubuntu 10.04, [34] [ 35] y Debian . [36]
Compiz recomienda nouveau sobre el controlador propietario de Nvidia. [37]
En junio de 2014, Codethink informó que ejecutaba el compositor Weston basado en Wayland con el kernel 3.15 de Linux , haciendo uso de EGL y una "pila de controladores de gráficos 100% de código abierto" en un Tegra K1 . [38]
En octubre de 2016, NetBSD agregó soporte nouveau experimental en NetBSD 7. [39]
Ver también
- Controlador de dispositivo gráfico gratuito y de código abierto
- Comparación de las unidades de procesamiento de gráficos de Nvidia
- Fastra II
- Extensiones BIOS VESA
Referencias
- ^ von Eitzen, Chris (18 de junio de 2012). "El controlador de gráficos NVIDIA gratuito alcanza la versión 1.0" . El H - Abierto . Heinz Heise . Consultado el 13 de junio de 2013 .
- ^ Airlie, Dave (8 de diciembre de 2015). "xf86-video-nouveau 1.0.12" . nouveau (lista de correo).
- ^ "nouveau / xf86-video-nouveau - controlador Nouveau Xorg para chips NVIDIA" . cgit.freedesktop.org . Consultado el 6 de mayo de 2017 .
- ^ "Rastreador de errores de Debian" . 17 de agosto de 2006 . Consultado el 7 de abril de 2013 .
- ^ "Wiki nouveau" . 7 de julio de 2009 . Consultado el 23 de septiembre de 2009 .
- ^ "El estado de Nouveau, parte I" . LWN.net . 15 de febrero de 2008 . Consultado el 24 de noviembre de 2009 .
- ^ "Nouveau vs. Linux propietario de NVIDIA vs. NVIDIA Windows 8.1" . Phoronix . 2013-10-31.
- ^ "Detalles de cambio de reloj de Nouveau discutidos más" . Phoronix . 2014-05-17.
- ^ "El cambio de reloj de Nouveau es mucho más rápido" . Phoronix . 2014-06-20.
- ^ "Documentación de Nouveau PowerManagement" . freedesktop.org .
- ^ "nouveau / xf86-video-nouveau - controlador Nouveau Xorg para chips NVIDIA" . cgit.freedesktop.org . Consultado el 6 de mayo de 2017 .
- ^ "MmioTrace (seguimiento de E / S asignado en memoria)" . Wiki nouveau.
- ^ "Valgrind-mmt" . Wiki nouveau.
- ^ "REnouveau (Ingeniería inversa para nouveau)" . Wiki nouveau.
- ^ "Nouveau Video Acceleration" . freedesktop.org .
- ^ "GalliumCompute" . Dri.freedesktop.org . Consultado el 6 de mayo de 2017 .
- ^ https://github.com/hughperkins/coriander
- ^ "Historia de Nvidia RISC-V" (PDF) . Julio de 2016.
- ^ a b Peres, Martin; Stach, Lucas. "Nouveau Recap, trabajo en curso y futuro" (PDF) . Consultado el 1 de septiembre de 2014 .
- ^ a b "El estado de Nouveau, parte I" . LWN.net . Consultado el 1 de septiembre de 2014 .
- ^ "¡Nouveau pasará al kernel de Linux 2.6.33!" . Phoronix . 11 de diciembre de 2009.
- ^ Jonathan Corbet (23 de marzo de 2012). "El conductor Nouveau se gradúa de la puesta en escena" . LWN.net .
- ^ a b Peres, Martín. "Diapositivas de Nouveau XDC 2013" (PDF) . X.Org . Consultado el 1 de septiembre de 2014 .
- ^ "El estado de Nouveau, parte 2" . LWN.net . 26 de febrero de 2008 . Consultado el 7 de marzo de 2008 .
- ^ "Nouveau Companion 36 - El compañero irregular de Nouveau-Development" . 7 de marzo de 2008. Archivado desde el original el 1 de marzo de 2012 . Consultado el 7 de marzo de 2008 .
- ^ "Nvidia ofrece publicar documentación pública sobre ciertos aspectos de sus GPU" . 2013-09-23 . Consultado el 24 de septiembre de 2013 .
- ^ "drm / nouveau: soporte inicial para GK20A (Tegra K1)" . 2014-01-31.
- ^ "drm / nouveau: soporte inicial para GP104 (Pascal)" . 2016-07-09.
- ^ "Informe de estado" (PDF) . x.org. Septiembre de 2016 . Consultado el 6 de mayo de 2017 .
- ^ "Soporte informático para Nouveau, creación de un LLVM a TGSI y un SPIR-V a NV50 IR backend" (PDF) . 2016 . Consultado el 6 de mayo de 2017 .
- ^ Michael Larabel (29 de marzo de 2009). "Probando el controlador Nouveau en Fedora 11" . Phoronix .
- ^ "Paquete mesa" . Apps.fedoraproject.org . Consultado el 6 de mayo de 2017 .
- ^ "Productos destacados para la versión openSUSE 11.3" . openSUSE . Consultado el 29 de diciembre de 2010 .
- ^ "Error # 454821: Errores: paquete" xserver-xorg-video-nv ": Ubuntu". Falta o vacío
|url=
( ayuda ) - ^ "Resultados de la búsqueda para" libgl1-mesa-dri " " . Paquetes de Ubuntu . Consultado el 6 de mayo de 2017 .
- ^ Debian (11 de febrero de 2011). "Los controladores Nouveau nVidia ahora están disponibles en Debian experimental" .
- ^ Sam Spilsbury, responsable de mantenimiento de Compiz (21 de mayo de 2010). "Cuidado con los benchmarks" .
Nuestra recomendación: use nouveau.
- ^ "Codethink obtiene el NVIDIA Jetson TK1 funcionando con Linux 3.15, Wayland" . Phoronix . 2014-06-12.
- ^ "nouveau / NetBSD" . freedesktop.org. 17 de octubre de 2016 . Consultado el 30 de enero de 2016 .
enlaces externos
- Página web oficial