Wine projesi, Vulkan grafik API'sine yapılan çağrıları çevirerek çalışan Direct3D 1.2 uygulamasını içeren vkd3d 12 paketinin yeni bir sürümünü yayınladı .
vkd3d 1.2'nin bu yeni sürümü çeşitli iyileştirmeler içeriyor, ancak en dikkat çekenler arasında libvkd3d-shader'ın herkese açık bir kütüphane olarak kullanılabilirliği , mozaikleme gölgelendiricileri desteği ve akış çıktısı desteği yer alıyor.
Paket, Direct3D 12 uygulamaları içeren libvkd3d kütüphanesini, model 4 ve 5 shader çeviricisini içeren libvkd3d-shader kütüphanesini ve Direct3D 12 uygulamalarının geçişini basitleştirmek için işlevler içeren libvkd3d-utils kütüphanesini ve ayrıca glxgears'ın Direct3D 12'ye uyarlanmış versiyonu da dahil olmak üzere bir dizi demoyu içermektedir. Proje kodu LGPLv2.1 lisansı altında dağıtılmaktadır.
libvkd3d kütüphanesi , grafik ve hesaplama fonksiyonları, komut listeleri ve kuyrukları, tanımlayıcılar ve yığın tanımlayıcıları, kök imzaları, sıralı olmayan erişim, örnekleyiciler, komut imzaları, kök sabitleri, dolaylı işleme vb. dahil olmak üzere Direct3D 12 özelliklerinin çoğunu destekler.
Libvkd3d-shader, shader modellerinin 4 ve 5 numaralı bayt kodlarının ara SPIR-V gösterimine çevrilmesini sağlar . Köşeler, pikseller, mozaikleme, basit ve hesaplamalı geometri shader'ları, kök imza serileştirme ve seri durumdan çıkarma işlemleri desteklenmektedir.
Shader komutları, aritmetik, atomik ve bit-bit işlemleri, veri akışı kontrolü ve karşılaştırma operatörleri, örnekleme, toplama ve yükleme komutları ve sıralı olmayan erişim işlemlerini (UAV, Sıralı Olmayan Erişim Görünümü) içerir.
Geliştirmenin bu aşamasında, Direct3D 12 çağrılarının tamamı uygulanmamıştır ve testler öncelikle bir dizi demo uygulama üzerinde gerçekleştirilmiştir. Bu sürüm, mozaikleme ve karmaşık geometri gölgelendiricileri desteği gibi geliştirme aşamasındaki özelliklerin yanı sıra gölgelendiriciler ve temel Direct3D 12 yöntemleriyle ilgili çeşitli iyileştirmeleri içermemektedir. Bu özellikler gelecekteki bir sürümde sunulacaktır.
Vkd3d 1.2'nin başlıca yeni özellikleri
Yeni sürümdeki en önemli değişikliklerden biri, Direct3D 12'nin çeşitli özelliklerinin eklenmesiyle birlikte, libvkd3d-shader kütüphanesinin üçüncü taraf projelerde kullanılabilir hale gelmesidir; bunlar arasında şunlar yer almaktadır:
- Çoklu örnekleme.
- Rezerve edilmiş kaynaklar.
- Örnek veri aktarım hızları.
- Tüm arayüzler için "özel veri" API'si.
- Gölgelendirici kaynak görünümü bileşen atamaları.
- VK_KHR_draw_indirect_count uzantısı.
- Yüklem/koşullu gösterim.
- Piksel gölgelendirici olmadan derinlik oluşturma.
- Derinlik kesimi. Bunun için VK_EXT_length_clip_enable uzantısı gerekir.
- Rasterleştiriciyi atın.
- Çift kaynak karışımı.
- Yerleştirilen kaynakların haritalanması.
- ReadFromSubresource() ve WriteToSubresource() yöntemleri ID3D12Resource.
- Birden fazla kuyruktan kaynaklara eşzamanlı erişim.
- Boş görüntülemeler. Yani, temel bir kaynağı olmayan görüşler.
- Birkaç özellik destek sorgusu daha.
Bunun yanı sıra, kök imzaların dönüştürülmesi, serileştirilmesi ve seri durumdan çıkarılması için eklenen destek (vkd3d_serialize_versioned_root_signature() ve vkd3d_create_versioned_root_signature_deserializer()) ve akış çıktısı desteği de dikkate değerdir.
Bir diğer önemli değişiklik ise ortam değişkenlerinin uygulanmasıdır: libvkd3d'nin davranışını değiştirmek için seçenekleri ayarlamak üzere VKD3D_CONFIG ve Vulkan API'si için aygıtı geçersiz kılmak üzere VKD3D_VULKAN_DEVICE.
Ek olarak, bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos gölgelendirme komutları için destek eklendi ve model 5.1 gölgelendiricileri için ön destek sağlandı.
Ayrıca OpenGL SPIR-V hedef ortamları için de destek. Bu, libvkd3d-shader tarafından üretilen SPIR-V'nin GL_ARB_gl_spirv ile kullanılmasına olanak tanır. Buna OpenGL atomik sayaçları ve birleştirme örnekleyicileri desteği de dahildir.
Son olarak, bu yeni sürüm hakkında daha fazla bilgi edinmek isterseniz , aşağıdaki bağlantıdan değişikliklerin tam listesine ulaşabilirsiniz .
Linux'a vkd3d nasıl kurulur?
Sistemlerine vkd3d kurabilmek isteyenler, kaynak kodunu almalı ve derlemeye devam etmelidir, ancak pratik amaçlar veya yeni başlayanlar için bu kütüphaneyi fazla çaba harcamadan deneyebilirler. Bunun için sadece lutris'i ve konfigürasyonları dahilinde kurmaları gerekir.
Derlemeyle ilgilenenlere gelince, kodu şu şekilde almaları gerekir:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Son olarak, Vulkan katmanları etkinleştirilmelidir:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug