Mereka mencadangkan pelaksanaan pemacu GPU yang ditulis dalam Rust, untuk Apple AGX G13 dan G14

Linux Apple Rust

Ini adalah pemacu yang agak komprehensif untuk GPU siri Apple AGX G13 dan G14.
Pengawal hari ini serasi dengan SoC

Berita yang dikeluarkan baru-baru ini bahawa pelaksanaan awal pemandu drm-asahi telah dicadangkan untuk GPU siri Apple AGX G13 dan G14 digunakan dalam cip Apple M1 dan M2 pada senarai mel pembangun kernel Linux.

Pengawal ditulis dalam Rust tambah, termasuk satu set pautan universal mengenai subsistem DRM (Pengurus Render Langsung) yang boleh digunakan untuk membangunkan pemacu grafik lain dalam Rust.

Set tampalan yang dikeluarkan sehingga sekarang telah dicadangkan untuk perbincangan sahaja oleh pembangun teras (RFC), tetapi boleh diterima ke dalam pasukan teras selepas semakan selesai dan kekurangan yang dikenal pasti diperbaiki.

Ini adalah versi pertama saya abstraksi Rust untuk DRM subsistem. Termasuk abstraksi itu sendiri, beberapa kecil perubahan prasyarat pada bahagian C serta pemacu GPU drm-asahi (untuk rujukan tentang cara abstraksi digunakan, tetapi tidak semestinya bertujuan untuk mendarat bersama).

Tompok ini digunakan pada bahagian atas pokok dalam [1], yang berdasarkan 6.3-rc1 dengan banyak abstraksi/sokongan Rust commit ditambah atas. Kebanyakan ini bukan prasyarat untuk abstraksi DRM. sendiri, tetapi hanya dari pemandu.

Sejak Disember, pengawal disertakan dalam pakej dengan kernel untuk pengedaran Asahi Linux dan telah diuji oleh pengguna projek ini.

Pemacu boleh digunakan pada pengedaran Linux ke menyusun persekitaran grafik dalam dPeranti Apple dengan SoC M1, M1 Pro, M1 Max, M1 Ultra dan M2. Semasa membangunkan pemacu, percubaan dibuat bukan sahaja untuk meningkatkan keselamatan dengan meminimumkan ralat apabila bekerja dengan memori dalam kod yang dilaksanakan pada bahagian CPU, tetapi juga untuk melindungi sebahagian daripada masalah yang timbul apabila berinteraksi dengan perisian tegar.

Secara khusus pemacu menyediakan pengikatan tertentu untuk struktur memori yang dikongsi tidak selamat dengan rentetan penunjuk kompleks yang digunakan dalam perisian tegar untuk berinteraksi dengan pengawal. Pemacu yang dicadangkan digunakan bersama dengan pemacu asahi Mesa, yang menyediakan sokongan OpenGL ruang pengguna dan lulus ujian keserasian OpenGL ES 2. dan hampir bersedia untuk menyokong OpenGL ES 3.0.

Pada masa yang sama, pemacu yang berfungsi pada peringkat kernel pada mulanya dibangunkan dengan mengambil kira sokongan masa hadapan untuk API Vulkan, dan antara muka pengaturcaraan untuk berinteraksi dengan ruang pengguna direka bentuk dengan UAPI yang disediakan oleh pemacu Intel Xe baharu dalam fikiran.

Lebih dari isu yang diketahui berikut disebutkan:

  • Penyepaduan Rust sedia ada pada masa ini tidak menyokong abstraksi bangunan sebagai modul, jadi abstraksi Rust hanya tersedia untuk komponen DRM terbenam.
  • DRM sangat bergantung pada corak "subkelas" untuk objek pengawal, dan ini tidak sesuai dengan Rust.
  • Pada masa ini, hanya apa yang diperlukan untuk pengawal yang dilaksanakan (ditambah dengan sejumlah kecil
    tambahan yang jelas di mana integriti API yang lebih baik masuk akal).
  • drm::mm akhirnya memerlukan mutex terbina dalam abstraksi, sebaliknya
    untuk mewakilkan itu kepada pengguna dengan peraturan kebolehubahan Rust biasa.
    Ini kerana nod boleh digugurkan pada bila-bila masa dan operasi tersebut
    ia perlu selari.
  • Di sebelah Mesa, anda kini mempunyai pemacu Gallium yang kebanyakannya sudah berada di hulu (bit UAPI kebanyakannya tiada) dan
    lulus ujian dEQP GLES2/EGL, dengan kebanyakan GLES3.0 lulus
    Cawangan huluan kerja sedang dijalankan. Ini adalah kejuruteraan terbalik pemandu komuniti, jadi disebutkan bahawa masih banyak yang perlu dilakukan dalam aspek ini.

akhirnya jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak butirannya di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.