De foreslår implementering av en GPU-driver skrevet i Rust, for Apple AGX G13 og G14

Linux Apple Rust

Dette er en ganske omfattende driver for Apple AGX G13- og G14-seriens GPU-er.
Dagens kontroller er kompatibel med SoC-er

Nyheten ble nylig utgitt den en foreløpig implementering av drm-asahi-driveren er foreslått for serie-GPUer Apple AGX G13 og G14 brukt i Apple M1- og M2-brikkene på e-postlisten for Linux-kjerneutviklere.

Kontrolleren er skrevet i Rust i tillegg til, inkluderer et sett med universelle lenker om DRM-delsystemet (Direct Rendering Manager) som kan brukes til å utvikle andre grafikkdrivere i Rust.

Det utgitte patchsettet inntil nå er bare foreslått for diskusjon av kjerneutviklerne (RFC), men kan bli akseptert i kjerneteamet etter at gjennomgangen er fullført og identifiserte mangler er fjernet.

Dette er min første versjon av Rustabstraksjonene for DRM delsystem. Inkluderer selve abstraksjonene, noen mindre forutsetningsendringer på C-siden samt drm-asahi GPU-driveren (for referanse om hvordan abstraksjoner brukes, men ikke nødvendigvis tenkt å lande sammen).

Disse lappene påføres på toppen av treet i [1], som er basert på 6.3-rc1 med mye abstraksjon/ruststøtte-commits lagt til ovenfor. De fleste av disse er ikke forutsetninger for DRM-abstraksjoner. seg selv, men bare fra sjåføren.

Siden desember er kontrolleren inkludert i pakken med kjernen for Asahi Linux-distribusjonen og har blitt testet av brukerne av dette prosjektet.

Driveren kan brukes på Linux-distribusjoner til organisere det grafiske miljøet i dApple-enheter med SoC M1, M1 Pro, M1 Max, M1 Ultra og M2. Ved utvikling av driveren ble det forsøkt ikke bare å øke sikkerheten ved å minimere feil ved arbeid med minne i kode utført på CPU-siden, men også å delvis beskytte mot problemer som oppstår ved interaksjon med fastvare.

Spesielt driveren gir visse bindinger for delte minnestrukturer utrygt med komplekse pekerestrenger som brukes i fastvaren for å samhandle med kontrolleren. Den foreslåtte driveren brukes sammen med asahi Mesa-driveren, som gir brukerplass OpenGL-støtte og består OpenGL ES 2-kompatibilitetstesting. og er nesten klar til å støtte OpenGL ES 3.0.

Samtidig driveren som fungerer på kjernenivå er opprinnelig utviklet med fremtidig støtte for Vulkan API i tankene, og programmeringsgrensesnittet for samhandling med brukerområdet er designet med UAPI levert av den nye Intel Xe-driveren i tankene.

Over kjente problemer følgende er nevnt:

  • Den eksisterende Rust-integrasjonen støtter foreløpig ikke bygningsabstraksjoner som moduler, så Rustabstraksjoner er kun tilgjengelig for innebygde DRM-komponenter.
  • DRM er sterkt avhengig av "subclassing"-mønsteret for kontrollerobjekter, og dette passer dårlig med Rust.
  • For øyeblikket er bare det som er nødvendig for kontrolleren implementert (pluss en liten mengde
    åpenbare tillegg der bedre API-integritet gir mening).
  • drm::mm ender opp med å kreve en mutex innebygd i abstraksjonen, i stedet
    å delegere det til brukeren med de vanlige Rust-mutabilitetsreglene.
    Dette er fordi noder kan droppes når som helst og disse operasjonene
    den må være synkronisert.
  • På Mesa-siden har du for øyeblikket Gallium-driveren som stort sett allerede er oppstrøms (UAPI-biter mangler stort sett) og
    består dEQP GLES2/EGL-testene, og det meste av GLES3.0 består
    Oppstrøms grener av arbeid som pågår. Dette er en community driver reverse engineering, så det nevnes at det fortsatt er mye å gjøre i dette aspektet.

endelig hvis du er det interessert i å vite mer om det, kan du sjekke detaljene i følgende lenke.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.