Propongono l'implementazione di un driver GPU scritto in Rust, per Apple AGX G13 e G14

Linux Apple ruggine

Questo è un driver abbastanza completo per le GPU della serie Apple AGX G13 e G14.
Il controller di oggi è compatibile con i SoC

La notizia è stata rilasciata di recente che è stata proposta un'implementazione preliminare del driver drm-asahi per GPU di serie Apple AGX G13 e G14 utilizzati nei chip Apple M1 e M2 sulla mailing list degli sviluppatori del kernel Linux.

Il controller è scritto in Rust e, inoltre, include una serie di collegamenti universali sul sottosistema DRM (Direct Rendering Manager) che può essere utilizzato per sviluppare altri driver grafici in Rust.

Il set di patch rilasciato fino ad ora è stato proposto solo per la discussione dai core developer (RFC), ma può essere accettato nel core team dopo che la revisione è stata completata e le carenze identificate sono state rimosse.

Questa è la mia prima versione delle astrazioni di Rust per DRM sottosistema. Include le astrazioni stesse, alcune minori modifiche ai prerequisiti sul lato C e sul driver della GPU drm-asahi (per riferimento su come vengono utilizzate le astrazioni, ma non necessariamente destinato ad atterrare insieme).

Queste patch sono applicate nella parte superiore dell'albero in [1], su cui si basa 6.3-rc1 con molti commit di astrazione/supporto Rust aggiunti Sopra. La maggior parte di questi non sono prerequisiti per le astrazioni DRM. stessi, ma solo dal conducente.

Da dicembre, il controller è incluso in il pacchetto con il kernel per la distribuzione Asahi Linux ed è stato testato dagli utenti di questo progetto.

Il driver può essere utilizzato su distribuzioni Linux a organizzare l'ambiente grafico in dDispositivi Apple con SoC M1, M1 Pro, M1 Max, M1 Ultra e M2. Durante lo sviluppo del driver, si è cercato non solo di aumentare la sicurezza riducendo al minimo gli errori quando si lavora con la memoria nel codice eseguito sul lato CPU, ma anche di proteggere parzialmente dai problemi che sorgono durante l'interazione con il firmware.

In particolare, il driver fornisce determinati collegamenti per strutture di memoria condivise unsafe con stringhe complesse di puntatori utilizzati nel firmware per interagire con il controller. Il driver proposto viene utilizzato insieme al driver asahi Mesa, che fornisce il supporto OpenGL in spazio utente e supera i test di compatibilità OpenGL ES 2. ed è quasi pronto per supportare OpenGL ES 3.0.

Allo stesso tempo, il driver che funziona a livello di kernel è inizialmente sviluppato pensando al supporto futuro per l'API Vulkane l'interfaccia di programmazione per l'interazione con lo spazio utente è progettata pensando all'UAPI fornito dal nuovo driver Intel Xe.

Sopra il Problemi noti sono menzionati i seguenti:

  • L'integrazione Rust esistente attualmente non supporta la creazione di astrazioni come moduli, quindi le astrazioni Rust sono disponibili solo per i componenti DRM incorporati.
  • Il DRM fa molto affidamento sul modello di "sottoclasse" per gli oggetti controller, e questo non si adatta bene a Rust.
  • Attualmente, viene implementato solo ciò che è necessario per il controller (più una piccola quantità di
    ovvi extra in cui ha senso una migliore integrità dell'API).
  • drm::mm finisce invece per richiedere un mutex incorporato nell'astrazione
    delegarlo all'utente con le solite regole di mutabilità di Rust.
    Questo perché i nodi possono essere eliminati in qualsiasi momento e tali operazioni
    deve essere sincronizzato.
  • Sul lato Mesa attualmente hai il driver Gallium che è per lo più già a monte (bit UAPI per lo più mancanti) e
    supera i test dEQP GLES2/EGL, superando la maggior parte di GLES3.0
    Rami a monte dei lavori in corso. Questo è un reverse engineering del driver della comunità, quindi si dice che c'è ancora molto da fare in questo aspetto.

finalmente se lo sei interessati a saperne di più, puoi controllare i dettagli in il seguente collegamento.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.