De Linux grafikk stack ( Linux grafikk stabel ) refererer til en GNU / Linux , alle komponenter programvare som er involvert i posteringsprosessen.
2D-drivere inkludert i X-serveren
Indirekte gjengivelse på toppen av GLX , ved hjelp av Utah GLX
Direkte gjengivelsesinfrastruktur og framebuffer
Til slutt gjøres all tilgang gjennom Direct Rendering Manager .
I kjerne 3.12 ble gjengivelsesnodene slått sammen og KMS ble eksplodert. Wayland implementerer direkte gjengivelse på toppen av EGL .
Tradisjonelt, i UNIX- typen driftssystemer , er det grafiske displayet leveres av en X-server . Den samme typen programvarearkitektur ble derfor funnet i GNU / Linux-systemer . XFree86 var den mest brukte gratis X-serveren for GNU / Linux-distribusjoner. Men i 2004, på grunn av et lisensieringsproblem, ble en gaffel opprettet: X.Org . Fra 2013 er sistnevnte den vanligste blant GNU / Linux-distribusjoner.
X-serveren var et veldig kraftig verktøy, men det var ikke et veldig kraftig verktøy. Forskjellige metoder har blitt utforsket for å overvinne denne mangelen:
I tillegg har en rekke oppgaver som ble håndtert av X.Org blitt tildelt til kjernen ( evdev , GEM og KMS ) eller til dedikerte biblioteker ( Kairo , pixman , FreeType , Fontconfig , Pango , etc.).
Med fremkomsten av komponister (som tillater effekter av gjennomsiktighet, skygge osv.), Utgjør operasjonen av X.Org for grafisk styring et ekstra trinn mellom applikasjonen og komponisten, så vel som mellom komponisten og utstyret.
Wayland ble foreslått å lykkes med X11: en Wayland-server spiller både rollen som komponist (vindusbehandling) og skjermserver. Wayland stoler på dette på en del av den eksisterende infrastrukturen: DRI- piloter i Mesa 3D , GEM og KMS. Wayland 1.0 ble utgitt den22. oktober 2012og fortsetter siden utviklingen. GNOME 3.22 skal fungere fullt ut med Wayland, og Fedora 25 skal ha Wayland som standard.
I tillegg gjør XWayland det mulig å ha en X-server som kjører på toppen av Wayland for å kunne kjøre applikasjonene som opprinnelig ble designet for X.Org og som ikke er tilpasset.
Canonical utvikler en konkurrerende grafikkserver for Ubuntu : Mir .
Under GNU / Linux, et grafikkort driver er delt inn i tre atskilte deler:
DDX-driveren (for Device Dependent X ) er en maskinvarespesifikk driver (kalt xf86-video-ati for AMD-kort, xf86-video-nouveau for Nvidia-kort og xf86-video-intel for Intel-grafikkbrikker) brukt av X-serveren å administrere 2D, dvs. hovedsakelig for komposisjonseffekter og videoakselerasjon (via 2D-akselerasjonsprosessene til X-serveren som GLAMOUR eller EXA - og dets derivater UXA, SNA - eller X video-utvidelse (en) ).
Mesa er gratis implementering av OpenGL for GNU / Linux (OpenGL er en 3D-akselerasjonsprosess). Nøyaktig er Mesa delt inn i to deler: selve Mesa 3D- biblioteket , og DRI- driverne som er ansvarlige for å oversette funksjonene som administreres av Mesa 3D-biblioteket til instruksjoner som er forståelige av grafikkortet. Resultatet sendes til grafikkortet via DRM (for Direct Rendering Manager ), den tilsvarende kjernedriveren som nå administrerer tilgang til maskinvaren alene (DDX hadde også tilgang til maskinvaren før KMS tillot å overføre styringen av driftsmåtene) vises til kjernen; i dag går DDX gjennom DRM for å få tilgang til kjernen). 3D-akselerasjon krever derfor støtte fra både Mesa og kjernen.
Siden etableringen av KMS går alt derfor gjennom DRM:
Med X.Org:
X11-applikasjon | OpenGL-applikasjon | Framebuffer-appen | |||||||||||||||||||||||||||||||||||||
Komponist | X. Org | ||||||||||||||||||||||||||||||||||||||
2D-pilot | OpenGL DRI-driver | ||||||||||||||||||||||||||||||||||||||
DRM | |||||||||||||||||||||||||||||||||||||||
Grafikkbrikke | |||||||||||||||||||||||||||||||||||||||
Med en Wayland-komponist:
Wayland app | OpenGL-applikasjon | ||||||||||||||||||||||||||||||||||||||
Komponist Wayland | |||||||||||||||||||||||||||||||||||||||
OpenGL DRI-driver | |||||||||||||||||||||||||||||||||||||||
DRM | |||||||||||||||||||||||||||||||||||||||
Grafikkbrikke | |||||||||||||||||||||||||||||||||||||||
Gallium3D presenteres først og fremst som etterfølgeren til Mesa 3D: den består i å foreslå et større nivå av hardware-abstraksjon for å forene grensesnittet, i fortsettelsen av modulariseringen av X.org, for å redusere og forenkle også oppgavene til utviklere til det essensielle og bedre skille de forskjellige lagene.
Hvis de gratis driverne for Nvidia-kort ( Nytt prosjekt ) og AMD ( radeon- prosjekt ) nå er basert på Gallium3D, ønsker ikke Intel (som selv utvikler gratis drivere for sjetongene) å forplikte seg til denne endringen og fortsetter å tilby klassiske Mesa-piloter i som han mener han har investert mye.
På den annen side kan ikke dette kronologiske argumentet brukes i tilfellet OpenCL som Intel har bestemt seg for å lansere sin egen gratis implementering (under navnet Donut ) lenge etter installasjonen av en OpenCL- backend for Gallium3D. Denne backend for Gallium3D vil bli brukt av gratis drivere for NVIDIA ( nv50 , nvc0 ...) og AMD ( Evergreen , Northern Islands ...) kort .
LLVMpipe-driveren, basert på JIT LLVM- kompilatoren og på Gallium3D og DRM / DRI-infrastrukturen, har gjort det mulig å multiplisere kjøringshastigheten til Open GL uten maskinvareakselerasjon. Denne implementeringen har inspirert API Mantle (in) ATI som igjen har blitt brukt til Vulkan .
Personlige datamaskiner har generelt en grafikkbrikke fra en av de tre følgende designerne: AMD , NVIDIA og Intel .
AMD Radeon og FireProRadeon og FirePro utgjør AMDs kjerne- og grafikkorttilbud .
Gallium3D-drivere: fra radeon- prosjektet er det forskjellige drivere ( R300g , R600g , RadeonSI ) som tilsvarer forskjellige generasjoner av AMD-grafikkbrikker. Merk at med RadeonSI håndteres 2D nå av glamour , en generell 2D-akselerasjonsprosess basert på OpenGL (se nedenfor). Vær også oppmerksom på at det fra familien til GCN chips ( Graphics Core-Neste ) for 3 th generasjon "GCN 1.2" (familien av chips etter at Sea Islands ), piloten Gallium3D RadeonSI er basert på felles kjerne driveren til frie drivere og eier AMDGPU .
NVIDIA GeForce og QuadroGeForce og Quadro utgjør NVIDIAs grafikkorttilbud .
Gallium3D-drivere: fra Nouveau- prosjektet er det forskjellige drivere ( nv30 , nv50 , nvc0 ...) som tilsvarer forskjellige generasjoner av NVIDIA-grafikkbrikker.
Intel GMA og HD-grafikkHD Graphics (og tidligere GMA ) er Intels tilbud av grafikkjerner til egne mikroprosessorer.
Offisielle Classic Mesa-drivereDenne 3D-driveren, utviklet på initiativ av Intel, er standarddriver for GNU / Linux-grafikkstakken for disse sjetongene. Det er to versjoner:
Vær forsiktig så du ikke forvirrer: 2D-driveren, som er felles for alle kretser, kalles ofte i915 .
Alternative Gallium3D-driverei915g er en Gallium3D-driver utviklet uavhengig av Intel, på initiativ fra VMware , deretter Google , for tredje generasjons sjetonger.
Spesielt tilfelle av GMA 500/600For å støtte sine Atom- prosessorer bruker Intel GMA 500-grafikkretsen (kodenavn: Poulsbo) eller dens etterfølger: GMA 600 ( Cedarview ). Disse kretsene var ikke fullt utviklet internt og er basert på Imagination Technologies ' PowerVR SGX 535 for 3D- og videogjengivelse. De krever derfor spesifikke drivere.
Siden versjon 3.3 inkluderer Linux-kjernen en gratis gma500_gfx- driver for disse sjetongene (dukket først opp i -staging-grenen av kjerneversjon 2.6.39); dette er imidlertid begrenset til 2D-visning (ingen video eller 3D-akselerasjon).
Modellene som Intel lanserte fra slutten av 2013 ( Valley View og følgende) markerer oppgivelsen av PowerVR til fordel for den interne løsningen, og lukker dermed parentesen.
Den SoC vanligvis entret en av hjerter grafene nedenfor for 3D. De er koblet til forskjellige andre kjerner for visning og 2D, eller til og med video, avhengig av SoC.
Generelt tilbyr SoC-produsenter en lukket (brukerrom) driver for Android for disse grafikkjernene; denne driveren kan ikke brukes som den er ved en GNU / Linux-distribusjon, bortsett fra å bruke gratis programvarebibliotek Libhybris opprinnelig designet for Mer- prosjektet .
Grafikkjerner for å akselerere 3DSoCs legger vanligvis inn en grafikkjerne fra en av følgende seks designere: ARM , Qualcomm , NVIDIA , Vivante , Broadcom og Imagination Technologies .
ARM MaliMali- grafikkjerner er designet av ARM .
ARM gir ikke en gratis driver. En gratis pilot, som hadde planen om å støtte Mesa 3D, ble til tidlig i 2013 utviklet av revers engineering på initiativ av Luc Verhaegen alias libv, sammen med Connor Abbott alias cwabbott: Lima . Prosjektet så ut til å gå bra, med piloten som for eksempel kunne kjøre Quake 3 Arena. De23. april 2015, Forklarte Luc på bloggen tilbakeslag forårsaket av dette prosjektet, spesielt fordi det ville ha misfornøyd ARM, og den resulterende demotivasjonen som førte ham til å legge prosjektet til side. Imidlertid kom en innkalling til bidrag på prosjektnettstedet den20. desember 2015og noen kodebidrag dukket opp på en parallell gren, kalt ng . Utviklingen har vært veldig aktiv igjen siden 2018. En annen gratis driver, Panfrost, er også opprettet for å administrere de nye generasjonene av Mali-prosessorer (Txxx og Gxx). Disse to driverne støtter OpenGL (desktopversjon) i motsetning til den offisielle driveren, og er begge integrert i Gallium3D-delen av Mesa-driverne.
Qualcomm AdrenoAdreno er designet av Qualcomm som den utstyrer ARM Snapdragon SoCs med . Teknologien som brukes kommer fra AMDs Radeon-brikker (hvorav Adreno er et anagram).
Qualcomm tilbyr ikke en gratis pilot, men en gratis 2D / 3D Gallium3D-pilot er aktivt omvendt konstruert, spesielt av Rob Clark på fritiden: freedreno .
Merk at siden A3xx og følgende modeller ikke har en 2D-kjerne, brukes en XA-backend for Gallium3D til å administrere 2D.
DRM-driveren, kalt msm , som støtter KMS og jobber med både X.org (via xf86-video-freedreno ) og Wayland / Weston, har integrert versjon 3.12 av Linux-kjernen mens freedreno , Gallium3D-driveren, har integrert versjon 9.2 av Mesa . Det er derfor den første gratis 2D / 3D-piloten som er tilgjengelig for en ARM SoC. Denne driveren gjør det mulig for a3xx- og a4xx-brikkene å støtte OpenGL ES 3.0 (siden Mesa 3D 11.0) og OpenGL 3.1 (siden Mesa 3D 11.1).
Siden oktober 2014, Qualcomm hjelper i utviklingen av denne gratis fellesskapsdriveren ved å tilby oppdateringer og dokumentasjon.
NVIDIA GeForce ULPGeForce ULP (for Ultra Low Power ) er designet av NVIDIA som den utstyrer ARM Tegra SoCs med .
Ved hjelp av NVIDIA ble en gratis 2D-driver for Tegra 2/3 introdusert i Linux-kjerneversjon 3.8 og supplert i Linux-kjerneversjon 3.10. Fra og med Linux-kjerneversjon 3.13 består DRM-driveren av to deler: host1x og tegra og støtte for Tegra 4 er lagt til.
En gratis 3D-pilot utvikles av revers engineering på initiativ av Erik Faye-Lund alias kusma (og tidligere av Thierry Reding): rist .
Living Corporation LivingDen Vivante grafikk kjernen er laget av Vivante Corporation og utstyrer forskjellige SoCs ( i.MX6 serie fra Freescale, Armada rekkevidde fra Marvell, RK2918 fra Rock).
I 2015/2016 ble en gratis 2D / 3D etnaviv-pilot aktivt utviklet av Lucas Stach på vegne av det tyske selskapet Pengutronix, Christian Gmeiner og Russell King. Som et resultat av dette arbeidet integrerte DRM-driveren, basert på koden for freedreno (den gratis driveren for Qualcomm Adreno-grafikkprosessorer inkludert i Snapdragon SoCs), versjon 4.5 av Linux-kjernen. Samtidig fortsetter utviklingen av Gallium3D-driveren, som ble startet av revers engineering av Wladimir J. van der Laan alias wumpus.
Broadcom VideoCoreDen VideoCore er designet av Broadcom .
Til tross for brikkens innviklede arkitektur, var et uavhengig gratis pilotinitiativ startet av Herman H Hermitage: videocoreiv .
Etter den falske starten på slutten av 2012 løftet Broadcom endelig hemmeligheten på deler av sjetongene sine tidlig i 2014.
Til slutt, i juni 2014, Broadcom rekrutterte Eric Anholt , tidligere hoved utvikler av gratis Mesa drivere for Intel-grafikkprosessorer , for å opprette en gratis 3D-driver for VideoCore 4 (som utstyrer Raspberry Pi og Pi 2 spesielt ): vc4 . Et utkast kom inn i Mesa 3D den9. august 2014, ved hjelp av Gallium3D- arkitekturen , som gjenstår å fullføres på30. april 2016.
Samtidig er en foreløpig versjon av kjernedriveren integrert i versjon 4.4 av Linux, som er fullført i versjon 4.5 for å kunne støtte 3D i forbindelse med Gallium3D-driveren.
2D / 3D-driveren kan testes fra Raspbian- bildet som ble utgitt den9. februar 2016.
Imagination Technologies PowerVRDen PowerVR (5-serie modeller og senere) er designet av Imagination Technologies ).
Imagination Technologies gir ikke en gratis driver. Gitt den innviklede arkitekturen til brikken, er det lite sannsynlig at en gratis pilot vil se dagens lys, til tross for Free Software Foundation .
Intel HD-grafikkIntel lanserte Valley View i slutten av 2013 , en første SoC som samlet en Atom- prosessor ( x86-arkitektur ) og en HD-grafikkjerne (syvende generasjon) som grunnleggeren direkte gir en gratis driver for.
Intel kunngjorde midt-april 2016 at den trakk seg ut av smarttelefon- og nettbrett-segmentet.
Grafikkjerner for å øke hastigheten på videoen Allwinner CedarXAllwinner ga ikke en gratis driver for CedarX, og en gratis driver begynte å bli omvendt konstruert (Cedrus-prosjekt); AllWinner laget deretter en gratis, men ufullstendig pilot.
Broadcom RockchipRockchip-videodekodingsprosessorer har gratis drivere til stede i standard Linux-videostakken. Rockchip har blitt lisensiert fritt til biblioteker siden 2016.
Nåværende 2D-akselerasjonsprosesser (EXA / XAA / UXA) har vist sine grenser, og det er derfor utviklere jobber hardt med å utvikle nye. Flere parallelle tiltak er i gang.
Cairo-gl er en OpenGL-backend for Kairo .
glamour er en generell 2D-akselerasjonsprosess basert på OpenGL. Den består av et generisk bibliotek som kan grensesnitt med DDX-driveren, og som har som mål å konvertere operasjonene til X-serveren til OpenGL-instruksjoner som vil bli behandlet av Mesa. En DDX-driver som er modifisert for å dra nytte av glamour, EGL og KMS, gjør det mulig å starte en X-server gjennom Mesa / EGL uten et eget vindussystem . Eric Anholt og Zhigang Gong, begge utviklere for Intel, er de viktigste innledende utviklerne. glamour brukes av RadeonSI- driveren til de nyeste AMD Radeon-kortene (les ovenfor) så vel som til XWayland.
Disse to prosjektene har fordelen av å til slutt forenkle grafikkstakken (bare en driver som gjenstår å vedlikeholde: 3D-driveren), men ulempen med å ønske å plassere en fot i en sko med en hammer: OpenGL er ikke designet for å øke hastigheten på 2D-funksjoner , og å uttrykke 2D-primitiver på nytt i 3D-kommandoer på 3D API-nivå er ikke optimalt.
Dette er for å tillate at en 2D-applikasjon direkte adresserer materialet, som en 3D-applikasjon. Men i stedet for å ta en skjevhet ved å gå gjennom OpenGL, prøver vi å direkte avsløre primitivene som er egnet for 2D-akselerasjon.
Prosjekter som cairo-drm eller pixman-drm har dette målet.
Gallium3D har også backender som gjør det mulig å akselerere EXA via 3D-funksjonene til grafikkbrikken: st / xorg, st / xa. Men ingen av dem opprettholdes aktivt.
Denne tilnærmingen resulterer imidlertid i mer komplekse piloter.