Navrhujú implementáciu ovládača GPU napísaného v Ruste pre Apple AGX G13 a G14

Linux Apple Rust

Toto je pomerne komplexný ovládač pre GPU série Apple AGX G13 a G14.
Dnešný ovládač je kompatibilný so SoC

Táto správa bola zverejnená nedávno bola navrhnutá predbežná implementácia ovládača drm-asahi pre sériové GPU Apple AGX G13 a G14 používané v čipoch Apple M1 a M2 na konferencii vývojárov jadra Linuxu.

Ovládač je napísaný v jazyku Rust plus, obsahuje súbor univerzálnych odkazov o subsystéme DRM (Direct Rendering Manager), ktorý možno použiť na vývoj iných grafických ovládačov v Rust.

Vydaná sada opráv do teraz bol navrhnutý len na diskusiu od hlavných vývojárov (RFC), ale môžu byť prijaté do základného tímu po dokončení kontroly a odstránení zistených nedostatkov.

Toto je moja prvá verzia abstrakcií Rust pre DRM subsystému. Zahŕňa samotné abstrakcie, niektoré menšie nevyhnutné zmeny na strane C, ako aj ovládač GPU drm-asahi (pre referenciu o tom, ako sa používajú abstrakcie, ale nie nevyhnutne určené na spoločné pristátie).

Tieto záplaty sú aplikované v hornej časti stromu v [1], ktorý je založený na 6.3-rc1 s pridaným množstvom abstrakcií/podpora Rustu vyššie. Väčšina z nich nie je nevyhnutným predpokladom pre abstrakcie DRM. sami, ale len od vodiča.

Od decembra je ovládač zaradený do balík s jadrom pre distribúciu Asahi Linux a bol testovaný používateľmi tohto projektu.

Ovládač je možné použiť na distribúciách Linuxu na organizovať grafické prostredie v dZariadenia Apple so SoC M1, M1 Pro, M1 Max, M1 Ultra a M2. Pri vývoji ovládača bola snaha nielen o zvýšenie bezpečnosti minimalizáciou chýb pri práci s pamäťou v kóde vykonávanom na strane CPU, ale aj o čiastočnú ochranu pred problémami, ktoré vznikajú pri interakcii s firmvérom.

Najmä ovládač poskytuje určité väzby pre štruktúry zdieľanej pamäte nebezpečné so zložitými reťazcami ukazovateľov používaných vo firmvéri na interakciu s ovládačom. Navrhovaný ovládač sa používa v spojení s ovládačom asahi Mesa, ktorý poskytuje podporu OpenGL v používateľskom priestore a prechádza testovaním kompatibility s OpenGL ES 2. a je takmer pripravený na podporu OpenGL ES 3.0.

Zároveň ovládač, ktorý funguje na úrovni jadra je pôvodne vyvinutý s ohľadom na budúcu podporu pre Vulkan APIa programovacie rozhranie pre interakciu s užívateľským priestorom je navrhnuté s ohľadom na UAPI poskytované novým ovládačom Intel Xe.

Cez známe problémy uvádzajú sa tieto:

  • Existujúca integrácia Rust v súčasnosti nepodporuje budovanie abstrakcií ako modulov, takže abstrakcie Rust sú dostupné len pre vstavané komponenty DRM.
  • DRM sa do značnej miery spolieha na vzor „podtriedy“ pre objekty ovládača, a to Rustovi nesedí.
  • V súčasnosti je implementované len to, čo je potrebné pre ovládač (plus malé množstvo
    zjavné doplnky, kde má zmysel lepšia integrita API).
  • drm::mm nakoniec vyžaduje mutex zabudovaný do abstrakcie
    delegovať to na používateľa s obvyklými pravidlami premenlivosti Rustu.
    Je to preto, že uzly môžu byť kedykoľvek zrušené a tieto operácie
    musí to byť synchronizované.
  • Na strane Mesa máte momentálne ovládač Gallium, ktorý je väčšinou už upstream (bity UAPI väčšinou chýbajú) a
    prejde testami dEQP GLES2/EGL, pričom väčšina GLES3.0 prejde
    Horné vetvy rozpracovanej výroby. Toto je reverzné inžinierstvo komunitného ovládača, takže je spomenuté, že v tomto aspekte je potrebné ešte veľa urobiť.

konečne ak si záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.