WebGPU ve Rust veri yerleşimleri Facet kütüphanesiyle doğrulanıyor
Öne çıkanlar
- WGSL içindeki mat3x3 veri tipi satır dolgusuyla 48 bayt yer kaplarken Rust tarafında aynı matris 36 bayt olarak tutuluyor.
- Naga kütüphanesi gölgelendirici kodunu ayrıştırarak veri yapılarındaki alanların ofset ve boyut bilgilerini çıkarıyor.
- Facet kütüphanesi yapılandırma nesnelerini sadece birim testlerinde yansıma yoluyla otomatik biçimde denetliyor.
GPU hesaplama gölgelendiricileri (compute shaders) geliştirirken ana sistem ile ekran kartı arasında yapılandırma verisi paylaşmak yaygın bir yöntem olarak öne çıkıyor. Rust tarafında zerocopy gibi kütüphanelerle doğrudan belleğe yazılan veri yapıları, WebGPU gölgelendirme dili WGSL tarafındaki bellek hizalama ve dolgu (padding) kurallarıyla her zaman örtüşmüyor. Örneğin mat3x3 gibi matris tiplerinde WGSL satır başına 4 bayt dolgu eklerken, Rust bu veriyi sıkı şekilde paketliyor. Ortaya çıkan bu küçük bellek kaymaları, GPU üzerinde sonsuz döngülere ve bilgisayarın yeniden başlatılmasını gerektiren kilitlenmelere yol açabiliyor.
Fidget projesinin geliştiricisi, bu yerleşim uyumsuzluklarını önlemek için harici derleme komut dosyaları veya ek kod üretim araçları yerine birim testlerine dayalı bir doğrulama yöntemi geliştirdi. Gölgelendirici derleme hattında halihazırda yer alan naga kütüphanesi kullanılarak WGSL kaynak kodundaki veri yapısı ayrıştırılıyor ve her bir alanın bellek ofseti tespit ediliyor. İlk aşamada elle yazılan ofset denetimleri hataları yakalasa da, çok sayıda yapılandırma nesnesini tek tek yönetmenin zorluğu ve hata mesajlarının kök nedeni tam gösterememesi sebebiyle yöntem geliştirilmeye ihtiyaç duydu.
Süreci otomatikleştirmek amacıyla Rust'ın çalışma zamanı yansıma (reflection) kütüphanesi Facet entegre edildi. Test modunda türetilen Facet özelliği sayesinde yapıların bellek düzeni, alan boyutları ve ofsetleri çalışma zamanında incelenebilir hale geldi. Geliştirilen jenerik denetim işlevi, son alanda yer alabilen dinamik boyutlu dizileri de hesaba katarak Rust ve WGSL yapılarının boyutlarını karşılıklı olarak doğruluyor. Bu sayede üretim derlemesine ek yük getirmeden, yeni gölgelendiriciler için veri yerleşimi doğruluğu birim testleriyle güvence altına alınıyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.