Oni predlažu implementaciju GPU drajvera napisanog na Rust-u, za Apple AGX G13 i G14

Linux Apple Rust

Ovo je prilično sveobuhvatan drajver za Apple AGX G13 i G14 serije GPU-ova.
Današnji kontroler je kompatibilan sa SoC-ovima

Nedavno je objavljena vijest o tome predložena je preliminarna implementacija drm-asahi drajvera za serijske GPU-ove Apple AGX G13 i G14 korišteni u Apple M1 i M2 čipovima na mailing listi za programere Linux kernela.

Kontroler je napisan u Rustu plus, uključuje skup univerzalnih veza o DRM podsistemu (Direct Rendering Manager) koji se može koristiti za razvoj drugih grafičkih drajvera u Rustu.

Objavljeni set zakrpa do sada predložen je samo za raspravu od strane osnovnih programera (RFC), ali mogu biti primljeni u glavni tim nakon što se pregled završi i popravljeni identifikovani nedostaci.

Ovo je moja prva verzija Rust apstrakcija za DRM podsistema. Uključuje same apstrakcije, neke manje preduvjetne promjene na C strani kao i drm-asahi GPU drajver (za referencu o tome kako se apstrakcije koriste, ali ne nužno nameravali da slete zajedno).

Ove zakrpe su primijenjene na vrhu stabla u [1], koji se zasniva na 6.3-rc1 sa dosta urezivanja za apstrakciju/Rust podršku gore. Većina njih nisu preduvjeti za DRM apstrakcije. sami, ali samo od vozača.

Od decembra, kontrolor je uključen u paket sa kernelom za Asahi Linux distribuciju i testiran je od strane korisnika ovog projekta.

Drajver se može koristiti na Linux distribucijama za organizirati grafičko okruženje u dApple uređaji sa SoC M1, M1 Pro, M1 Max, M1 Ultra i M2. Prilikom razvoja drajvera pokušano je ne samo da se poveća sigurnost minimiziranjem grešaka pri radu s memorijom u kodu koji se izvršava na strani CPU-a, već i da se djelimično zaštiti od problema koji nastaju prilikom interakcije sa firmverom.

Posebno drajver obezbjeđuje određene veze za dijeljene memorijske strukture nesigurno sa složenim nizovima pokazivača koji se koriste u firmveru za interakciju s kontrolerom. Predloženi drajver se koristi zajedno sa asahi Mesa drajverom, koji pruža podršku za OpenGL u korisničkom prostoru i prolazi testiranje kompatibilnosti sa OpenGL ES 2. i skoro je spreman za podršku OpenGL ES 3.0.

Istovremeno, drajver koji radi na nivou kernela je inicijalno razvijen imajući na umu buduću podršku za Vulkan API, a programsko sučelje za interakciju sa korisničkim prostorom dizajnirano je s UAPI-jem koji nudi novi Intel Xe drajver.

Iznad poznati problemi spominju se:

  • Postojeća Rust integracija trenutno ne podržava izgradnju apstrakcija kao modula, tako da su Rust apstrakcije dostupne samo za ugrađene DRM komponente.
  • DRM se u velikoj meri oslanja na obrazac "podklasiranja" za objekte kontrolera, a to se ne uklapa u Rust.
  • Trenutno je implementirano samo ono što je potrebno za kontroler (plus mala količina
    očigledni dodaci gdje bolji integritet API-ja ima smisla).
  • drm::mm na kraju zahtijeva mutex ugrađen u apstrakciju, umjesto toga
    da to delegira korisniku uz uobičajena Rust pravila promjenjivosti.
    To je zato što čvorovi mogu biti ispušteni u bilo koje vrijeme i te operacije
    mora biti sinhronizovano.
  • Na strani Mesa trenutno imate Gallium drajver koji je uglavnom već uzvodno (UAPI bitovi uglavnom nedostaju) i
    prolazi dEQP GLES2/EGL testove, pri čemu većina GLES3.0 prolazi
    Uzvodne grane radova u toku. Ovo je obrnuti inženjering za upravljačke programe zajednice, pa se spominje da u ovom aspektu ima još dosta toga da se uradi.

konačno ako jesi zainteresovani da saznaju više o tome, detalje možete provjeriti u sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.