1 poin oleh GN⁺ 2024-06-06 | 1 komentar | Bagikan ke WhatsApp

Vulkan 1.3 berhasil diimplementasikan di M1 hanya dalam satu bulan

Pengenalan driver Honeykrisp

  • Driver Honeykrisp: driver pertama yang mengimplementasikan spesifikasi Vulkan 1.3 secara lengkap pada perangkat keras Apple.
  • Status pengembangan: belum dirilis untuk pengguna akhir, dan saat ini masih dalam proses penambahan fitur serta peningkatan performa. Kode sumbernya telah dibuka untuk para pengembang.

Proses pengembangan

2 April

  • Mulai: memulai pengembangan driver Vulkan untuk M1 berbasis driver NVK.

3 April

  • Descriptor set: menyesuaikan descriptor set milik M1 yang berbeda dari NVIDIA agar sesuai dengan NVK.

4 April

  • Compute shader: mengompilasi compute shader dan mengimplementasikan fungsi untuk menyalin buffer dan image menggunakan perintah Vulkan.

6 April

  • Pemrosesan status grafis: menulis kode untuk menangani status grafis, mengambil kode dari driver OpenGL lalu menggabungkannya dengan NVK.

7 April

  • Status dinamis: mengadopsi strategi untuk menangani semua status secara dinamis, serta menambahkan kode untuk mengompilasi dan menyimpan prolog dan epilog ke cache.

8 April

  • Hasil pengujian: hasil uji awal menunjukkan 149.770 lulus, 7.741 gagal, dan 2.396 crash.

9 April

  • Vulkan 1.3: setelah mencapai tingkat kelulusan 99,6% pada Vulkan 1.1, beralih ke Vulkan 1.3 dan mencapai tingkat kelulusan 98,3%.

10 April~12 April

  • Pengujian tambahan: memastikan Vulkan renderer berjalan di SuperTuxKart dan Zink, serta memperbaiki bug pada pengujian.

16 April~17 April

  • Perbaikan bug compiler: memperbaiki bug compiler yang ditemukan dalam pengujian descriptor indexing, serta menyelesaikan masalah infinite loop.

18 April

  • Rendering zero-copy: mengimplementasikan ekstensi EXT_image_drm_format_modifier untuk layout surface yang efisien.

22 April

  • Tinjauan arsitektur driver: meninjau arsitektur driver lalu melakukan optimasi, dan mencapai 100 juta draw call per detik pada pengujian vkoverhead.

24 April~25 April

  • Dukungan YCbCr: menambahkan fitur YCbCr dengan memanfaatkan kode NVK dari Mohamed Ahmed.
  • Penyalinan query: mengimplementasikan fitur penyalinan query GPU.

26 April

  • Warna batas: mengimplementasikan ekstensi EXT_custom_border_color untuk kompatibilitas Direct3D, dan menyelesaikan masalah warna batas.

27 April

  • Pengujian akhir: seluruh pengujian lulus, dengan 686.930 lulus dan 0 gagal.

Rencana ke depan

  • Dukungan DXVK dan vkd3d-proton: akan mengimplementasikan fitur tambahan untuk layering Direct3D.
  • Menjalankan game Windows: berencana menjalankan game Windows di Asahi Linux menggunakan Wine dan emulator x86 open source.

Pendapat GN⁺

  • Tantangan teknis: mengimplementasikan Vulkan 1.3 di M1 adalah pekerjaan yang sangat menantang secara teknis. Ini disebabkan oleh arsitektur unik perangkat keras Apple.
  • Bermanfaat bagi pengembang game: ketika driver Vulkan ini selesai, pengembang game akan bisa menjalankan game di lebih banyak platform sehingga memberikan manfaat besar.
  • Perlu optimasi performa: pada tahap awal, optimasi performa mungkin masih diperlukan. Terutama untuk mengatasi masalah CPU overhead akibat pemrosesan status dinamis.
  • Kontribusi komunitas: sebagai proyek open source, kontribusi komunitas sangat penting. Diperlukan pengujian dan umpan balik di berbagai lingkungan perangkat keras dan perangkat lunak.
  • Produk pesaing: selain DXVK dan vkd3d-proton, ada juga compatibility layer lain seperti Wine. Penting untuk membandingkan kelebihan dan kekurangan masing-masing sebelum memilih.

1 komentar

 
GN⁺ 2024-06-06
Komentar Hacker News
  • Pekerjaan yang mengesankan yang membuktikan nilai komponen bersama, berulang, dan terbuka. Saya penasaran berapa lama waktu yang dibutuhkan untuk mem-port Proton. Banyak game mungkin tidak akan berjalan dengan baik karena perbedaan arsitektur GPU dan overhead translasi ARM. Meski begitu, ada pandangan optimistis bahwa seiring SoC menjadi lebih umum, lebih banyak game akan menargetkan memori terpadu dan ARM.

  • Saya penasaran apakah upaya menambahkan Vulkan ke Linux dan mentranslasikan DirectX di Asahi Linux akan memengaruhi impian Apple untuk menghadirkan game AAA ke Apple Silicon. Apple ingin para pengembang AAA mem-port game mereka ke Metal agar bisa berjalan di iPhone, iPad, Mac, dan Vision Pro. Ada juga kemungkinan para gamer Mac akan memasang Asahi Linux untuk memainkan judul AAA PC.

  • Jika Anda belum akrab dengan Vulkan 1.3 tetapi tertarik pada pekerjaan API grafis tingkat rendah, ini layak untuk dilihat. Setelah melewati hambatan awal, pekerjaannya menjadi menyenangkan. Semua status dinamis dan render pass tanpa preset membuat pekerjaan jauh lebih mudah. Ini dapat digunakan di semua platform desktop dengan GPU yang berusia kurang dari 10 tahun. Hanya saja, tidak ada framework dengan "default yang masuk akal", tetapi ada banyak pustaka pembantu yang berguna untuk berbagai bahasa.

  • Saya berharap kemampuan pemrograman saya bisa setengah saja dari dirinya. Benar-benar luar biasa.

  • Sihir coding Alyssa yang menakjubkan. Saya tidak tahu bagaimana dia melakukannya, tetapi saya senang dia terus memperjuangkan hal yang benar.

  • Bug compiler itu tidak pernah terjadi. Tapi ternyata memang bug compiler. Saya belum pernah mengalaminya sekali pun sepanjang karier saya, tetapi pada level abstraksi ini hal itu mungkin lebih sering terjadi daripada yang dibayangkan.

  • Saya baru saja melakukan pembaruan dukungan ES 3.2, dan M1 terasa seperti dibuat untuk Asahi. macOS hanya pernah saya boot sekali saat instalasi. Saya penasaran apakah browser mendukung 'zero-copy rendering'. Saya ingat pernah terjebak pada masalah ketika transform feedback WebGL2 memicu operasi baca.

  • Ada struktur shader yang aneh. Kondisinya selalu salah, tetapi compiler tidak mengetahuinya. Saya penasaran apa tujuan dari struktur ini.

  • Apakah bisa digunakan di dalam VM. Saya mengembangkan di macOS dan menggunakan image VMware untuk menguji Ubuntu. Saya mengembangkan aplikasi grafis 3D, tetapi tidak tahu seberapa baik passthrough VMware. Saya penasaran apakah GPU Apple Silicon divirtualisasikan di VM, dan apakah menjalankan distribusi ini bisa memberi performa grafis yang lebih baik.

  • Saya penasaran apakah ada yang bisa menjelaskan hubungannya dengan MoltenVK. Saya ingin tahu apakah pekerjaan ini menghilangkan kebutuhan akan MoltenVK, dan apakah ini merupakan driver native.