nouveau (programvare) - nouveau (software)


nouveau
Første utgivelse 1.0 / 18. juni 2012 ; 9 år siden ( 2012-06-18 )
Stabil utgivelse
1.0.16 / 28. januar 2019 ; For 2 år siden , ( 2019-01-28 )
Oppbevaringssted cgit.freedesktop.org/nouveau/xf86-video-nouveau
Skrevet inn C
Operativsystem Linux , NetBSD
Plattform x86 , x86-64 , ARM , PowerPC
Type Enhetsdriver
Tillatelse MIT -lisens
Nettsted nouveau .freedesktop .org
I midten: FOSS -stakken, sammensatt av DRM & KMS -driver , libDRM og Mesa 3D . Høyre side: Proprietære drivere: Kernel BLOB og User-space-komponenter.

nouveau ( / n u v / ) er en fri og åpen kildekode grafikk enhetsdriver for Nvidia skjermkort og Tegra familie av farlige stoffene som er skrevet av uavhengige programvareingeniører, med mindre hjelp fra Nvidia ansatte.

Prosjektets mål er å lage en åpen kildekode -driver ved reverse engineering av Nvidias proprietære Linux -drivere. Det administreres av X.Org Foundation , hostet av freedesktop.org , og distribueres som en del av Mesa 3D . Prosjektet var opprinnelig basert på 2D -bare gratis og åpen kildekode "nv" -driveren, som Red Hat -utvikleren Matthew Garrett og andre hevder hadde blitt tilslørt. nouveau er lisensiert under MIT -lisensen .

Navnet på prosjektet kommer fra det franske ordet nouveau , som betyr nytt . Det ble foreslått av den opprinnelige forfatteren, Stéphane Marchesin, etter at IRC- klientens franskspråklige autokorrigeringssystem tilbød ordet " nouveau " som en korreksjon for bokstavene "nv".

Programvarearkitektur

nouveau har blitt omskrevet som en Gallium3D -stil grafikkdriver.

nouveau er en enhetsdriver i Gallium3D -stil og fungerer på toppen av Direct Rendering Infrastructure (DRI). Det er sammensatt av de to Kernel -komponenter DRM & KMS driver , og bruker-plass komponenter libDRM, og Mesa 3D .

nouveau har til hensikt å støtte alle Nvidia mikroarkitekturer: Tesla , Fermi , Kepler , Maxwell , i versjon 1.0.13 støtte av Pascal og i versjon 1.0.15 støtte for Volta . Siste versjon 1.0.16 støtter nye Turing .

Klokke på nytt

Av tekniske årsaker starter alle Nvidia -GPUer med lav frekvens (kalt "klokke"). Enhetsdriveren må angi en høyere frekvens etter oppstart. På grunn av mangel på dokumentasjon av GPU, manglet nouveau denne evnen fra begynnelsen av. Resultatet var/er et stort tap i ytelse, som bevist ved referanser som sammenlignet ytelsen til Nvidia proprietære enhetsdrivere med nouveaus. I juni 2014 ble det endelig oppnådd et gjennombrudd, og første støtte for omklokking ble lagt til nouveau. Med versjon 1.0.14 er Pascal -støtten på nivå med Maxwell 2. Med versjon 1.0.15 er det en oppdatering for GTX 970 med 4 GB og akselerasjoner fra Pascal til Maxwell 2 -nivå.

Verktøy

Et skjermbilde av REnouveau i aksjon (REnouveau er det blå vinduet øverst til venstre)

I motsetning til AMD gir Nvidia ingen dokumentasjon om GPU -ene. Utviklerne av nouveau har blitt tvunget til å bruke reverse -room reverse engineering for å skaffe de nødvendige dataene slik at de kan skrive nouveau. Prosjektet bruker flere skreddersydde programmer for reverse engineering, for eksempel MmioTrace (Memory Mapped I/O Trace), REnouveau og Valgrind MMT.

REnouveau

REnouveau (Reverse Engineering for nouveau) er et program lisensiert under GNU GPL (ved bruk av SDL ) som samler inn data for det meste av nouveaus reverse engineering -arbeid. Brukere med de proprietære NVIDIA -driverne kan hjelpe utviklingen av nouveau ved å gi informasjon om maskinvaren til NVIDIA -kortene sine gjennom REnouveau. REnouveau jobber med å kopiere det nåværende grafikkortets MMIO -registerplass , tegne litt grafikk og ta en ny kopi av MMIO, og sende forskjellen til en tekstfil. Den kjører omtrent seks dusin forskjellige tester som brukeren av datamaskinen deretter lager en tjære . bz2 arkiv av og sender via e-post , hvoretter det automatisk overføres til prosjektets FTP-servere for utviklerne å analysere.

Grensesnitt som støttes

Bare kjernen har direkte tilgang til maskinvaren, dette inkluderer grafikkortet. Sluttbrukerprogramvare får tilgang til den gjennom forskjellige grensesnitt som er spesifikke for oppgaven. nouveau blir skrevet som en Gallium3D -type enhetsdriver, noe som betyr at den deler store mengder kode med andre Gallium3D -drivere. Det meste av denne delte kjernen blir hovedlinje i Mesa 3D og deretter distribuert som sådan av de forskjellige Linux -distribusjonene .

Gjengivelse av APIer

Mesa 3D og driverne den inneholder, støtter flere gjengivelsesgrensesnitt , alle designet for å gi brukerplassprogrammer, for eksempel videospill eller CAD- programvare, tilgang til korrespondentens SIP-blokker .

Direct3D

En gratis og åpen kildekode-implementering av Direct3D versjon 9 har blitt hovedlinje i Mesa 3D. Den kan brukes med nouveau; Siden all programvare som bruker Direct3D er programmert for Windows, kan denne programvaren imidlertid bare brukes sammen med Wine på Linux.

OpenGL

Data og instruksjoner sendes til GPU for behandling. De gjengitte resultatene sendes ikke tilbake til hovedminnet. I stedet lagres de i en rammebuffer . Innholdet i rammebufferen sendes deretter til skjermkontrolleren .

Gjengivelsesgrensesnittet OpenGL utvikles av Khronos Group . Implementering av dette API er en del av Nvidias eller AMDs proprietære "Catalyst" . En annen implementering blir skrevet av gratis programvareentusiaster, for eksempel Brian Paul eller Intel og koordinert i Mesa 3D. Som en driver av typen Gallium3D trenger nouveau bare mindre tilpasninger for å jobbe med denne implementeringen.

Vulkan

nouveau støtter ikke Vulkan API

Video akselerasjon

Mesa 3D støtter flere grensesnitt, alle designet for å gi brukerplassprogrammer , for eksempel GStreamer eller HandBrake , tilgang til korrespondentens SIP-blokker. Det er også mulig å bruke IC designet for gjengivelse av beregninger til dette formålet, selv om denne tilnærmingen bruker mye mer elektrisk strøm sammenlignet med å bruke PureVideo SIP -blokken.

nouveau støtter PureVideo og gir tilgang til den via VDPAU og delvis gjennom XvMC .

nouveau støtter ikke Nvidia NVENC .

Datamaskin -APIer

OpenCL

I Mesa er GalliumCompute også hovedprosjektet for Nvidia, men bare AMD -delen er nær beta for OpenCL 1.0, 1.1 og 1.2.

CUDA

nouveau støtter ikke CUDA .

Med prosjektet Koriander er konvertering av CUDA -kode i OpenCL 1.2 mulig. CUDA -støtte er derfor mulig med full OpenCL 1.2 -støtte i GalliumCompute.

Nvidia FALCON

Rundt året 2006 introduserte Nvidia FALCON (FAst Logic CONtroller) for GPU -ene. På det fjerde RISC-V- verkstedet i juli 2016 introduserte Nvidia-ansatte sine planer om å erstatte FALCON med et nytt tilpasset tilpasset design basert på RISC-V instruksjonssett.

Historie

Venstre: grafisk enhetsdriver i klassisk stil; Høyre: Gallium3D -stil grafikkdriver. Begge typene deler mye gratis og åpen kildekode .

nouveau ble startet i 2005 av Stéphane Marchesin som en serie oppdateringer på "nv" -sjåføren, og ble offisielt kunngjort i februar 2006 på et FOSDEM -arrangement. Den første live -demoen av nouveau var på Linux.conf.au 2007. I 2010 ble nouveau akseptert i 2.6.33 -versjonen av Linux -kjernen som en eksperimentell driver. 26. mars 2012 ble nouveau -driveren merket som stabil og fremmet fra iscenesettelsesområdet til Linux 3.4. nouveau fikk en større intern arkitekturoverhaling i Linux 3.7.

nouveau brukte opprinnelig Direct Rendering Infrastructure (DRI) fra Mesa 3D til gjengivelse av 3D -datagrafikk , som gjør det mulig å akselerere 3D -tegning ved hjelp av grafikkprosessorenheten (GPU) direkte fra 3D -applikasjonen; men i februar 2008 opphørte arbeidet med DRI -støtte og gikk videre til nye Gallium3D .

September 2013 kunngjorde Nvidia offentlig at de ville gi ut dokumentasjon om GPU-ene sine med den hensikt å ta opp områder som påvirker brukervennligheten til NVIDIA-GPUer med nouveau.

31. januar 2014 begikk Nvidias Alexandre Courbot et omfattende patch -sett som legger til første støtte for GK20A ( Tegra K1 ) til nouveau.

9. juli 2016 begikk Red Hat -ansatt Ben Skeggs en oppdatering som legger til støtte for Pascal -baserte GP104 -brikken som finnes på GeForce GTX 1070 og GeForce GTX 1080 -grafikkort til Linux -kjernen.

Status for 2016 og Fremtidig arbeid ble introdusert i XDC2016. Status for ny innsats i OpenCL vises på FOSDEM.

I 2019 gjorde NVidia tilgjengelig dokumentasjon om Kepler, Maxwell, Pascal og Volta brikkesett.

Adopsjon

Illustrasjon av Linux -grafikkstakken: DRM , KMS -driver og libDRM, Mesa 3D . Skjermservere er en komponent i vindussystemet og er ikke nødvendig for å spille videospill.

Nouveau-driveren og dens 3D-motstykke i Mesa har blitt brukt som standard åpen kildekode-driver for Nvidia-kort i mange Linux- distribusjoner, inkludert Fedora 11, openSUSE 11.3, Ubuntu 10.04 og Debian .

Compiz anbefaler nouveau over Nvidia proprietære driver.

I juni 2014 Codethink rapportert å kjøre Wayland -baserte Weston komposisjons med Linux-kjernen 3,15, noe som gjør bruk av EGL og en "100% åpen kildekode grafikkdriveren stack" på en Tegra K1 .

I oktober 2016 la NetBSD til eksperimentell nouveau -støtte i NetBSD 7.

Se også

Referanser

Eksterne linker