Nesen tika izlaistas ziņas, ka ir ierosināta iepriekšēja drm-asahi draivera ieviešana sērijas GPU Apple AGX G13 un G14, ko izmanto Apple M1 un M2 mikroshēmās Linux kodola izstrādātāju adresātu sarakstā.
Kontrolieris ir rakstīts Rust plus, ietver universālu saišu kopu par DRM apakšsistēmu (Direct Rendering Manager), ko var izmantot, lai izstrādātu citus grafikas draiverus programmā Rust.
Atbrīvotais ielāpu komplekts līdz šim brīdim ir ierosināts tikai apspriešanai galvenie izstrādātāji (RFC), bet var tikt pieņemti galvenajā komandā pēc tam, kad pārskatīšana ir pabeigta un konstatētie trūkumi ir novērsti.
Šī ir mana pirmā Rust abstrakciju versija DRM apakšsistēmu. Ietver pašas abstrakcijas, dažas nelielas priekšnosacījumu izmaiņas C pusē, kā arī drm-asahi GPU draiveris (atsaucei par to, kā tiek izmantotas abstrakcijas, bet ne obligāti paredzēts nolaisties kopā).
Šie ielāpi tiek uzlikti koka augšdaļā [1], kura pamatā ir 6.3-rc1 ar daudzām abstrakcijas/rūsas atbalsta saistībām, kas pievienotas virs. Lielākā daļa no tiem nav priekšnoteikumi DRM abstrakcijām. paši, bet tikai no vadītāja.
Kopš decembra kontrolieris ir iekļauts iepakojums ar kodolu Asahi Linux izplatīšanai un to ir pārbaudījuši šī projekta lietotāji.
Draiveri var izmantot Linux izplatījumos, lai organizēt grafisko vidi dApple ierīces ar SoC M1, M1 Pro, M1 Max, M1 Ultra un M2. Izstrādājot draiveri, tika mēģināts ne tikai palielināt drošību, samazinot kļūdas, strādājot ar atmiņu kodā, kas izpildīts CPU pusē, bet arī daļēji aizsargāt pret problēmām, kas rodas, mijiedarbojoties ar programmaparatūru.
Jo īpaši draiveris nodrošina noteiktus saistījumus koplietotās atmiņas struktūrām nedrošs ar sarežģītām rādītāju virknēm, kas tiek izmantotas programmaparatūrā, lai mijiedarbotos ar kontrolieri. Piedāvātais draiveris tiek izmantots kopā ar asahi Mesa draiveri, kas nodrošina lietotāja telpas OpenGL atbalstu un iztur OpenGL ES 2 saderības pārbaudi. un ir gandrīz gatavs atbalstīt OpenGL ES 3.0.
Tajā pašā laikā draiveris, kas darbojas kodola līmenī sākotnēji tika izstrādāts, paturot prātā turpmāko atbalstu Vulkan API, un programmēšanas interfeiss mijiedarbībai ar lietotāja telpu ir izstrādāts, ņemot vērā UAPI, ko nodrošina jaunais Intel Xe draiveris.
Pāri zināmie jautājumi tiek minēti šādi:
- Esošā Rust integrācija pašlaik neatbalsta ēku abstrakcijas kā moduļus, tāpēc Rust abstrakcijas ir pieejamas tikai iegultiem DRM komponentiem.
- DRM lielā mērā paļaujas uz kontroliera objektu "apakšklases" modeli, un tas neatbilst Rust.
- Pašlaik tiek ieviests tikai tas, kas ir nepieciešams kontrolierim (plus neliels daudzums
acīmredzamas ekstras, kur ir jēga labākai API integritātei). - drm::mm tā vietā ir nepieciešams abstrakcijā iebūvēts mutex
lai deleģētu to lietotājam ar parastajiem Rust mainīguma noteikumiem.
Tas ir tāpēc, ka mezglus var atmest jebkurā laikā un šīs darbības
tam ir jābūt sinhronizētam. - Mesa pusē jums pašlaik ir Gallium draiveris, kas lielākoties jau ir augšpusē (lielākoties trūkst UAPI bitu) un
iztur dEQP GLES2/EGL testus, un lielākā daļa GLES3.0 iztur
Augšupējās nepabeigtā darba nozares. Šī ir kopienas draivera reversā inženierija, tāpēc tiek minēts, ka šajā aspektā vēl ir daudz darāmā.
beidzot, ja esi interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt sadaļā šo saiti.