stringtranslate.com

nuevo (software)

En el medio: la pila FOSS, compuesta por el controlador DRM y KMS , libDRM y Mesa 3D . Lado derecho: controladores propietarios: componentes BLOB y de espacio de usuario del kernel.

nouveau ( / n ˈ v / ) 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" gratuito 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]

Arquitectura de software

nouveau ha sido reescrito como un controlador de dispositivo gráfico estilo Gallium3D .

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 .

Re-sincronización

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.

Herramientas

Una captura de pantalla de REnouveau en acción (REnouveau es la ventana azul en la esquina superior izquierda)

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]

Renovación

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 los 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 ]

Interfaces compatibles

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 .

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

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 todo software que utiliza Direct3D está programado para Windows, este software solo se puede utilizar junto con Wine en Linux.

OpenGL

Los datos y las instrucciones se envían a la GPU para su procesamiento. Los resultados generados no se envían de vuelta a la memoria principal, sino que se almacenan en un búfer de cuadros . El contenido del búfer de cuadros se envía posteriormente al controlador de pantalla .

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.

Vulcano

A partir de diciembre de 2023 , Nouveau tendrá soporte para API Vulkan a través del controlador NVK experimental. [13]

Aceleración de video

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 .

API de computación

OpenCL

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]

CUDA

nouveau no es compatible con CUDA .

Con el proyecto Coriander es posible la conversión de código CUDA en OpenCL 1.2. [16]

Procesador del sistema GPU

Nvidia Falcon

Alrededor del año 2006, Nvidia introdujo FALCON (FAst Logic CONTROLER) en sus GPU.

NV-RISCV

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]

Historia

Izquierda: controlador de dispositivo gráfico de estilo clásico; Derecha: controlador de dispositivo gráfico de estilo Gallium3D . Ambos tipos comparten una gran cantidad de código libre y de código abierto .

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 utilizando 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 que continúe trabajando en el controlador de código abierto [32] .

Adopción

Ilustración de la pila de gráficos de Linux : DRM , controlador KMS y libDRM, Mesa 3D . Los servidores de visualización son un componente del sistema de ventanas y no son necesarios para jugar videojuegos.

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]

Véase también

Referencias

  1. ^ von Eitzen, Chris (18 de junio de 2012). «El controlador de gráficos NVIDIA gratuito alcanza la versión 1.0». The H-Open . Heinz Heise . Consultado el 13 de junio de 2013 .
  2. ^ "Debian bug tracker". 17 de agosto de 2006. Consultado el 7 de abril de 2013 .
  3. ^ "Nueva Wiki". 7 de julio de 2009. Consultado el 23 de septiembre de 2009 .
  4. ^ "El estado de Nouveau, parte I". LWN.net . 15 de febrero de 2008 . Consultado el 24 de noviembre de 2009 .
  5. ^ "Competencia entre Nouveau y NVIDIA, Linux propietario y NVIDIA Windows 8.1". Phoronix . 2013-10-31.
  6. ^ "Se analizan más a fondo los detalles del nuevo cronometraje". Phoronix . 17 de mayo de 2014.
  7. ^ "El nuevo sistema de resincronización es mucho más rápido". Phoronix . 20 de junio de 2014.
  8. ^ "Documentación de Nouveau PowerManagement". freedesktop.org .
  9. ^ "nouveau/xf86-video-nouveau - Controlador Nouveau Xorg para chips NVIDIA". cgit.freedesktop.org . Consultado el 6 de mayo de 2017 .
  10. ^ "MmioTrace (seguimiento de E/S asignado a memoria)". Nueva Wiki.
  11. ^ "Valgrind-mmt". Nueva Wiki.
  12. ^ "REnouveau (Ingeniería inversa para nouveau)". Wiki nuevo.
  13. ^ "Collabora - NVK ha aterrizado".
  14. ^ "Nueva aceleración de vídeo". freedesktop.org .
  15. ^ "GalliumCompute". Dri.freedesktop.org . Consultado el 6 de mayo de 2017 .
  16. ^ "Cilantro". GitHub . 15 de noviembre de 2021.
  17. ^ "Historia de Nvidia RISC-V" (PDF) . Julio de 2016.
  18. ^ ab Peres, Martin; Stach, Lucas. "Nouveau Recap, on-going and future work" (PDF) . Consultado el 1 de septiembre de 2014 .
  19. ^ ab "El estado del Nouveau, parte I". LWN.net . Consultado el 1 de septiembre de 2014 .
  20. ^ "¡Nouveau se incorporará al kernel Linux 2.6.33!". Phoronix . 11 de diciembre de 2009.
  21. ^ Jonathan Corbet (23 de marzo de 2012). "El conductor de Nouveau se gradúa de la etapa de puesta en escena". LWN.net .
  22. ^ ab Peres, Martin. "Diapositivas del Nouveau XDC 2013" (PDF) . X.Org . Consultado el 1 de septiembre de 2014 .
  23. ^ "El estado de Nouveau, parte 2". LWN.net . 26 de febrero de 2008 . Consultado el 7 de marzo de 2008 .
  24. ^ "Nouveau Companion 36 - El compañero irregular del Nouveau-Development". 7 de marzo de 2008. Archivado desde el original el 8 de febrero de 2012. Consultado el 7 de marzo de 2008 .
  25. ^ "Nvidia ofrece publicar documentación sobre ciertos aspectos de sus GPU". 23 de septiembre de 2013. Consultado el 24 de septiembre de 2013 .
  26. ^ "drm/nouveau: soporte inicial para GK20A (Tegra K1)". 31 de enero de 2014.
  27. ^ "drm/nouveau: soporte inicial para GP104 (Pascal)". GitHub . 2016-07-09.
  28. ^ "Informe de situación" (PDF) . x.org. Septiembre de 2016 . Consultado el 6 de mayo de 2017 .
  29. ^ "Compatibilidad informática con Nouveau, creación de un backend LLVM para TGSI y un backend SPIR-V para NV50 IR" (PDF) . 2016. Consultado el 6 de mayo de 2017 .
  30. ^ https://github.com/nvidia/open-gpu-doc Repositorio de documentación abierta sobre GPU de NVIDIA
  31. ^ https://nvidia.github.io/open-gpu-doc/ Página web de NVidia open-gpu-doc
  32. ^ "Ex desarrollador principal de Nouveau se une a NVIDIA y continúa trabajando en un controlador de código abierto". www.phoronix.com . Consultado el 16 de septiembre de 2024 .
  33. ^ Michael Larabel (29 de marzo de 2009). "Prueba del controlador Nouveau en Fedora 11". Phoronix .
  34. ^ "Paquete mesa". Apps.fedoraproject.org. Archivado desde el original el 27 de febrero de 2020. Consultado el 6 de mayo de 2017 .
  35. ^ "Características destacadas del producto para la versión 11.3 de openSUSE". openSUSE . Consultado el 29 de diciembre de 2010 .
  36. ^ "Error n.º 454821: Errores: paquete "xserver-xorg-video-nv": Ubuntu". {{cite web}}: Falta o está vacío |url=( ayuda )
  37. ^ "Resultados de la búsqueda para "libgl1-mesa-dri"". Paquetes de Ubuntu . Consultado el 6 de mayo de 2017 .
  38. ^ Debian (11 de febrero de 2011). "Los nuevos controladores nVidia ahora están disponibles en Debian experimental".
  39. ^ Sam Spilsbury, responsable de mantenimiento de Compiz (21 de mayo de 2010). "Cuidado con los benchmarks". Nuestra recomendación: utilice nouveau.
  40. ^ "Codethink hace funcionar el NVIDIA Jetson TK1 con Linux 3.15, Wayland". Phoronix . 12 de junio de 2014.
  41. ^ "nouveau/NetBSD". freedesktop.org. 17 de octubre de 2016. Consultado el 30 de enero de 2016 .

Enlaces externos