Predlagajo izvedbo gonilnika GPU, napisanega v Rustu, za Apple AGX G13 in G14

Linux Apple Rust

To je dokaj obsežen gonilnik za grafični procesorji serije Apple AGX G13 in G14.
Današnji krmilnik je združljiv s sistemi na čipu

Novica je bila objavljena pred kratkim predlagana je bila predhodna izvedba gonilnika drm-asahi za serijske grafične procesorje Apple AGX G13 in G14, uporabljena v čipih Apple M1 in M2 na poštnem seznamu razvijalcev jedra Linuxa.

Krmilnik je napisan v Rustu plus, vključuje nabor univerzalnih povezav o podsistemu DRM (Direct Rendering Manager), ki se lahko uporablja za razvoj drugih grafičnih gonilnikov v Rust.

Izdan komplet popravkov do zdaj je bil predlagan samo za razpravo s strani osrednjih razvijalcev (RFC), vendar je lahko sprejet v ožjo ekipo, ko je pregled zaključen in so ugotovljene pomanjkljivosti odstranjene.

To je moja prva različica abstrakcij Rust za DRM podsistem. Vključuje same abstrakcije, nekatere manjše predpogojne spremembe na strani C kot tudi gonilnik GPE drm-asahi (za referenco o tem, kako se uporabljajo abstrakcije, vendar ne nujno nameravajo pristati skupaj).

Ti popravki so nameščeni na vrhu drevesa v [1], ki temelji na 6.3-rc1 z veliko dodanih potrditev podpore za abstrakcijo/Rust nad. Večina teh ni predpogojev za abstrakcije DRM. sami, ampak samo od voznika.

Od decembra je krmilnik vključen v paket z jedrom za distribucijo Asahi Linux in so ga preizkusili uporabniki tega projekta.

Gonilnik je mogoče uporabiti v distribucijah Linuxa urediti grafično okolje v dNaprave Apple s SoC M1, M1 Pro, M1 Max, M1 Ultra in M2. Pri razvoju gonilnika smo poskušali ne samo povečati varnost z zmanjšanjem napak pri delu s pomnilnikom v kodi, ki se izvaja na strani CPU, ampak tudi delno zaščititi pred težavami, ki nastanejo pri interakciji z vdelano programsko opremo.

Še posebej gonilnik zagotavlja določene vezave za skupne pomnilniške strukture ni varen s kompleksnimi nizi kazalcev, ki se uporabljajo v vdelani programski opremi za interakcijo s krmilnikom. Predlagani gonilnik se uporablja v povezavi z gonilnikom asahi Mesa, ki zagotavlja podporo za OpenGL v uporabniškem prostoru in uspešno opravi testiranje združljivosti z OpenGL ES 2. in je skoraj pripravljen za podporo OpenGL ES 3.0.

Hkrati gonilnik, ki deluje na ravni jedra je prvotno razvit z mislijo na prihodnjo podporo za API Vulkan, programski vmesnik za interakcijo z uporabniškim prostorom pa je zasnovan ob upoštevanju UAPI, ki ga zagotavlja novi gonilnik Intel Xe.

Nad znane težave omenjeni so:

  • Obstoječa integracija Rust trenutno ne podpira gradnje abstrakcij kot modulov, zato so abstrakcije Rust na voljo samo za vdelane komponente DRM.
  • DRM se v veliki meri opira na vzorec "podrazredov" za objekte krmilnikov, kar pa Rustu ne ustreza.
  • Trenutno je implementirano samo tisto, kar je potrebno za krmilnik (plus majhna količina
    očitni dodatki, kjer je boljša integriteta API-ja smiselna).
  • drm::mm namesto tega zahteva mutex, vgrajen v abstrakcijo
    da to prenese na uporabnika z običajnimi pravili spreminjanja Rust.
    To je zato, ker lahko vozlišča kadar koli opustite in te operacije
    mora biti sinhroniziran.
  • Na strani Mesa imate trenutno gonilnik Gallium, ki je večinoma že navzgor (biti UAPI večinoma manjkajo) in
    opravi teste dEQP GLES2/EGL, pri čemer večina GLES3.0 opravi
    Gornje veje dela v teku. To je obratni inženiring gonilnika skupnosti, zato je omenjeno, da je treba na tem področju še veliko narediti.

končno če si zanima več o tem, podrobnosti lahko preverite v naslednjo povezavo.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.