Mesa (computergrafik) - Mesa (computer graphics)

Mesa
Originale forfattere Brian Paul
Udvikler (er) I øjeblikket: Intel , AMD , VMware
Tidligere: Wolframgrafik
Første udgivelse Februar 1995
Stabil udgivelse
21.2.3  Rediger dette på Wikidata / 29. september 2021 ; 18 dage siden ( 29. september 2021 )
Depot
Skrevet i C , C ++ , samlingssprog
Operativ system På tværs af platforme ( BSD'er , Haiku , Linux osv.)
Type Grafisk bibliotek
Licens MIT -licens
Internet side mesa3d .org Rediger dette på Wikidata

Mesa , også kaldet Mesa3D og The Mesa 3D Graphics Library , er en open-source softwareimplementering af OpenGL , Vulkan og andre grafiske API- specifikationer. Mesa oversætter disse specifikationer til leverandørspecifikke grafikhardware-drivere.

Dens vigtigste brugere er to grafikdrivere, der for det meste er udviklet og finansieret af Intel og AMD til deres respektive hardware (AMD promoverer deres Mesa -drivere Radeon og RadeonSI over den forældede AMD Catalyst , og Intel har kun understøttet Mesa -driveren). Proprietære grafikdrivere (f.eks. Nvidia GeForce -driver og Catalyst) erstatter alle Mesa og leverer deres egen implementering af en grafisk API. En open source-indsats for at skrive en Mesa Nvidia-driver kaldet Nouveau er for det meste udviklet af samfundet.

Udover 3D-applikationer såsom spil, moderne display-servere ( X.org s Glamour eller Wayland 's Weston ) brug OpenGL / EGL ; derfor går al grafik typisk gennem Mesa.

Mesa er hostet af freedesktop.org og blev initieret i august 1993 af Brian Paul , der stadig er aktiv i projektet. Mesa blev efterfølgende bredt vedtaget og indeholder nu mange bidrag fra forskellige enkeltpersoner og virksomheder verden over, herunder fra grafikhardwareproducenterne i Khronos Group, der administrerer OpenGL -specifikationen. For Linux har udviklingen også været delvist drevet af crowdfunding .

Oversigt

Videospil outsourcer gengivelsesberegninger til GPU'en over OpenGL i realtid. Shaders er skrevet i OpenGL Shading Language eller SPIR-V og kompileret på CPU'en. De kompilerede programmer udføres på GPU'en.
Illustration af Linux -grafikstakken : DRM & libDRM, Mesa 3D . Display server tilhører vinduesystemet og er ikke nødvendig f.eks. Til spil.

Implementeringer af gengivelse af API'er

De gratis implementeringer af Wayland er afhængige af Mesa -implementeringen af EGL . Det særlige bibliotek kaldet libwayland-EGL , skrevet for at rumme adgang til rammebufferen , skulle have været forældet af EGL 1.5-udgivelsen. På GDC 2014 udforskede AMD en strategiændring mod at bruge DRM i stedet for deres in-kernel blob.

Mesa er kendt som boligimplementering af grafiske API'er . Historisk set er den vigtigste API, som Mesa har implementeret, OpenGL sammen med andre Khronos Group -relaterede specifikationer (som OpenVG , OpenGL ES eller for nylig EGL ). Men Mesa kan implementere andre API'er, og det gjorde det faktisk med Glide (udfaset) og Direct3D 9 siden juli 2013. Mesa er heller ikke specifik for Unix-lignende operativsystemer: på Windows giver Mesa f.eks. Et OpenGL API over DirectX.

Mesa implementerer et oversættelseslag mellem en grafisk API som f.eks. OpenGL og grafikhardware -driverne i operativsystemets kerne. Den understøttede version af de forskellige grafiske API'er afhænger af driveren, fordi hver hardware driver har sin egen implementering (og derfor status). Dette gælder især for de "klassiske" drivere, mens Gallium3D -driverne deler fælles kode, der har tendens til at homogenisere de understøttede udvidelser og versioner.

Mesa opretholder en supportmatrix med status for den aktuelle OpenGL -overensstemmelse, visualiseret på mesamatrix .net . Mesa 10 overholder OpenGL 3.3 til Intel, AMD/ATI og Nvidia GPU hardware. Mesa 11 blev annonceret med nogle drivere, der var OpenGL 4.1 -kompatible.

Mesa 12 indeholder OpenGL 4.2 og 4.3 og Intel Vulkan 1.0 support.

Mesa 13 bragte Intel-support til OpenGL 4.4 og 4.5 (alle funktioner understøttet til Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler), men ingen Khronos-Test til 4.5-Label) og eksperimentel AMD Vulkan 1.0-understøttelse via community-driveren RADV. OpenGL ES 3.2 er muligt med Intel Skylake (Gen9).

1. stabile version af 2017 er 17.0 (nytår tæller). Klar funktioner er certificeret OpenGL 4.5, OpenGL 4.5 til Intel Haswell, OpenGL 4.3 til NVidia Maxwell og Pascal (GM107+). Kæmpe præstationsgevinst blev målt med Maxwell 1 (GeForce GTX 750 Ti og mere med GM1xx). Maxwell-2-Cards (GeForce GTX 980 og mere med GM2xx) er underklokket uden NVidia-oplysninger.

Khronos CTS-testpakken til OpenGL 4.4, 4.5 og OpenGL ES 3.0+ er i nu (2017-01-24) Open Source og alle tests til Mesa 13 og 17 er nu mulige uden omkostninger.

2. stabile version af 2017, 17.1.0, udkom den 10. maj 2017 med nogle interessante forbedringer. OpenGL 4.2+ til Intel Ivy Bridge og OpenGL 3.3+ til Intel Open SWR Rasterizer er 2 af højdepunkterne.

Bemærk, at på grund af den modulariserede karakter af OpenGL kan Mesa faktisk understøtte udvidelser fra nyere versioner af OpenGL uden at kræve fuld støtte til sådanne versioner. For eksempel understøttede Mesa i juli 2016 OpenGL ES 3.1, men også alle OpenGL ES 3.2 -udvidelser bortset fra fem, samt et antal udvidelser, der ikke er en del af nogen OpenGL- eller OpenGL ES -version.

Et åbent spørgsmål til Mesa og Linux er High Dynamic Range (HDR). Mange problemer og åbne punkter er på vej til en ren og grundlæggende implementering.

3. version 17.2 er tilgængelig siden september 2017 med nogle nye OpenGL 4.6 -funktioner og hastighedsforbedringer i 3D til Intel og AMD. Kun 1,4% af testene mislykkes for OpenGL 4.5 i Nouveau for Kepler.

4. version 17.3 er klar siden december 2017. Mange forbedringer i mange drivere er tilgængelige. OpenGL 4.6 er næsten fuldt tilgængelig (Spir-V er ikke klar). AMD Vulkan Driver RADV er nu fuldt ud i overensstemmelse med Khronos-Test.

1. version af 2018 er 18.0 og tilgængelig siden marts 2018 efter samme ordning i 2017. Fuld OpenGL 4.6 -support er ikke klar, men mange funktioner og forbedringer blev testet med succes i RC3. 10-bit support til Intel i965 i farver er også et højdepunkt. Nyt er understøttelse af Intel Cannon Lake og AMD Vega med egentlig Linux -version. AMD Evergreen Chips (RV800 eller R900) er i nærheden af ​​OpenGL 4.5 -understøttelse. Gamle AMD R600- eller RV700 -chips kan kun understøtte OpenGL 3.3 med nogle funktioner i OpenGL 4.x. Freedreno er driveren til Adreno -hardware og nær OpenGL 3.3 -understøttelse.

2. version af 2018 er 18.1 og tilgængelig siden maj. Målet er Vulkan 1.1.72 i Intel ANV og AMD RADV driver. OpenGL 4.6 med spir-V er også hovedmål. Permanent arbejde er mulig afslutning af funktioner og optimering af drivere til ældre hardware som AMD R600/Evergreen, Nvidia Tesla og før, Fermi, Kepler eller Intel Sandybridge, Ivybridge, Haswell eller Broadwell. ARM Architecture foretog også store forbedringer i Adreno 3xx/4xx/5xx og Broadwell VC4/VC5 til Raspi med hovedmål OpenGL ES.

3. version af 2018 er 18.2 og tilgængelig i kalenderstabil i september. OpenGL 4.6 med spir-V og Vulkan 1.1.80 er i WIP. Den bløde driver til virtuelle maskiner VIRGL er klar til OpenGL 4.3 og OpenGL ES 3.2. RadeonSI er også klar til OpenGL ES 3.2. ASTC Texture Compression Support og Compatibility Modus Support til OpenGL 4.4 (3.1 i 18.1) er andre højdepunkter i RadeonSI til AMD GCN -kort. Ny Vulkan 1.1 og flere funktioner til Intel og AMD er tilgængelige. Se flere detaljer for Vulkan i Mesamatrix.

4. version af 2018 er 18.3 og udgivet som stabil version 18.3.1 i december 2018. Mange funktioner i detaljer og understøttelse af nyere hardware er hoveddele. Fuld support af OpenGL 4.6 er ikke klar.

1. version af 2019 er 19.0 og blev nu udgivet i marts. Fuld support af OpenGL 4.6 er ikke klar, men mange forbedringer på denne måde er i alle drivere.

2. version af 2019 er 19.1. Overgang af TGSI til NIR er her en hovedfunktion på vej til OpenGL 4.6 med Spir-V og mere OpenCL. RadeonSI kører godt i dev-version med NIR.

3. version af 2019 er 19.2. OpenGL 4.6 er Beta klar til ny Intel Iris Driver.

4. version af 2019 er 19.3. OpenGL 4.6 er klar til Intel i965 og valgfri til ny Iris Driver.

Første version af 2020 er 20.0. Vulkan 1.2 er klar til AMD RADV og Intel ANV. Intel Iris er standard for Intel Broadwell Gen 8+. RadeonSI -driver skiftede til at bruge NIR som standard i stedet for TGSI.

2. version af 2020 er 20.1. Mange forbedringer er klar i mange drivere. Zink er en ny virtuel driver til OpenGL over Vulkan.

3. version af 2020 er 20.2. OpenGL 3.0 til Zink er en ny funktion. LLVMpipe understøtter OpenGL 4.3+ (4.5+ i 20.3). ARM Panfrost er for det meste forbedret med mange moduler. Delt virtuel hukommelse er mulig for OpenCL i Nouveau med Pascal og højere.

4. version af 2020 er 20.3. v3d og v3dv er nye drivere til OpenGL og Vulkan 1.0 med Broadcom -hardware som Raspberry Pi 4. OpenCL 1.2 understøttes fuldt ud i kløvermodul. Zink understøtter OpenGL 3.3+. LLVMpipe virtuel driver support nu OpenGL 4.5+ med 4.6 i udsigt. VALLIUM som Vulkan Tree af LLVMpipe flettes.

I Mesa vil 21.0 d3d12 blive fusioneret med OpenGL 3.0 til 3.3. Microsoft og Collabora udvikler ny emulering d3d12 i WSL2 til Windows 10 med Direct 3D 12. OpenCL 1.2 er også mål i d3d12. En acceleration af faktor 2 til 5 udføres i Benchmark SPECviewperf med forbedret OpenGL -kode. Mange Mesa 21.0 -funktioner forbedrer ydeevnen. Ny udgivelse 21.0.0 er offentlig siden 11. marts 2021.

Mesa 21.1 er anden udgivelse i år 2021. OpenGL 4.6+ og OpenGL ES 3.1+ er tilgængelig for Zink. AMD Driver 600g kan skifte til NIR med flere muligheder for gamle Radeeon HD 5000 og 6000 kort. Qualcomm Turnip når Vulkan 1.1+ og softwareemulering Lavapipe Vulkan 1.1+. Google VirtIO GPU -driver Venus med Vulkan 1.2+ fusioneres i eksperimentel tilstand med lav ydeevne i mesa -hovedtræet.

Mesa 21.2 er tredje udgivelse i år 2021. Google Virtual Vulkan IO Driver Venus vil blive officielt introduceret med fuld Vulkan 1.2+ support (mere mesamatrix). ARM Panfrost: OpenGL ES 3.1+ Support er tilgængelig, og panVK er den nye Vulkan Driver. Den første support startede til ARM Apple M1 med den nye driver Asahi. 21.2 er tilgængelig siden 4. august 2021.

En gammel plan er at dele gamle drivere i et klassisk træ med mange fordele inden for programmering, support, fejlrettelse til den moderne gallium 3D -del. Et problem her er Intel i965 med understøttelse af populær gammel hardware til Intel Haswell og før også med Windows 10 support. En ny Gallium3D -driver Crocus til Intel Gen 4 Graphics til Haswell er her under udvikling for at færdiggøre gallium3D -området her med mulig opdeling i den næste tid af året 2021. Crocus fås som ekstraudstyr i 21.2.


Tabel over gengivelses -API'er

Mesa version Første udgivelsesdato Sidste ændring Vulkan OpenCL OpenGL OpenGL ES OpenVG EGL GLX Direct3D
1.2.193
2021/09/21
3.0
2020-11-30
4.6
2017-07-31
3.2.6
2019-07-10
1.1
2008-12-03
1.5
2014-03-19
1.4
2005-12-16
12
2015-07-29
Seneste preview -version af en fremtidig udgivelse: 21.2 2021-08-04 21.2.2 1.2.175 (Intel Gen8+, AMD GCN Gen2+, Google Venus), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Lavapipe, Qualcomm Turnip) 1.0, 1.1, 1.2 (fuld support), 3.0 (wip, nogle funktioner i 21.1) 4.6 (19.3: Intel Gen 8+, 20.0: AMD GCN, 21.1: Zink, llvmpipe, 21.2: Intel Gen 7.5) 3.2 (20.3: 3.2: Intel i965, AMD radeonsi, llvmpipe, VirGL, freedreno; 3.1: AMD r600, Nvidia nvC0, softpipe, Broadcom v3d, Zink (21.1), ARM Panfrost (21.2) Ikke relevant 1.5 1.4 9,0c
Nuværende stabil version: 21.1 2021-05-05 21.1.8 1.2.168 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Lavapipe, Qualcomm Turnip)
Gammel version, ikke længere vedligeholdt: 21.0 2021-03-11 21.0.3 1.2.162 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv)
Gammel version, ikke længere vedligeholdt: 20.3 2020-12-03 20.3.5 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv)
Gammel version, ikke længere vedligeholdt: 20.2 2020-09-28 20.2.6 1.2.145 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1) 1.0, 1.1, 1.2 (WIP) nogle mislykkede overensstemmelsestest
Gammel version, ikke længere vedligeholdt: 20.1 2020-05-27 20.1.10 1.2.139 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1)
Gammel version, ikke længere vedligeholdt: 20,0 2020-02-19 20.0.8 1.2+ (Intel Gen8+, AMD GCN Gen2+)
Gammel version, ikke længere vedligeholdt: 19.3 2019-12-11 19.3.5 1.1+ (Intel Gen8+, AMD GCN Gen2+) (19.1: 1.1.104 19.0: 1.1.102, 18.3: 1.1.90, 18.2: 1.1.84)
Gammel version, ikke længere vedligeholdt: 19.2 2019-09-25 19.2.8 4.5
Gammel version, ikke længere vedligeholdt: 19.1 2019-06-11 19.1.8
Gammel version, ikke længere vedligeholdt: 19,0 2019-03-13 19.0.8
Gammel version, ikke længere vedligeholdt: 18.3 2018-12-07 18.3.6
Gammel version, ikke længere vedligeholdt: 18.2 2018-09-07 18.2.8
Gammel version, ikke længere vedligeholdt: 18.1 2018-05-18 18.1.9 1.1 (Intel Gen8+, AMD GCN Gen2+) (1.1.73)
Gammel version, ikke længere vedligeholdt: 18,0 2018-03-27 18.0.5 1.0+ (1.0.66)
Gammel version, ikke længere vedligeholdt: 17.3 2017-12-08 17.3.9 1.0 (PC: ANV Intel Gen7+ Ivy Bridge, kun RADV AMD GCN) (header: 17.3: 1.0.63, 17.2: 1.0.54, 17.1: 1.0.42, 17.0: 1.0.38, 13.0: 1.0.6, 12.0: 1.0.3) i dev. af Gallium
Compute (Clover):
nogle CTS-tests mislykkes
i 1.0 og 1.1,
1.2 (WIP),
så 1.0, 1.1, 1.2
ufuldstændige
Gammel version, ikke længere vedligeholdt: 17.2 2017-09-04 17.2.8
Gammel version, ikke længere vedligeholdt: 17.1 2017-05-10 17.1.10
Gammel version, ikke længere vedligeholdt: 17,0 2017-02-13 17.0.7
Gammel version, ikke længere vedligeholdt: 13,0 2016-11-01 13.0.6 4.4
(4.5 Ingen testetiket)
Gammel version, ikke længere vedligeholdt: 12,0 2016-07-08 12.0.6 4.3 3.1
Gammel version, ikke længere vedligeholdt: 11.2 2016-04-04 11.2.2 Ikke relevant 4.1 (Intel 3.3+)
Gammel version, ikke længere vedligeholdt: 11.1 2015-12-15 11.1.4 3.0
Gammel version, ikke længere vedligeholdt: 11.0 2015-09-12 11.0.9
Gammel version, ikke længere vedligeholdt: 10.6 2015-06-15 10.6.9 3.3 1.4
Gammel version, ikke længere vedligeholdt: 10.5 2015-03-06 10.5.9 1.1
Gammel version, ikke længere vedligeholdt: 10.4 2014-12-14 10.4.7
Gammel version, ikke længere vedligeholdt: 10.3 2014-09-19 10.3.7 Ikke relevant
Gammel version, ikke længere vedligeholdt: 10.2 2014-06-06 10.2.9
Gammel version, ikke længere vedligeholdt: 10.1 2014-03-04 10.1.6
Gammel version, ikke længere vedligeholdt: 10,0 2013-11-30 10.0.5
Gammel version, ikke længere vedligeholdt: 9,0 2012-10-08 9.0.3, 9.1.7, 9.2.5 Ikke relevant 3.1 2.0
Gammel version, ikke længere vedligeholdt: 8.0 2012-02-08 8.0.5 3.0
Gammel version, ikke længere vedligeholdt: 7,0 2007-06-22 7.0.4, ..., 7.11.2 2.1 Ikke relevant Ikke relevant Ikke relevant
Gammel version, ikke længere vedligeholdt: 6,0 2004-01-06 6.0.1 1.5 1.3
Gammel version, ikke længere vedligeholdt: 5.0 2002-11-13 5.0.2 1.4
Gammel version, ikke længere vedligeholdt: 4.0 2001-10-22 4.0.4 1.3
Gammel version, ikke længere vedligeholdt: 3.0 1998-09 3.1, 3.2.1, 3.4.2.1 1.2
Gammel version, ikke længere vedligeholdt: 2.0 1996-10 2.6 1.1
Gammel version, ikke længere vedligeholdt: 1.0 1995-02 1.2.8 1.0
Legende:
Gammel version
Ældre version, stadig vedligeholdt
Nyeste version
Seneste preview -version
Fremtidig udgivelse

Vulkan

Den Khronos Group officielt annonceret Vulkan API i marts 2015 og officielt frigivet Vulkan 1.0 den 16. februar 2016. Vulkan pauser kompatibilitet med OpenGL og helt opgiver sin monolitiske tilstand maskine koncept. Udviklerne af Gallium3D kaldte Vulkan for at være noget i retning af Gallium3D 2.0 - Gallium3D adskiller koden, der implementerer OpenGL -tilstandsmaskinen fra den kode, der er specifik for hardwaren.

Når Gallium3D indtager TGSI, indtager Vulkan SPIR-V ( Standard Portable Intermediate Representation version "V" som i "Vulkan").

Intel frigav deres implementering af en Vulkan -driver til deres hardware den dag, specifikationen blev officielt frigivet, men den blev først fastlagt i april og blev derfor en del af Mesa 12.0, udgivet i juli 2016. Selvom i965 -driveren allerede ikke var skrevet iht. Gallium3D -specifikationerne, for Vulkan -driveren giver det endnu mindre mening at flange den oven på Gallium3D. Tilsvarende er der ingen teknisk grund til at flange det med NIR, men alligevel implementerede Intels medarbejdere deres Vulkan -driver på den måde.

Det må forventes, at AMDs egen proprietære Vulkan-driver, der blev frigivet i marts, og blev annonceret at blive frigivet som gratis og open source-software i fremtiden og blive hovedlinje i Mesa, også opgiver Gallium3D.

RADV er et gratis projekt til AMD og er tilgængeligt siden version 13. Overensstemmelse med Khronos-Test kom i version 17.3. Faktisk er fuld understøttelse af Vulkan 1.0 og 1.1 siden Mesa 18.1.

Nvidia frigav deres proprietære GeForce -driver med Vulkan -support på lanceringsdagen, og Imagination Technologies (PowerVR), Qualcomm (Adreno) og ARM (Mali) har gjort det samme eller i det mindste annonceret proprietære Vulkan -drivere til Android og andre operativsystemer. Men hvornår og om yderligere gratis og open-source Vulkan-implementeringer til disse GPU'er vil dukke op, mangler vi at se.

Mesa Software Driver VIRGL starter Vulkan Development i 2018 med GSOC -projekter til understøttelse af virtuelle maskiner.

Lavapipe er en CPU-baseret Software Vulkan-driver og broren til LLVMpipe. Mesa Version 21.1 understøtter Vulkan 1.1+.

Google introducerer Venus Vulkan Driver til virtuelle maskiner i Mesa 21.1 med fuld support til Vulkan 1.2+.

Qualcomm Turnip og Broadcom v3dv er nye drivere til Qualcomm Adreno og Broadcom Raspberry 4 Hardware. Turnip er Vulkan -broren til freedreno til OpenGL. V3dv understøtter Vulkan 1.0+ siden Mesa 20.3. I version 21.1 Turnip understøtter Vulkan 1.1+.

Eksplicit hegn

En slags hukommelsesbarriere, der adskiller en buffer fra resten af ​​hukommelsen, kaldes et hegn. Hegn er der for at sikre, at en buffer ikke overskrives, før gengivelse og visningsoperationer er afsluttet på den. Implicit hegn bruges til synkronisering mellem grafikdrivere og GPU -hardware. Hegnet signalerer, når en buffer ikke længere bruges af en komponent, så den kan betjenes eller genbruges af en anden. Tidligere havde Linux -kernen en implicit hegnmekanisme, hvor et hegn er direkte knyttet til en buffer (jf. GEM -håndtag og FD'er), men brugerområdet er ikke klar over dette. Eksplicit hegn udsætter hegn for brugerrum, hvor brugerrum får hegn fra både delsystemet Direct Rendering Manager (DRM) og fra GPU'en. Eksplicit hegn er påkrævet af Vulkan og tilbyder fordele ved sporing og fejlfinding.

Linux -kerne 4.9 tilføjede Android's synkroniseringsramme til hovedlinjen.

Generisk bufferstyring

Generic Buffer Management (GBM) er en API, der giver en mekanisme til allokering af buffere til grafikgengivelse knyttet til Mesa. GBM er beregnet til at blive brugt som en native platform for EGL på DRM eller openwfd. Håndtaget, det skaber, kan bruges til at initialisere EGL og til at oprette render -buffere.

Mesa GBM er en abstraktion af de grafikdriverspecifikke bufferhåndterings -API'er (f.eks. De forskellige libdrm_* -biblioteker), implementeret internt ved at ringe til Mesa GPU -driverne.

For eksempel gør Wayland -komponisten Weston sin gengivelse ved hjælp af OpenGL ES 2, som den initialiserer ved at kalde EGL. Da serveren kører på den "bare KMS -driver ", bruger den EGL DRM -platformen, som virkelig kunne kaldes GBM -platformen, da den er afhængig af Mesa GBM -grænsefladen.

På XDC2014 foreslog Nvidia -medarbejderen Andy Ritger at forbedre EGL for at erstatte GBM. Dette blev ikke taget positivt af samfundet, og Nvidia ændrede til sidst mening og tog en anden tilgang.

Implementeringer af videoacceleration API'er

Der er tre mulige måder at foretage de beregninger, der er nødvendige for kodning og afkodning af videostrømme:

  1. bruge en softwareimplementering af en videokomprimerings- eller dekomprimeringsalgoritme (almindeligvis kaldet en CODEC) og eksekver denne software på C PU
  2. bruge en softwareimplementering af en videokomprimerings- eller dekomprimeringsalgoritme (almindeligvis kaldet en CODEC) og eksekver denne software på G PU ( 3D -gengivelsesmotoren )
  3. bruge en fuldstændig (eller delvis) hardwareimplementering af en videokomprimerings- eller dekomprimeringsalgoritme; det er blevet meget almindeligt at integrere sådanne ASIC'er i chippen på GPU/CPU/APU/SoC og derfor rigeligt tilgængelig; af marketingmæssige årsager har virksomheder etableret mærker til deres ASIC'er, såsom PureVideo (Nvidia), Unified Video Decoder (AMD), Video Coding Engine (AMD), Quick Sync Video (Intel), DaVinci (Texas Instruments), CedarX (Allwinner), Crystal HD (Broadcom); nogle ASIC'er er tilgængelige til licens som halvlederens intellektuelle ejendomsret ; normalt implementerer forskellige versioner forskellige videokomprimerings- og/eller videodekomprimeringsalgoritmer; understøttelse af sådanne ASIC'er hører normalt til kernedriveren for at initialisere hardwaren og lave ting på lavt niveau. Mesa, der kører i brugerrum, huser implementeringen af ​​flere API'er til software, f.eks. VLC medieafspiller , GStreamer , HandBrake osv., For bekvemt at få adgang til sådanne ASIC'er:

F.eks. Understøtter Nouveau , som er udviklet som en del af Mesa, men også indeholder en Linux -kernekomponent, som udvikles som en del af Linux -kernen, PureVideo -brandede ASIC'er og giver adgang til dem via VDPAU og delvis gennem XvMC .

Den gratis radeon -driver understøtter Unified Video Decoder og Video Coding Engine via VDPAU og OpenMAX.

Bemærk venligst, at V4L2 er en kerne-til-bruger-plads-grænseflade til videobitstrømme, der leveres af webkameraer eller tv-tunere.

Enhedsdrivere

Grafiske enhedsdrivere implementeres ved hjælp af to komponenter: en UMD (bruger-mode driver) og en KMD (kernel-mode driver). Fra og med Linux -kernel 4.2 vil AMD Catalyst og Mesa dele den samme Linux -kerneldriver : amdgpu . Amdgpu giver grænseflader defineret af DRM og KMS.

De tilgængelige gratis og open source-enhedsdrivere til grafiske chipsæt "styres" af Mesa (fordi den eksisterende gratis og open-source implementering af API'er er udviklet inde i Mesa). I øjeblikket er der to rammer til at skrive grafikdrivere: "classic" og Gallium3D. En oversigt over nogle (men ikke alle) af de tilgængelige drivere i Mesa findes på mesamatrix .net .

Der er enhedsdrivere til AMD/ATI R100 til R800, Intel og Nvidia -kort med 3D -acceleration. Tidligere eksisterede drivere til IBM/Toshiba/Sony Cell APU'en til PlayStation 3 , S3 Virge & Savage -chipsæt, VIA -chipsæt, Matrox G200 & G400 og mere.

De gratis og open-source drivere konkurrerer med proprietære lukkede drivere. Afhængigt af tilgængeligheden af ​​hardwaredokumentation og man-power, halter den gratis og open-source driver mere eller mindre bagud for at understøtte 3D-acceleration af ny hardware. Også 3D -gengivelsesydelse var normalt betydeligt langsommere med nogle bemærkelsesværdige undtagelser. I dag gælder dette stadig for Nouveau for de fleste NVIDIA -GPU'er, mens den åbne driver på AMDs Radeon -GPU'er nu for det meste matcher eller overgår den proprietære driveres ydeevne.

Direkte gengivelsesinfrastruktur (DRI)

På det tidspunkt, hvor 3D- grafikkort blev mere mainstream til pc'er, begyndte enkeltpersoner, der delvis blev understøttet af nogle virksomheder, at arbejde med at tilføje mere support til hardware-accelereret 3D-gengivelse til Mesa. Den Direct Rendering Infrastructure (DRI) var en af disse tilgange til at interface Mesa, OpenGL og andre 3D rendering API-biblioteker med enhedsdrivere og hardware. Efter at have nået et grundlæggende brugervenlighed blev DRI -support officielt tilføjet til Mesa. Dette udvidede betydeligt det tilgængelige udvalg af hardware -understøttelse, der kan opnås ved brug af Mesa -biblioteket.

Med tilpasning til DRI overtog Mesa -biblioteket endelig rollen som frontendkomponenten i en OpenGL -ramme i fuld skala med varierende backend -komponenter, der kunne tilbyde forskellige grader af 3D -hardware -understøttelse, uden at den fulde softwaregengivelse blev droppet. Det samlede system brugte mange forskellige softwarekomponenter.

Selvom designet kræver, at alle disse komponenter interagerer omhyggeligt, er grænsefladerne mellem dem relativt faste. Ikke desto mindre, da de fleste komponenter, der interagerer med Mesa -stakken er open source, udføres eksperimentelt arbejde ofte ved at ændre flere komponenter på én gang samt grænsefladerne mellem dem. Hvis sådanne eksperimenter viser sig at være vellykkede, kan de inkorporeres i den næste større eller mindre udgivelse. Det gælder f.eks. Opdateringen af ​​DRI-specifikationen, der blev udviklet i tidsrammen 2007-2008. Resultatet af dette eksperiment, DRI2, fungerer uden låse og med forbedret rygbufferunderstøttelse. Til dette blev en særlig git -gren af ​​Mesa oprettet.

DRI3 understøttes af Intel -driveren siden 2013 og er standard i nogle Linux -distributioner siden 2016 for at aktivere Vulkan -support og mere. Det er også standard på AMD -hardware siden slutningen af ​​2016 (X.Org Server 1.18.3 og nyere).

Software renderer

Mesa indeholder også en implementering af softwaregengivelse kaldet swrast, der tillader shaders at køre på CPU'en som et tilbageslag, når der ikke er grafikhardwareacceleratorer til stede. Gallium software rasterizer er kendt som softpipe eller når den er bygget med understøttelse af LLVM llvmpipe , som genererer CPU -kode ved runtime. Da Mesa 10.x OpenGL 3.3+ understøttes til Softpipe (10.3) og LLVMpipe (10.2). Faktisk er omkring 80% af funktionerne fra OpenGL 4.x implementeret i Mesa 17.3 (Se Mesamatrix).

I Mesa 12.0 er en ny Intel Rasterizer OpenSWR tilgængelig med store fordele i klynger til store datasæt. Det er mere fokuseret på teknisk visualisering end i spil eller kunstbilleder og kan kun fungere på x86 -processorer. På den anden side understøttes OpenGL 3.1+ nu. Accelerationsværdier fra 29 til 51 relateret til LLVMPIPE blev målt i nogle eksempler. OpenGL 3.3+ understøttes til OpenSWR siden Mesa 17.1.

VirGL er en Rasterizer til virtuelle maskiner implementeret i Mesa 11.1 siden 2015 med OpenGL 3.3 -understøttelse og viste i Mesamatrix siden Mesa 18. I den nye Mesa 18.2 understøtter den mere end de andre med OpenGL 4.3 og OpenGL ES 3.2. Omkring 80% af OpenGL 4.4 og 4.5 funktioner er også nu klar. Vulkan Development starter med GSOC 2018 -projekter.

D3d12 er et Microsoft -projekt til WSL2 -emulering af OpenGL 3.3+ og OpenCL 1.2+ med Direct3D 12. D3D12 fusioneres i 21.0.

Venus er en ny Vulkan VirtIO GPU -driver til GPU i virtuelle maskiner fra Google. Venus fusioneres i 21.1 og for offentligheden i 21.2 introduceres.

Mega drivere

Ideen om at samle flere chauffører til en enkelt "mega" driver blev foreslået af Emma Anholt. Det giver mulighed for, at en enkelt kopi af den delte Mesa -kode kan bruges blandt flere drivere (i stedet for at den findes i hver driver separat) og tilbyder bedre ydeevne end et separat delt bibliotek på grund af fjernelsen af ​​det interne biblioteksinterface. State trackers for VDPAU og XvMC er blevet separate biblioteker.

shader-db

shader-db er en samling på omkring 20.000 shaders samlet fra forskellige computerspil og benchmarks samt nogle scripts til at kompilere disse og indsamle nogle statistikker. Shader-db er beregnet til at hjælpe med at validere en optimering.

Det blev bemærket, at et uventet antal shaders ikke er håndskrevet, men genereret. Det betyder, at disse shaders oprindeligt blev skrevet i HLSL og derefter oversat til GLSL af et oversætterprogram, f.eks. HLSL2GLSL . Problemet er, at den genererede kode ofte langt fra er optimal. Matt Turner sagde, at det var meget lettere at rette dette i oversætterprogrammet end at skulle få Mesas kompilator til at bære byrden ved at håndtere sådanne oppustede shaders.

shader-db kan ikke betragtes som gratis og open-source software. For at bruge det lovligt skal man have en licens til alle de computerspil, som shaderne er en del af.

Software arkitektur

En grafikdriver består af en implementering af OpenGL -tilstandsmaskinen og en kompilationsstak for at kompilere shaders til GPU'ens maskinsprog. Denne kompilering, såvel som stort set alt andet, udføres på CPU'en, derefter sendes de kompilerede shaders til GPU'en og udføres af den. (SDL = Simple DirectMedia Layer ).
De mellemliggende repræsentationer (IR'er) i Mesa: GLSL IR, Mesa IR, TGSI og LLVM IR . Mangler HIR, LIR og NIR.
Mesa IR skal fjernes helt.

De såkaldte "user-mode grafiske enhedsdrivere" (UMD) i Mesa har meget få ligheder med det, der generelt kaldes en enhedsdriver . Der er et par forskelle:

  • de er beregnet til at fungere oven på yderligere eksisterende kernetilstand grafik enhedsdrivere, der f.eks. er tilgængelige som en del af Linux -kernen, der findes i kildekoden under /drivers/gpu/drm/Hver UMD kommunikerer med sin kernel mode -modstykke ved hjælp af et specifikt bibliotek, navn libdrm_specific og en generisk, kaldet libdrm . Dette afsnit skal udelukkende se på bruger-mode-delen over libdrm
  • der er en vis implementering af finite-state-maskinen som specificeret af f.eks. OpenGL; denne implementering af OpenGL -tilstandsmaskinen kan deles mellem flere UMD'er eller ej
  • de består for en stor del af en slags kompilator, der indtager f.eks. GLSL og til sidst udsender maskinkode . Parsere kan deles mellem flere UMD eller være specifikke

Mesas mellemrepræsentationer

Et mål med Mesa er optimering af kode, der skal udføres af den respektive GPU. En anden er deling af kode. I stedet for at dokumentere de stykker software, der gør dette eller hint, skal denne Wikipedia -artikel i stedet se på de mellemliggende repræsentationer, der bruges i processen med at kompilere og optimere. Se Abstrakt syntakstræ (AST) og Statisk enkelt tildelingsformular (SSA -formular).

SPIR-V

SPIR-V er en bestemt version af Standard Portable Intermediate Representation . Ideen er, at grafikapplikationer udsender SPIR-V i stedet for GLSL. I modsætning til sidstnævnte er SPIR-V binært for at undgå implementeringsforskelle mellem GLSL-kompilerens frontender af forskellige driverimplementeringer, da dette har været en vigtig kilde til applikationens uforenelighed og fejl. Også SPIR-V binære passerede normalt også nogle generelle optimeringer. Også til en vis grad tilbyder SPIR-Vs binære repræsentation en vis grad af uklarhed, som kan appellere til nogle softwareleverandører som en form for beskyttelse af intellektuel ejendomsret; SPIR-V indeholder imidlertid rigelig information til refleksion, og der findes værktøjer, der oversætter SPIR-V tilbage til høj kvalitet, menneskeligt læsbar kode på højt niveau . En UMD behøver kun at anvende optimeringer, der er specifikke for den understøttede hardware.

GLSL IR

Mesa IR

NIR

NIR (New Internal Representation) blev introduceret for at overvinde TGSI -begrænsninger. NIR blev udvidet i sidste og faktiske udgivelser som base for Spir-V support og er siden 2016 hovedudviklingsområde. LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 ændres til NIR fra TGSI. RADV, Zink og andre nye drivere starter med NIR. Alle drivere med fuld OpenGL 4.6-support er relateret til NIR by SPIR-V support. AMD r600 har også en gaffel med NIR til bedre understøttelse af HD5000- og HD6000 -serien. Denne mulighed for r600 er standard siden Mesa 21.0.

TGSI

Tungsten Graphics Shader Infrastructure (TGSI) blev introduceret i 2008 af Tungsten Graphics. Alle Gallium3D-stil UMD indtager TGSI. NIR er nu hovedudviklingsområde, så TGSI er kun for ældre chauffører som r300g standardinfrastruktur og vil blive nedlagt i nogle år.

LLVM IR

UMD'erne radeonsiog udsender llvmpipeikke maskinkode, men i stedet LLVM IR. Herfra foretager LLVM optimeringer og kompilering til maskinkode. Dette betyder, at der også skal installeres en vis minimumsversion af LLVM.

RADV ACO IR

RADV ACO bruger egen IR, der er tæt på NIR, til optimering og generering af slut binær kode til Vulkan SPIR-V shaders oven på Radeon GPU'er (GCN 1+, alias GFX6+) GPU'er. Fra version 20.1.0 bruges ACO kun i RADV (Vulkan -driver) og ikke i RadeonSI endnu.

Mesas GLSL -kompilator

Mesas GLSL -kompilator genererer sin egen IR. Fordi hver driver har meget forskellige krav fra en LIR, skelner den mellem HIR (IR på højt niveau) og LIR (IR på lavt niveau).

Gallium3D

Gallium3D
Originale forfattere Wolframgrafik (nu VMware )
Udgivelsesversion
0,4 / 24 april 2010 ; 11 år siden ( 2010-04-24 )
Depot
Skrevet i C , C ++ , samlingssprog
Operativ system På tværs af platforme
Type Grafisk bibliotek
Licens MIT -licens
Internet side www .freedesktop .org /wiki /Software /gallium /

Gallium3D er et sæt grænseflader og en samling understøttende biblioteker, der skal lette programmeringen af enhedsdrivere til 3D -grafikchipsæt til flere operativsystemer, gengivelse eller videoacceleration -API'er .

Der leveres en funktionsmatrix på mesamatrix .net , og bestræbelserne på at skrive gratis og open source-enhedsdrivere til grafikchips dokumenteres separat i Wikipedia: Gratis og open source-grafikdriver .

Udviklingen af ​​Gallium3D startede i 2008 hos Tungsten Graphics, og implementeringen er tilgængelig som gratis og open-source software som en del af Mesa 3D hostet af freedesktop.org . Det primære mål at gøre driverudvikling lettere, bundtning af ellers duplikeret kode for flere forskellige drivere på et enkelt tidspunkt og at understøtte moderne hardwarearkitekturer. Dette gøres ved at give en bedre arbejdsdeling, for eksempel at overlade hukommelsesstyring til kernen DRI -driver.

Gallium3D har været en del af Mesa siden 2009 og bruges i øjeblikket af den gratis og open-source grafikdriver til Nvidia ( nouveau- projekt), til AMDs R300 - R900 , Intels 'Iris' driver til generation 8+ iGPU'er og til andre gratis og open-source GPU-enhedsdrivere .

Software arkitektur

Gallium3D letter programmeringen af ​​enhedsdrivere ved at opdele driveren til den grafiske enhed i tre dele. Dette opnås ved indførelsen af ​​to grænseflader : Gallium3D State Tracker Interface og Gallium3D WinSys Interface . De tre komponenter kaldes:

Gallium3D State Tracker

  • Hver grafisk API, som en enhedsdriver adresseres til, har sin egen State Tracker, f.eks. Er der en Gallium3D State Tracker til OpenGL og en anden til Direct3D eller GLX . Hver State Tracker indeholder en implementering af Gallium3D State Tracker Interface, og er unik, dette middel deles af alle eksisterende Gallium3D -enhedsdrivere.

Gallium3D hardwareenhedsdriver

  • Dette er den faktiske kode, der er specifik for den underliggende 3D -grafiske accelerator, men kun så vidt Gallium3D WinSys -grænsefladen tillader det. Der er en unik Gallium3D hardwareenhedsdriver til hver tilgængelig grafikchip, og hver implementerer Gallium3D State Tracker Interface samt Gallium3D WinSys Interface. Gallium3D -hardwareenhedsdriveren forstår kun TGSI (Tungsten Graphics Shader Infrastructure), et mellemsprog til beskrivelse af shaders. Denne kode oversatte shaders oversat fra GLSL til TGSI videre til instruktionssæt implementeret af GPU'en.

Gallium3D WinSys

  • Dette er specifikt for den underliggende kerne i operativsystemet, og hver enkelt implementerer Gallium3D WinSys -grænsefladen til grænseflade med alle tilgængelige Gallium3D -hardwareenhedsdrivere.
VC4 og freedreno kan både forbruge NIR direkte (og falde tilbage til tgsi_to_nir for shaders, der ikke bruger glsl_to_nir).
Illustration af Linux -grafikstakken
Mesa / DRI og Gallium3D har forskellige drivermodeller. Begge deler en masse gratis og open source- kode
En mulig eksempelmatrix ved implementering af Gallium3D -drivermodellen. Gennem introduktionen af ​​Gallium3D Tracker Interface og Gallium3D WinSys Interface kræves der kun 18 i stedet for 36 moduler. Hvert WinSys -modul kan fungere med hvert Gallium3D -enhedsdrivermodul og med hvert State Tracker -modul.

Forskelle fra klassiske grafikdrivere

Gallium3D giver en samlet API, der viser standardhardwarefunktioner, f.eks. Shader -enheder, der findes på moderne hardware. Således 3D API'er såsom OpenGL 1.x / 2.x, OpenGL 3.x, OpenVG , GPGPU infrastruktur eller endda Direct3D (som findes i vin kompatibilitet lag) får brug for kun en enkelt back-end, der kaldes en stat tracker, målrettet mod Gallium3D API. Derimod kræver DRI-enhedsdrivere i klassisk stil en anden back-end for hver hardware-platform, og flere andre API'er har brug for oversættelse til OpenGL på bekostning af kodeduplikering. Alle leverandørs enhedsdrivere på grund af deres proprietære og lukkede kilde karakter er skrevet på den måde, hvilket betyder, at f.eks. AMD Catalyst implementerer både OpenGL og Direct3D , og leverandørdriverne til GeForce har deres implementeringer.

Under Gallium3D vil Direct Rendering Manager (DRM) kernel drivere styre hukommelsen, og Direct Rendering Interface (DRI2) drivere vil være mere GPU -behandlingsorienteret. I overgangsperioden fra userpace -modeindstilling til kernelpace -modesetting af nogle af Mesa 3D -drivere, f.eks. Radeon -driveren eller Intels drivere, endte det med at understøtte både DRI1 og DRI2 og brugte DRI2, hvis de var tilgængelige på systemet. Gallium3D kræver desuden en grad af skyggesupport, der ikke er tilgængelig på ældre kort som f.eks. ATi r100-r200, så brugere af disse kort skal fortsat bruge Mesa 3D med DRI2 til deres 3D-brug.

Wolfram Graphics Shader Infrastructure

Tungsten Graphics Shader Infrastructure ( TGSI ) er en mellemrepræsentation som LLVM Intermediate Representation eller den nye Standard Portable Intermediate Representation (SPIR), der skal bruges af Vulkan API og OpenCL 2.1. Shadere skrevet i OpenGL Shading Language skal oversættes/kompileres til TGSI, derefter foretages optimeringer, og derefter kompileres TGSI -shaderne til shaders for instruktionssættet for den brugte GPU.

NIR er den nye Layer-repræsentation i Mesa med fuld SPIR-V-understøttelse og siden 2019 hovedudviklingsområde for alle nyere drivere med OpenGL 4.6-understøttelse.

LLVM brug

GlassyMesa er en LLVM-baseret kompilatorstak for shaders skrevet i GLSL . For SSA se artiklen Statisk enkelt tildelingsformular .

Derudover er der ved hjælp af den modulære struktur af Gallium3D en indsats i gang med at bruge LLVM -kompilatorsuiten og oprette et modul til optimering af shader -kode i farten.

Biblioteket repræsenterer hvert shader -program ved hjælp af en udvidelig binær mellemrepræsentation kaldet Tungsten Graphics Shader Infrastructure (TGSI), som LLVM derefter oversætter til GLSL -shaders optimeret til målhardware .

Adoption

Flere gratis og open source grafik enhedsdrivere , som har været, eller er ved at blive skrevet på grundlag af oplysninger opnået gennem renrum reverse engineering vedtog drivermodel fra Gallium3D, f.eks nouveau og andre ( se gratis og open source grafik enhed driver for en komplet liste ). Hovedårsagen kan være, at Gallium3D -drivermodellen reducerer mængden af ​​kode, der skal skrives. Selvom denne kode er licenseret under en gratis softwarelicens, kan enhver til enhver tid omskrive den til at implementere DRI- eller en anden førermodel.

Historie

Originale forfattere af Gallium3D var Keith Whitwell og Brian Paul på Tungsten Graphics (erhvervet af VMware i 2008).

Milepæle

Fra efteråret 2011 var der mindst 10 kendte, modne og fungerende Gallium3D -chauffører. Open source-drivere til Nvidia-grafikkort ved navn Nouveau- team udvikler sine drivere ved hjælp af Gallium3D-rammerne.

2008-07-13: Nouveau-udvikling sker udelukkende til Gallium-rammerne. Den gamle DRI -driver blev fjernet fra hovedgrenen i Mesa -depotet på Freedesktop.org.

2009-02-11: Gallium-0.2-grenen blev fusioneret til hovedlinjens hovedgren i Mesa. Udvikling sker i Mesa mainline.

2009-02-25: Gallium3D kan køre på Linux såvel som FreeBSD-kerner.

2009-05-01: Zack Rusin fra Tungsten Graphics tilføjede OpenVG state tracker til Mesa 3D, som gør det muligt at accelerere Scalable Vector Graphics af enhver Gallium3D-baseret driver.

2009-07-17: Mesa3D 7.5 frigives, den første version, der indeholder Gallium3D.

2010-09-10: Første support til Evergreen GPU'erne blev tilføjet til r600g-driveren.

2010-09-21: Der er to Gallium3D-drivere til ATI-hardware kendt som r300g og r600g for henholdsvis R300-R500 og R600-Evergreen GPU'er.

2010-09-21: Der blev foretaget større forpligtelser over for koden for at understøtte Direct3D 10 og 11. Med tiden vil dette muligvis tilbyde muligheden for at bruge nylige Direct3D-implementeringer på Linux-systemer.

2011-11-30: Intel 965g og Cell Gallium-drivere blev fjernet fra mastergrenen i Mesa som uholdte og ødelagte.

2013-11-30: Mesa 10 med OpenGL 3.2, 3.3 og OpenCL 1.0+

2014-11-18: Der blev foretaget større forpligtelser til koden for at understøtte Direct3D 9.

2015-09-15: Mesa 11 med OpenGL 4.0, 4.1 og OpenCL 1.2 (ufuldstændig)

2015-12-15: Mesa 11.1 Driver VIRGL til virtuelle maskiner med OpenGL 3.3

2016-07-08: Mesa 12 med OpenGL 4.2, 4.3 og Vulkan 1.0 (Intel ANV og AMD RADV)

2016-11-01: Mesa 13 med OpenGL 4.4 og OpenGL ES 3.2

2017-02-13: Mesa 17.0 med OpenGL 4.5 og freedreno driver med OpenGL 3.0 og 3.1

2017-05-10: Mesa 17.1 OpenGL 4.2+ til Intel Ivy Bridge (mere end Intel-driver til Windows, OpenGL 3.3+ til Intel Open SWR Rasterizer (vigtigt for klynge-computer til enorme simuleringer)

2017-12-08: Mesa 17.3 AMD Vulkan Driver RADV fuld kompatibel i Khronos Test af Vulkan 1.0

2018-05-18: Mesa 18.1 med Vulkan 1.1 (Intel ANV og AMD RADV)

2018-09-07: Mesa 18.2 med OpenGL 4.3 til Soft Driver VIRGL (vigtigt for virtuelle maskiner i cloud Cluster Computer), OpenGL ES 3.1 til Freedreno med Adreno A5xx

2019-06-11: Mesa 19.1 udgivet med Intels næste generations 'iris' grafikdriver til generation 8+ iGPU'er

2019-12-11: Mesa 19.3 frigav OpenGL 4.6 med Intel i965 med gen 7+ og valgfri Iris Gen 8+

2020-03-18: Mesa 20.0 frigav OpenGL 4.6 med AMD GCN og Vulkan 1.2 til Intel

2020-05-27: Mesa 20.1 frigav NIR-vektoriseringssupport og delt virtuel hukommelsesunderstøttelse til OpenCL i Clover

2020-11-30: Mesa 20.3 fuld understøttelse af OpenCL 1.2 i Clover

2021-03-11: Mesa 21.0 indledende support af „D3D12“: Direct 3D 12 til WSL2 i Windows 10 med OpenGL 3.3+, ARM Freedreno: OpenGL 3.3+

2021-05-05: Mesa 21.1 indledende support af Google VirtIO GPU-driver "Venus" med Vulkan 1.2+; Zink: OpenGL 4.6+, OpenGL ES 3.1+; Qualcomm Turnip, Lavapipe: Vulkan 1.1+

2021-08-04: Mesa 21.2 indledende support af ny Intel Crocus OpenGL 4.6 driver baseret på gallium3D til Intel Sandy Bridge til Haswell til gamle i965, Vulkan Driver panVK til ARM Panfrost

Ydeevne

Historie

Projektinitiativtager Brian Paul var en grafisk hobbyist. Han syntes, det ville være sjovt at implementere et simpelt 3D -grafikbibliotek ved hjælp af OpenGL API, som han derefter kan bruge i stedet for VOGL (meget almindeligt GL Like Library). Fra 1993 brugte han atten måneders deltidsudvikling, før han udgav softwaren på Internettet i februar 1995. Softwaren blev godt modtaget, og folk begyndte at bidrage til udviklingen. Mesa startede med at gengive al 3D computergrafikCPU'en . På trods af dette var Mesa's interne arkitektur designet til at være åben til vedhæftning til grafikprocessor -accelereret 3D -gengivelse. I denne første fase blev gengivelsen foretaget indirekte i displayserveren , hvilket efterlod en del overhead og mærkbar hastighed, der halter bag det teoretiske maksimum. Den Diamond Monster 3D , ved hjælp af Voodoo Graphics chipset, var en af de første 3D-hardware enheder, der understøttes af Mesa.

Den første ægte grafikhardwaresupport blev tilføjet til Mesa i 1997, baseret på Glide API til de dengang nye 3dfx Voodoo I/II grafikkort og deres efterfølgere. Et stort problem med at bruge Glide som accelerationslaget var Glides vane at køre fuld skærm, som kun var egnet til computerspil. Endvidere tog Glide låsen på skærmens hukommelse, og dermed blev displayserveren blokeret for at udføre andre GUI -opgaver.

Se også

Referencer

eksterne links

Eksterne links til Gallium3D

Forskellige lag i Linux, der også viser adskillelse mellem brugerlandet og kernerummet
Brugerindstilling Brugerprogrammer bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Systemkomponenter Dæmoner :
systemd , Runit , udevd , polkitd , sshd , smbd ...
Window manager :
X11 , Wayland , SurfaceFlinger (Android)
Grafik :
Mesa , AMD Catalyst , ...
Andre biblioteker:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
C standardbibliotek fopen, execv, malloc, memcpy, localtime, pthread_create... (op til 2000 underprogrammer )
glibc mål at være hurtig, MUSL og uClibc mål indlejrede systemer, bioniske skrevet til Android til, osv Alle sigter være POSIX / SUS -kompatible.
Kernel mode Linux kerne stat, splice, dup, read, open, ioctl, write, mmap, close, exitEtc. (ca. 380 systemkald)
Linuxkernen System Call interface (SCI, har til formål at være POSIX / SUS -kompatible)
Procesplanlægning
delsystem
IPC
-delsystem
Memory management
delsystem
Virtuelle filer
delsystem
Netværk
delsystem
Andre komponenter: ALSA , DRI , evdev , LVM , device mapper , Linux Network Scheduler , Netfilter
Linux Security Modules : SELinux , TOMOYO , AppArmor , Smack
Hardware ( CPU , hovedhukommelse , datalagringsenheder osv.)