Rilascio D9VK 0.40, implementazione di Direct3D 9 sopra Vulkan

Si è svolto il rilascio del progetto D9VK 0.40, che fornisce un'implementazione di Direct3D 9 funzionante tramite la traduzione delle chiamate nell'API grafica Vulkan. Il progetto è basato sul codice del progetto DXVK, che è stato ampliato con il supporto per Direct3D 9. Rispetto all'implementazione di Direct3D 9 basata su WineD3D, D9VK consente di ottenere prestazioni migliori, poiché la traduzione di Direct3D 9 attraverso OpenGL è più lenta della traduzione tramite Vulkan.

D9VK può essere utilizzato per eseguire applicazioni 3D e giochi su Linux tramite Wine. Supporta l'esecuzione della maggior parte dei giochi basati su Direct3D 9 che utilizzano la versione 2 o 3 del Shader Model. Il codice del progetto distribuito è distribuito sotto licenza libera Zlib. Per utilizzare D9VK è necessario avere driver che supportino l'API Vulkan, come AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ e AMDVLK.

Miglioramenti principali:

  • È stata implementata la possibilità di utilizzare più di 4 GB di memoria video in applicazioni a 32 bit, risolvendo problemi durante l'esecuzione di mod per i giochi Skyrim e Oblivion;
  • È stata inclusa l'elaborazione asincrona dell'output del rendering su schermo (fase di presentazione). Per ridurre i ritardi nel thread principale di rendering, l'elaborazione dell'output viene eseguita nel thread di invio comandi (command submission thread);
  • Sono stati eliminati punti di sincronizzazione superflui nel thread dei comandi durante il recupero dei dati richiesti;
  • Il codice per la determinazione del tempo interno è stato tradotto per utilizzare un timer specifico per la piattaforma, il che ha aiutato a risolvere problemi legati al comportamento errato di high_resolution_clock di MinGW;
  • È stata garantita la scarica dei buffer in attesa MANAGED e SYSTEMMEM nella fase precedente a PrepareDraw, risolvendo problemi di prestazioni nei giochi Risen e Legend of Heroes: Trails of the Sky;
  • Aggiunto supporto per D3DTA_CONSTANT, che ha consentito di implementare un rendering corretto effetto luminoso nei giochi SpinTyres e Mudrunner;
  • Migliorata la compatibilità con DirectX 9Ex (D3D9Ex). È stata considerata la specificità del trattamento di ResetEx e Reset;
  • Effettuata la pulizia e il refactoring del codice;
  • Garantito il mapping diretto dei buffer WRITEONLY, il che può avere un impatto positivo sulle prestazioni e aggirare un errore nel gioco
    Counter-Strike: Global Offensive, che comportava la continua scrittura nel buffer dopo la sua sblocco;
  • È stato implementato il metodo SetDialogBoxMode, che consente l'uso di finestre di dialogo in applicazioni a schermo intero;
  • Implementato il supporto per mescolamento dei vertici, tra cui mescolamento dei vertici indicizzato, necessario per SWVP (SoftWare Vertex Processing);
  • Ristrutturato il contatore del campionatore, visualizzato sopra l'immagine corrente (heads-up display, HUD);
  • Aggiunta l'opzione d3d9.dialogBoxMode, utilizzabile per disattivare il funzionamento solo in modalità schermo intero;
  • Effettuate ottimizzazioni delle prestazioni e risolti problemi manifestatisi durante l'esecuzione di giochi come GTA: 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 Speed: Carbon e Risen 1.

Inoltre, si può notare l'intenzione sviluppatore del progetto DXVK (implementazione DXGI, Direct3D 10 e Direct3D 11 sopra API Vulkan) ha deciso di concentrare temporaneamente gli sforzi esclusivamente sulla correzione di bug, ritardando l'espansione delle funzionalità. Questo desiderio è motivato da è legato a preoccupazioni riguardo alla diminuzione della qualità del codice e alla complessità della manutenzione futura. Ogni aggiornamento della branca 1.4.x ha sollevato lamentele su cambiamenti regressivi che non possono essere riprodotti, localizzati e risolti.

Questi problemi richiedono un'analisi delle cause della loro comparsa, altrimenti lasciarli non corretti mentre si continua a espandere le funzionalità potrebbe solo aggravare la situazione e trasformare la manutenzione in un incubo. Tra i piani che lo sviluppatore di DXVK intende realizzare prima di passare a una modalità di sola correzione degli errori c'è l'aggiunta del supporto per alcune estensioni utili di Vulkan e la fusione con i risultati del progetto D9VK.

Nota: a caldo formato rilascio correttivo D9VK 0.40.1, in cui è stata corretta il valore predefinito vec4(1) per COLOR0 negli shader dei vertici ed è stato risolto un errore, per cui i bit degli slot per le uscite dello shader venivano applicati erroneamente per impostazione predefinita e quindi correttamente corretti dal backend, causando la loro sostituzione con vec4(0).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster