Navrhují implementaci ovladače GPU napsaného v Rustu pro Apple AGX G13 a G14

Linux Apple Rust

Jedná se o poměrně komplexní ovladač pro GPU řady Apple AGX G13 a G14.
Dnešní řadič je kompatibilní se SoC

Tato zpráva byla zveřejněna nedávno byla navržena předběžná implementace ovladače drm-asahi pro sériové GPU Apple AGX G13 a G14 používané v čipech Apple M1 a M2 na e-mailové konferenci pro vývojáře jádra Linuxu.

Ovladač je napsán v Rustu Plus, obsahuje sadu univerzálních odkazů o subsystému DRM (Direct Rendering Manager), který lze použít k vývoji dalších grafických ovladačů v Rust.

Vydaná sada oprav do teď byl navržen pouze k diskusi hlavními vývojáři (RFC), ale může být přijat do základního týmu po dokončení revize a odstranění zjištěných nedostatků.

Toto je moje první verze Rustových abstrakcí pro DRM subsystému. Zahrnuje abstrakce samotné, některé menší nezbytné změny na straně C a také ovladač GPU drm-asahi (pro odkaz na to, jak se abstrakce používají, ale ne nutně určené k přistání společně).

Tyto záplaty jsou aplikovány v horní části stromu v [1], který je založen na 6.3-rc1 se spoustou abstrakce/podpora rzi přidaných commitů výše. Většina z nich nejsou předpoklady pro abstrakce DRM. sami, ale pouze od řidiče.

Od prosince je ovladač součástí balíček s jádrem pro distribuci Asahi Linux a byl testován uživateli tohoto projektu.

Ovladač lze použít na distribucích Linuxu organizovat grafické prostředí v dZařízení Apple se SoC M1, M1 Pro, M1 Max, M1 Ultra a M2. Při vývoji ovladače byl učiněn pokus nejen o zvýšení bezpečnosti minimalizací chyb při práci s pamětí v kódu prováděném na straně CPU, ale také o částečnou ochranu před problémy, které vznikají při interakci s firmwarem.

Zejména ovladač poskytuje určité vazby pro struktury sdílené paměti nebezpečné se složitými řetězci ukazatelů používaných ve firmwaru k interakci s ovladačem. Navrhovaný ovladač se používá ve spojení s ovladačem asahi Mesa, který poskytuje podporu OpenGL v uživatelském prostoru a prochází testováním kompatibility OpenGL ES 2. a je téměř připraven na podporu OpenGL ES 3.0.

Zároveň ovladač, který funguje na úrovni jádra je zpočátku vyvíjen s ohledem na budoucí podporu pro Vulkan APIa programovací rozhraní pro interakci s uživatelským prostorem je navrženo s ohledem na rozhraní UAPI poskytované novým ovladačem Intel Xe.

Přes známé potíže jsou zmíněny následující:

  • Stávající integrace Rust v současné době nepodporuje vytváření abstrakce jako modulů, takže abstrakce Rust jsou dostupné pouze pro vestavěné komponenty DRM.
  • DRM se do značné míry spoléhá na vzor "podtřídění" objektů řadiče, a to se Rustovi nehodí.
  • V současné době je implementováno pouze to, co je nezbytné pro ovladač (plus malé množství
    zjevné doplňky, kde má lepší integrita API smysl).
  • drm::mm místo toho vyžaduje mutex zabudovaný do abstrakce
    delegovat to na uživatele s obvyklými pravidly mutability Rust.
    Je to proto, že uzly mohou být kdykoli zrušeny a tyto operace
    musí to být synchronizované.
  • Na straně Mesa máte aktuálně ovladač Gallium, který je většinou již upstream (bity UAPI většinou chybí) a
    projde testy dEQP GLES2/EGL, přičemž většina GLES3.0 projde
    Předcházející větve nedokončené výroby. Toto je reverzní inženýrství komunitních ovladačů, takže je zmíněno, že v tomto aspektu je třeba ještě hodně udělat.

konečně jestli jsi zájem dozvědět se o tom více, můžete zkontrolovat podrobnosti v následující odkaz.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.