Veröffentlichung von D9VK 0.40, Implementierung von Direct3D 9 über Vulkan

Hat stattgefunden Projektveröffentlichung D9VK 0.40, das die Implementierung von Direct3D 9 ermöglicht, die durch das Übersetzen von Aufrufen in die Grafik-API funktioniert Vulkan. Das Projekt basiert auf dem Code des Projekts DXVK, das um die Unterstützung von Direct3D 9 erweitert wurde. Im Vergleich zur Implementierung von Direct3D 9 auf Basis von WineD3D ermöglicht D9VK eine höhere Leistung, da die Übersetzung von Direct3D 9 über OpenGL langsamer ist als die Übersetzung über Vulkan.

D9VK kann verwendet werden, um 3D-Anwendungen und Spiele unter Linux mit Wine auszuführen. Die meisten Spiele, die auf Direct3D 9 basieren und die Shader Model 2 oder 3 verwenden, werden unterstützt. Der Code des Projekts wird verbreitet steht unter der freien Zlib-Lizenz. Um D9VK zu verwenden, sind Treiber erforderlich, die die Vulkan-API unterstützen, wie AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ und AMDVLK.

Hauptverbesserungen:

  • Die Möglichkeit wurde implementiert, mehr als 4 GB Videospeicher in 32-Bit-Anwendungen zu verwenden, was Probleme beim Ausführen von Mods für die Spiele Skyrim und Oblivion behoben hat;
  • Die asynchrone Verarbeitung der Ausgabe des Rendering-Ergebnisses auf dem Bildschirm (Präsentationsstufe) wurde aktiviert. Um Verzögerungen im Haupt-Rendering-Thread zu reduzieren, erfolgt die Ausgabeverarbeitung im Befehlsübertragungs-Thread;
  • Überflüssige Synchronisationspunkte im Befehlsstrom beim Abrufen angeforderter Daten wurden entfernt;
  • Der Code zur Bestimmung der internen Zeit wurde so umgestellt, dass er einen plattformspezifischen Timer verwendet, was Probleme mit dem fehlerhaften Verhalten des high_resolution_clock aus MinGW behoben hat;
  • Es wurde sichergestellt, dass verzögerte Puffer MANAGED und SYSTEMMEM in der Phase vor PrepareDraw entladen werden, was die Leistung in den Spielen Risen und Legend of the Heroes: Trails of the Sky verbessert hat;
  • Unterstützung hinzugefügt für D3DTA_CONSTANT, was eine korrekte Rendering-Implementierung ermöglicht hat von Glüheffekten in den Spielen SpinTyres und Mudrunner;
  • Die Kompatibilität mit DirectX 9Ex (D3D9Ex) wurde verbessert. Die Besonderheiten der Verarbeitung von ResetEx und Reset wurden berücksichtigt;
  • Der Code wurde gesäubert und umstrukturiert;
  • Eine direkte Zuordnung von WRITEONLY-Puffern wurde sichergestellt, was sich positiv auf die Leistung auswirken und einen Fehler im Spiel
    Counter-Strike: Global Offensive, der dazu führt, dass das Schreiben in den Puffer nach dessen Freigabe fortgesetzt wird, umgehen kann;
  • Die Methode wurde implementiert SetDialogBoxMode, das die Verwendung von Dialogfenstern in Vollbildanwendungen ermöglicht;
  • Die Unterstützung wurde umgesetzt Vertex-Mischung, darunter indexierte Vertex-Mischung, die für SWVP (Software Vertex Processing) erforderlich ist;
  • Der Zähler für den Sampler, der über dem aktuellen Bild angezeigt wird (Heads-up-Display, HUD), wurde überarbeitet;
  • Die Option d3d9.dialogBoxMode wurde hinzugefügt, die verwendet werden kann, um den Betrieb nur im Vollbildmodus zu deaktivieren;
  • Leistungsoptimierungen wurden vorgenommen und Probleme behoben, die beim Starten von Spielen wie 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 und Risen 1 auftreten.

Zusätzlich kann vermerkt werden der Absicht Entwickler des Projekts DXVK (Implementierung von DXGI, Direct3D 10 und Direct3D 11 über die Vulkan-API) um sich vorübergehend ausschließlich auf das Beheben von Fehlern zu konzentrieren und die Erweiterung der Funktionalität zu verlangsamen. Dieser Wunsch ist verursacht von der Sorge um eine Abnahme der Qualität des Codes und eine Komplikation der Wartung in der Zukunft. Jedes Update des Branches 1.4.x führt zu Beschwerden über Rückschritte, die sich nicht reproduzieren, lokalisieren und beheben lassen.

Diese Probleme erfordern die Untersuchung ihrer Ursachen, da das Belassen ungelöster Probleme bei fortschreitender Funktionserweiterung die Situation nur verschärfen und den Wartungsprozess in einen Albtraum verwandeln kann. Zu den Plänen, die der DXVK-Entwickler bis zum Übergang in den Korrekturmodus umsetzen möchte, gehört die Unterstützung einiger nützlicher Vulkan-Erweiterungen und die Zusammenführung mit den Arbeiten des Projekts D9VK.

Ergänzung: auf den heißen Fersen gebildet Die Korrekturversion D9VK 0.40.1, in der wurde behoben der Standardwert für COLOR0 in Vertex-Shadern auf vec4(1) gesetzt und ein Fehler behoben, durch den die Slot-Bits für Shader-Ausgänge standardmäßig falsch angewendet und somit vom Backend inkorrekt korrigiert wurden, was zu einer Ersetzung durch vec4(0) führte.

Quelle: opennet.ru

60GB SSD 8Gb DDR4