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: Kernel BLOB y componentes del espacio de usuario.

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

Arquitectura de software

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

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 .

Volver a marcar

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.

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

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 ]

Interfaces compatibles

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 .

API de renderizado

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 .

directo3D

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.

OpenGL

Los datos y las instrucciones se envían a la GPU para su procesamiento. Los resultados renderizados no se envían a la memoria principal. En lugar de eso, se almacenan en un framebuffer . El contenido del framebuffer se envía posteriormente al controlador de pantalla .

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.

vulcano

A partir de diciembre de 2023 , Nouveau tiene cierta compatibilidad con la API de Vulkan a través del controlador NVK experimental. [13]

Aceleración de vídeo

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 .

API informáticas

OpenCL

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]

CUDA

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]

Procesador del sistema GPU

Nvidia HALCÓN

Alrededor del año 2006, Nvidia introdujo FALCON (FAst Logic CONtroller) 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 estilo Gallium3D . Ambos tipos comparten una gran cantidad de código gratuito y de fuente abierta .

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]

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

Ver también

Referencias

  1. ^ von Eitzen, Chris (18 de junio de 2012). "El controlador de gráficos NVIDIA gratuito llega a la versión 1.0". El H-Abierto . Heinz Heise . Consultado el 13 de junio de 2013 .
  2. ^ "Rastreador de errores de Debian". 17 de agosto de 2006 . Consultado el 7 de abril de 2013 .
  3. ^ "Wiki nueva". 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. ^ "Nouveau frente a Linux propietario de NVIDIA frente a NVIDIA Windows 8.1". Forónix . 2013-10-31.
  6. ^ "Los detalles de la nueva sincronización se analizan más a fondo". Forónix . 2014-05-17.
  7. ^ "La nueva sincronización es mucho más rápida". Forónix . 2014-06-20.
  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 (rastreo de E/S asignadas en memoria)". Wiki nuevo.
  11. ^ "Valgrind-mmt". Wiki nuevo.
  12. ^ "REnouveau (Ingeniería inversa para nouveau)". Wiki nuevo.
  13. ^ "Collabora - NVK ha aterrizado".
  14. ^ "Aceleración de vídeo nueva". freedesktop.org .
  15. ^ "Computación de galio". 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, Martín; Stach, Lucas. "Resumen de Nouveau, trabajo en curso y futuro" (PDF) . Consultado el 1 de septiembre de 2014 .
  19. ^ ab "El estado de Nouveau, parte I". LWN.net . Consultado el 1 de septiembre de 2014 .
  20. ^ "¡Nouveau pasará al kernel Linux 2.6.33!". Forónix . 11 de diciembre de 2009.
  21. ^ Jonathan Corbet (23 de marzo de 2012). "El conductor Nouveau se gradúa de la puesta en escena". LWN.net .
  22. ^ ab Peres, Martín. "Diapositivas de 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-Desarrollo". 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 pública 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)". 2014-01-31.
  27. ^ "drm/nouveau: soporte inicial para GP104 (Pascal)". GitHub . 2016-07-09.
  28. ^ "Informe de estado" (PDF) . x.org. Septiembre de 2016 . Consultado el 6 de mayo de 2017 .
  29. ^ "Soporte informático para Nouveau, creación de un backend LLVM para TGSI y un backend SPIR-V a NV50 IR" (PDF) . 2016 . Consultado el 6 de mayo de 2017 .
  30. ^ https://github.com/nvidia/open-gpu-doc Repositorio NVIDIA open-gpu-doc
  31. ^ https://nvidia.github.io/open-gpu-doc/ Página web de NVidia open-gpu-doc
  32. ^ Michael Larabel (29 de marzo de 2009). "Probando el controlador Nouveau en Fedora 11". Forónix .
  33. ^ "Paquete mesa". Apps.fedoraproject.org. Archivado desde el original el 27 de febrero de 2020 . Consultado el 6 de mayo de 2017 .
  34. ^ "Productos destacados de la versión openSUSE 11.3". openSUSE . Consultado el 29 de diciembre de 2010 .
  35. ^ "Error n.º 454821: Errores: paquete" xserver-xorg-video-nv ": Ubuntu". {{cite web}}: Falta o está vacío |url=( ayuda )
  36. ^ "Resultados de la búsqueda para" libgl1-mesa-dri"". Paquetes de Ubuntu . Consultado el 6 de mayo de 2017 .
  37. ^ Debian (11 de febrero de 2011). "Los controladores Nouveau nVidia ahora están disponibles en Debian experimental".
  38. ^ Sam Spilsbury, jefe de mantenimiento de Compiz (21 de mayo de 2010). "Cuidado con los puntos de referencia". Nuestra recomendación: utilice nouveau.
  39. ^ "Codethink hace que NVIDIA Jetson TK1 funcione con Linux 3.15, Wayland". Forónix . 2014-06-12.
  40. ^ "nuevo/NetBSD". freedesktop.org. 17 de octubre de 2016 . Consultado el 30 de enero de 2016 .

enlaces externos