De föreslår implementering av en GPU-drivrutin skriven i Rust, för Apple AGX G13 och G14

Linux Apple Rust

Detta är en ganska omfattande drivrutin för Apple AGX G13- och G14-seriens GPU:er.
Dagens kontroller är kompatibel med SoCs

Nyheten släpptes nyligen den en preliminär implementering av drm-asahi-drivrutinen har föreslagits för serie-GPU:er Apple AGX G13 och G14 används i Apple M1 och M2 chips på Linux-kärnans e-postlista för utvecklare.

Regulatorn är skriven i Rust plus, innehåller en uppsättning universella länkar om DRM-delsystemet (Direct Rendering Manager) som kan användas för att utveckla andra grafikdrivrutiner i Rust.

Det släppta patchsetet tills nu har endast föreslagits för diskussion av kärnutvecklarna (RFC), men kan accepteras i kärnteamet efter att granskningen är klar och identifierade brister har åtgärdats.

Detta är min första version av Rustabstraktionerna för DRM delsystem. Inkluderar själva abstraktionerna, några mindre förutsättningsändringar på C-sidan samt drm-asahi GPU-drivrutinen (för referens om hur abstraktioner används, men inte nödvändigtvis avsedda att landa tillsammans).

Dessa lappar appliceras i toppen av trädet i [1], som är baserat på 6.3-rc1 med en hel del abstraktion/Rost-stöd-commits inlagda ovan. De flesta av dessa är inte förutsättningar för DRM-abstraktioner. själva, men bara från föraren.

Sedan december ingår controllern i paketet med kärnan för Asahi Linux-distributionen och har testats av användarna av detta projekt.

Drivrutinen kan användas på Linux-distributioner till organisera den grafiska miljön i dApple-enheter med SoC M1, M1 Pro, M1 Max, M1 Ultra och M2. Vid utvecklingen av drivrutinen gjordes ett försök att inte bara öka säkerheten genom att minimera fel vid arbete med minne i kod som körs på CPU-sidan, utan också att delvis skydda mot problem som uppstår vid interaktion med firmware.

I synnerhet drivrutinen tillhandahåller vissa bindningar för delade minnesstrukturer osäker med komplexa strängar av pekare som används i den fasta programvaran för att interagera med styrenheten. Den föreslagna drivrutinen används tillsammans med asahi Mesa-drivrutinen, som ger OpenGL-stöd för användarutrymme och klarar OpenGL ES 2-kompatibilitetstester. och är nästan redo att stödja OpenGL ES 3.0.

Samtidigt drivrutinen som fungerar på kärnnivå är initialt utvecklad med framtida stöd för Vulkan API i åtanke, och programmeringsgränssnittet för att interagera med användarutrymmet är utformat med UAPI som tillhandahålls av den nya Intel Xe-drivrutinen i åtanke.

Över kända problem följande nämns:

  • Den befintliga Rust-integrationen stöder för närvarande inte byggnadsabstraktioner som moduler, så Rustabstraktioner är endast tillgängliga för inbäddade DRM-komponenter.
  • DRM förlitar sig mycket på "underklassnings"-mönstret för kontrollerobjekt, och detta passar inte bra med Rust.
  • För närvarande implementeras bara det som är nödvändigt för styrenheten (plus en liten mängd
    uppenbara extrafunktioner där bättre API-integritet är vettigt).
  • Det slutar med att drm::mm kräver en mutex inbyggd i abstraktionen istället
    för att delegera det till användaren med de vanliga reglerna för rostförändring.
    Detta beror på att noder kan släppas när som helst och dessa operationer
    det måste vara synkroniserat.
  • På Mesa-sidan har du för närvarande Gallium-drivrutinen som för det mesta redan är uppströms (UAPI-bitar saknas mestadels) och
    klarar dEQP GLES2/EGL-testerna, med de flesta av GLES3.0 godkända
    Uppströms grenar av pågående arbete. Detta är en reverse engineering för communitydrivrutiner, så det nämns att det fortfarande finns mycket att göra i denna aspekt.

äntligen om du är det intresserad av att veta mer om detkan du kolla in detaljerna följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.