Rilascio di D9VK 0.40, implementazione di Direct3D 9 su Vulkan

ha avuto luogo rilascio del progetto D9VK 0.40, che fornisce un'implementazione Direct3D 9 che funziona traducendo le chiamate all'API grafica Vulcano. Il progetto si basa sulla codebase del progetto DXVK, che è stato esteso per supportare Direct3D 9. Rispetto all'implementazione Direct3D 9 basata su WineD3D, D9VK raggiunge prestazioni migliori perché la traduzione di Direct3D 9 tramite OpenGL è più lenta della traduzione tramite Vulkan.

D9VK può essere utilizzato per eseguire applicazioni e giochi 3D su Linux utilizzando Wine. Sono supportati la maggior parte dei giochi basati su Direct3D 9 che utilizzano le versioni 2 o 3 del modello Shader. Codice del progetto distribuito da sotto la licenza Zlib gratuita. D9VK richiede driver che supportano l'API Vulkan, come AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ e AMDVLK.

Principali miglioramenti:

  • È stata implementata la possibilità di utilizzare più di 4 GB di memoria video in applicazioni a 32 bit, che ha risolto i problemi durante l'avvio delle mod per i giochi Skyrim e Oblivion;
  • L'elaborazione asincrona della visualizzazione del risultato del rendering sullo schermo è abilitata (fase di presentazione). Per ridurre la latenza sul thread di rendering principale, l'elaborazione dell'output viene eseguita nel thread di invio dei comandi;
  • Rimossi i punti di sincronizzazione del flusso di comandi non necessari durante il recupero dei dati richiesti;
  • Il codice per determinare l'ora interna è stato tradotto per utilizzare un timer specifico della piattaforma, che ha aiutato a risolvere i problemi con il comportamento errato di high_length_clock di MinGW;
  • Lo scarico dei buffer differiti MANAGED e SYSTEMMEM è assicurato nella fase precedente all'esecuzione di PrepareDraw, che ha risolto i problemi di prestazioni nei giochi Risen e Legend of the Heroes: Trails of the Sky;
  • Aggiunto supporto D3DTA_COSTANTE, che ha permesso di implementare il rendering corretto effetto bagliore nei giochi SpinTyres e Mudrunner;
  • Compatibilità migliorata con DirectX9Ex (D3D9Ex). Vengono prese in considerazione le specificità dell'elaborazione ResetEx e Reset;
  • Codice pulito e rifattorizzato;
  • Viene fornita la mappatura diretta dei buffer WRITEONLY, che può avere un effetto positivo sulle prestazioni e aggirare un bug nel gioco
    Counter-Strike: Global Offensive, che comporta la continua scrittura nel buffer dopo che è stato sbloccato;

  • Metodo implementato Imposta modalità finestra di dialogo, che consente di utilizzare le finestre di dialogo nelle applicazioni a schermo intero;
  • Supporto implementato vertici di fusioneCompreso miscelazione dei vertici indicizzati, richiesto per SWVP (SoftWare Vertex Processing);
  • Il contatore del campionatore, visualizzato sopra l'immagine corrente (display heads-up, HUD), è stato ridisegnato;
  • Aggiunta l'opzione d3d9.dialogBoxMode, che può essere utilizzata per disabilitare il funzionamento solo in modalità schermo intero;
  • Effettuate ottimizzazioni delle prestazioni e risolti problemi che si verificavano all'avvio dei giochi 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 Velocità: Carbonio e Risorto 1.

Inoltre si può notare intenzione sviluppatore del progetto DXVK (implementazione di DXGI, Direct3D 10 e Direct3D 11 sull'API Vulkan) concentrerà temporaneamente gli sforzi solo sulla correzione dei bug, rallentando l'espansione delle funzionalità. Un desiderio simile causato da preoccupazioni per una diminuzione della qualità della base di codice e una manutenzione più difficile in futuro. Ogni aggiornamento al ramo 1.4.x causa lamentele su modifiche regressive che non possono essere riprodotte, localizzate e riparate.

Questi problemi richiedono un'analisi delle ragioni del loro verificarsi, altrimenti lasciarli non risolti continuando ad aumentare la funzionalità può solo aggravare la situazione e trasformare il processo di manutenzione in un incubo. I piani che lo sviluppatore DXVK intende implementare prima di passare alla modalità di sola correzione dei bug includono l'aggiunta del supporto per alcune utili estensioni Vulkan e la fusione con gli sviluppi del progetto D9VK.

Aggiunta: alle calcagna formato versione correttiva D9VK 0.40.1, in cui fisso ha impostato vec4(1) sul valore predefinito per COLOR0 nei vertex shader e risolto un bug in cui i bit dello slot di output dello shader predefinito venivano applicati in modo errato e quindi corretti in modo errato dal backend, causandone la sostituzione con vec4(0).

Fonte: opennet.ru

Aggiungi un commento