D9VK 0.40 sürümü, Vulkan'a ek olarak Direct3D 9 uygulaması

gerçekleşti proje sürümü D9VK 0.40Çağrıları grafik API'sine çevirerek çalışan bir Direct3D 9 uygulaması sağlayan Vulkan. Proje, projenin kod tabanına dayanmaktadır DXVKDirect3D 9'u destekleyecek şekilde genişletilmiştir. WineD3D tabanlı Direct9D 3 uygulamasıyla karşılaştırıldığında D9VK daha iyi performans elde eder çünkü OpenGL aracılığıyla Direct3D 9 çevirisi, Vulkan aracılığıyla yapılan çeviriye göre daha yavaştır.

D9VK, Wine kullanarak Linux'ta 3D uygulamaları ve oyunları çalıştırmak için kullanılabilir. Shader Modelinin 3 veya 9 sürümlerini kullanan Direct2D 3 tabanlı oyunların çoğu desteklenir. Proje kodu tarafından dağıtıldı ücretsiz Zlib lisansı altında. D9VK, AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ ve AMDVLK gibi Vulkan API'sini destekleyen sürücüler gerektirir.

Ana iyileştirmeler:

  • 4 bit uygulamalarda 32 GB'tan fazla video belleği kullanma yeteneği uygulandı; bu, Skyrim ve Oblivion oyunları için modları başlatırken sorunları çözdü;
  • Oluşturma sonucunun ekranda görüntülenmesi için eş zamanlı olmayan işlem etkinleştirilir (sunum aşaması). Ana işleme iş parçacığında gecikmeyi azaltmak için çıktı işleme, komut gönderme iş parçacığında gerçekleştirilir;
  • İstenen veriler alınırken gereksiz komut akışı senkronizasyon noktaları kaldırıldı;
  • Dahili saati belirleyen kod, platforma özel bir zamanlayıcı kullanacak şekilde çevrildi; bu, MinGW'den yüksek_çözünürlük_saatinin hatalı davranışıyla ilgili sorunların çözülmesine yardımcı oldu;
  • MANAGED ve SYSTEMMEM ertelenmiş arabelleklerin boşaltılması, Risen ve Legend of the Heroes: Trails of the Sky oyunlarındaki performans sorunlarını çözen PreparDraw'un yürütülmesinden önceki aşamada sağlanır;
  • Destek eklendi D3DTA_SABİTBu, doğru oluşturmanın uygulanmasını mümkün kıldı parlama efekti SpinTyres ve Mudrunner oyunlarında;
  • ile geliştirilmiş uyumluluk DirectX 9Ex (D3D9Ex). ResetEx ve Reset işlemlerinin özellikleri dikkate alınır;
  • Temizlenmiş ve yeniden düzenlenmiş kod;
  • Performans üzerinde olumlu bir etkiye sahip olabilecek ve oyundaki bir hatayı atlayabilecek WRITEONLY arabelleklerinin doğrudan eşlenmesi sağlanmıştır.
    Counter-Strike: Global Offensive, kilidi açıldıktan sonra ara belleğe yazmaya devam edilmesiyle sonuçlanır;

  • Uygulanan yöntem SetDialogBoxModetam ekran uygulamalarda iletişim kutularını kullanmanıza olanak tanıyan;
  • Destek uygulandı köşeleri karıştırmaDahil indekslenmiş köşe karıştırmaSWVP (SoftWare Vertex Processing) için gereklidir;
  • Geçerli görüntünün (baş üstü ekranı, HUD) üstünde görüntülenen örnekleyici sayacı yeniden tasarlandı;
  • Yalnızca tam ekran modunda çalışmayı devre dışı bırakmak için kullanılabilecek d3d9.dialogBoxMode seçeneği eklendi;
  • Performans optimizasyonları yapıldı ve GTA oyunları başlatılırken ortaya çıkan sorunlar çözüldü: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Hız: Karbon ve Yükseldi 1.

Ek olarak, not edilebilir niyet proje geliştiricisi DXVK (Vulkan API'sine ek olarak DXGI, Direct3D 10 ve Direct3D 11'in uygulanması) geçici olarak yalnızca hata düzeltmelerine odaklanacak ve işlevselliğin genişlemesini yavaşlatacaktır. Benzer bir arzu neden oldu gelecekte kod tabanının kalitesinin düşmesi ve bakımın zorlaşmasıyla ilgili endişeler. 1.4.x şubesine yapılan her güncelleme, yeniden üretilemeyen, yerelleştirilemeyen ve düzeltilemeyen gerileyici değişikliklerle ilgili şikayetlere neden olmaktadır.

Bu sorunlar, ortaya çıkma nedenlerinin analizini gerektirir, aksi takdirde işlevselliği artırmaya devam ederken bunları düzeltmeden bırakmak, yalnızca durumu daha da kötüleştirebilir ve bakım sürecini bir kabusa dönüştürebilir. DXVK geliştiricisinin yalnızca hata düzeltme moduna geçmeden önce uygulamayı planladığı planlar arasında bazı yararlı Vulkan uzantıları için destek eklenmesi ve D9VK projesindeki geliştirmelerle birleşme yer alıyor.

Ekleme: çok ateşli oluşturulan düzeltici sürüm D9VK 0.40.1, burada sabit vec4(1)'i vertex gölgelendiricilerde COLOR0 için varsayılan değere ayarladık ve varsayılan gölgelendirici çıkış yuvası bitlerinin yanlış uygulandığı ve dolayısıyla arka uç tarafından yanlış şekilde düzeltilerek bunların vec4(0) ile değiştirilmesine neden olan bir hata düzeltildi.

Kaynak: opennet.ru

Yorum ekle