Vulkan 1.3, M1'de bir ayda hayata geçirildi
Honeykrisp sürücüsüne giriş
- Honeykrisp sürücüsü: Apple donanımında tam Vulkan 1.3 spesifikasyonunu ilk kez uygulayan sürücü.
- Geliştirme durumu: Henüz son kullanıcılara sunulmadı; özellik ekleme ve performans iyileştirme çalışmaları sürüyor. Kaynak kodu geliştiricilere açık.
Geliştirme süreci
2 Nisan
- Başlangıç: NVK sürücüsü temel alınarak M1 için Vulkan sürücüsü geliştirmeye başlandı.
3 Nisan
- Descriptor set: NVIDIA'dan farklı olan M1'in descriptor set yapısı NVK'ye uyarlanarak düzenlendi.
4 Nisan
- Compute shader: Compute shader derleme ve Vulkan komutlarıyla buffer ve image kopyalama işlevi hayata geçirildi.
6 Nisan
- Grafik durum işleme: Grafik durumlarını işleyen kod yazıldı; OpenGL sürücüsünden kod alınıp NVK ile birleştirildi.
7 Nisan
- Dinamik durum: Tüm durumların dinamik olarak işlenmesi stratejisi benimsendi; prolog ve epilog derleyip önbelleğe alan kod eklendi.
8 Nisan
- Test sonuçları: İlk testlerde 149.770 başarı, 7.741 başarısızlık, 2.396 çökme görüldü.
9 Nisan
- Vulkan 1.3: Vulkan 1.1'de %99,6 başarı oranına ulaşıldıktan sonra Vulkan 1.3'e geçildi ve %98,3 başarı oranı elde edildi.
10 Nisan ~ 12 Nisan
- Ek testler: SuperTuxKart ve Zink üzerinde Vulkan renderer'ın çalıştığı doğrulandı, test hataları düzeltildi.
16 Nisan ~ 17 Nisan
- Compiler hata düzeltmeleri: Descriptor indexing testlerinde bulunan compiler hataları düzeltildi, sonsuz döngü sorunu çözüldü.
18 Nisan
- Sıfır kopya rendering: Verimli surface layout için
EXT_image_drm_format_modifier uzantısı uygulandı.
22 Nisan
- Sürücü mimarisi incelemesi: Sürücü mimarisi gözden geçirilip optimizasyon yapıldı;
vkoverhead testinde saniyede 100 milyon draw call seviyesine ulaşıldı.
24 Nisan ~ 25 Nisan
- YCbCr desteği: YCbCr özelliği eklendi, Mohamed Ahmed'in NVK kodundan yararlanıldı.
- Sorgu kopyalama: GPU query kopyalama işlevi uygulandı.
26 Nisan
- Sınır rengi: Direct3D uyumluluğu için
EXT_custom_border_color uzantısı uygulandı, sınır rengi sorunu çözüldü.
27 Nisan
- Son test: Tüm testler geçildi; 686.930 başarı, 0 başarısızlık.
Gelecek planları
- DXVK ve vkd3d-proton desteği: Direct3D katmanlama için ek özellikler uygulanacak.
- Windows oyunlarını çalıştırma: Wine ve açık kaynaklı x86 emülatörü kullanılarak Asahi Linux üzerinde Windows oyunlarını çalıştırma planlanıyor.
GN⁺ görüşü
- Teknik zorluk: M1 üzerinde Vulkan 1.3'ü uygulamak teknik açıdan son derece zorlu bir iş. Bunun nedeni Apple donanımının kendine özgü mimarisi.
- Oyun geliştiricileri için faydalı: Vulkan sürücüsü tamamlandığında, oyun geliştiricileri oyunlarını daha fazla platformda çalıştırabilecek.
- Performans optimizasyonu gerekli: İlk aşamada performans optimizasyonu gerekebilir. Özellikle dinamik durum işlemenin yol açtığı CPU overhead sorunu çözülmeli.
- Topluluk katkısı: Açık kaynak proje olarak topluluk katkısı önemli. Farklı donanım ve yazılım ortamlarında test ve geri bildirim gerekli.
- Rakip ürünler: DXVK ve vkd3d-proton'un yanında Wine gibi başka uyumluluk katmanları da var. Her ürünün artı ve eksilerini karşılaştırarak seçim yapmak önemli.
1 yorum
Hacker News görüşleri
Paylaşılan, yinelemeli ve açık bileşenlerin değerini kanıtlayan etkileyici bir çalışma. Proton'un port edilmesinin ne kadar süreceğini merak ediyorum. GPU mimarisi farkları ve ARM dönüşüm ek yükü nedeniyle birçok oyunun düzgün çalışmaması mümkün. Yine de SoC'ler daha yaygın hale geldikçe daha fazla oyunun birleşik bellek ve ARM'ı hedefleyeceğine dair iyimserim.
Vulkan'ı Linux'a ekleyip DirectX'i Asahi Linux üzerinde dönüştürme çabasının, Apple'ın AAA oyunları Apple Silicon'a getirme hayalini etkileyip etkilemeyeceğini merak ediyorum. Apple, AAA geliştiricilerinin oyunları Metal'e port edip bunları iPhone, iPad, Mac ve Vision Pro'da çalıştırmasını istiyor. Mac oyuncularının AAA PC oyunlarını oynamak için Asahi Linux kurması da mümkün.
Vulkan 1.3'e aşina değilseniz ama düşük seviyeli grafik API'leriyle ilgileniyorsanız, buna göz atmaya değer. İlk engelleri aştıktan sonra çalışma keyifli hale geliyor. Tüm dinamik durumlar ve ön tanımlı ayar gerektirmeyen render pass'ler sayesinde iş çok daha kolaylaşıyor. Son 10 yıl içindeki GPU'lara sahip tüm masaüstü platformlarında kullanılabiliyor. Ancak "makul varsayılanlar" sunan bir framework yok; buna karşın birçok dil için yararlı yardımcı kütüphaneler mevcut.
Programlama becerilerimin onunkinin yarısı kadar olmasını isterdim. Gerçekten inanılmaz.
Alyssa'nın inanılmaz kodlama büyüsü. Bunu nasıl yaptığını bilmiyorum ama iyi bir mücadele verdiği için mutluyum.
Derleyici hataları asla olmaz. Ama aslında sorun gerçekten bir derleyici hatasıymış. Kariyerim boyunca buna hiç rastlamadım, ama bu soyutlama seviyesinde daha az nadir olabilir.
ES 3.2 destek güncellemesini yeni aldım; M1 sanki Asahi için yapılmış gibi. macOS'u sadece kurulum sırasında bir kez önyükledim. Tarayıcının 'zero-copy rendering'i destekleyip desteklemediğini merak ediyorum. WebGL2 transform feedback'in bir okuma işlemini tetiklediği bir soruna takıldığımı hatırlıyorum.
Tuhaf bir shader yapısı var. Koşul her zaman false ama derleyici bunu bilmiyor. Bu yapının amacının ne olduğunu merak ediyorum.
VM içinde kullanılabilir olup olmadığı. macOS üzerinde geliştiriyorum ve Ubuntu'yu test etmek için VMware imajı kullanıyorum. 3D grafik uygulamaları geliştiriyorum ama VMware'in passthrough desteğinin ne kadar iyi olduğunu bilmiyorum. Apple Silicon GPU'sunun VM içinde sanallaştırılıp sanallaştırılmadığını ve bu dağıtımı çalıştırarak daha iyi grafik performansı elde edip edemeyeceğimi merak ediyorum.
MoltenVK ile ilişkisini açıklayabilecek biri var mı? Bu çalışmanın MoltenVK ihtiyacını ortadan kaldırıp kaldırmadığını ve bunun yerel bir sürücü olup olmadığını merak ediyorum.