Veröffentlichung von D9VK 0.40, Direct3D 9-Implementierung zusätzlich zu Vulkan

fand statt Projektfreigabe D9VK 0.40, das eine Direct3D 9-Implementierung bereitstellt, die durch die Übersetzung von Aufrufen an die Grafik-API funktioniert Vulkan. Das Projekt basiert auf der Codebasis des Projekts DXVK-Erweiterung, das erweitert wurde, um Direct3D 9 zu unterstützen. Im Vergleich zur WineD3D-basierten Direct9D 3-Implementierung erreicht D9VK eine bessere Leistung, da die Direct3D 9-Übersetzung über OpenGL langsamer ist als die Übersetzung über Vulkan.

Mit D9VK können 3D-Anwendungen und Spiele unter Linux mit Wine ausgeführt werden. Die meisten Spiele, die auf Direct3D 9 basieren und die Versionen 2 oder 3 des Shader-Modells verwenden, werden unterstützt. Projektnummer vertrieben von unter der kostenlosen Zlib-Lizenz. Für D9VK sind Treiber erforderlich, die die Vulkan-API unterstützen, z. B. AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ und AMDVLK.

Wichtigste Verbesserungen:

  • Die Möglichkeit, mehr als 4 GB Videospeicher in 32-Bit-Anwendungen zu verwenden, wurde implementiert, wodurch Probleme beim Starten von Mods für die Spiele Skyrim und Oblivion behoben wurden;
  • Die asynchrone Verarbeitung der Anzeige des Rendering-Ergebnisses auf dem Bildschirm ist aktiviert (Präsentationsphase). Um die Latenz im Haupt-Rendering-Thread zu reduzieren, wird die Ausgabeverarbeitung im Befehlsübermittlungs-Thread durchgeführt.
  • Unnötige Befehlsfluss-Synchronisierungspunkte beim Abrufen angeforderter Daten entfernt.
  • Der Code zur Bestimmung der internen Zeit wurde übersetzt, um einen plattformspezifischen Timer zu verwenden, was dazu beitrug, Probleme mit dem falschen Verhalten von high_resolution_clock von MinGW zu lösen;
  • Das Entladen der verzögerten Puffer MANAGED und SYSTEMMEM wird in der Phase vor der Ausführung von PrepareDraw sichergestellt, wodurch Leistungsprobleme in den Spielen Risen und Legend of the Heroes: Trails of the Sky behoben wurden.
  • Unterstützung hinzugefügt D3DTA_CONSTANT, was es ermöglichte, ein korrektes Rendering zu implementieren Glow-Effekt in SpinTires- und Mudrunner-Spielen;
  • Verbesserte Kompatibilität mit DirectX 9Ex (D3D9Ex). Die Besonderheiten der Verarbeitung von ResetEx und Reset werden berücksichtigt;
  • Bereinigter und überarbeiteter Code;
  • Es wird eine direkte Zuordnung von WRITEONLY-Puffer bereitgestellt, was sich positiv auf die Leistung auswirken und einen Fehler im Spiel umgehen kann
    Counter-Strike: Global Offensive, was dazu führt, dass weiterhin in den Puffer geschrieben wird, nachdem er entsperrt wurde;

  • Implementierte Methode SetDialogBoxMode, mit dem Sie Dialogfelder in Vollbildanwendungen verwenden können;
  • Unterstützung implementiert Scheitelpunkte mischenEinschließlich indiziertes Scheitelpunktmischen, erforderlich für SWVP (Software Vertex Processing);
  • Der Sampler-Zähler, der über dem aktuellen Bild angezeigt wird (Heads-up-Display, HUD), wurde neu gestaltet;
  • Option d3d9.dialogBoxMode hinzugefügt, mit der das Arbeiten nur im Vollbildmodus deaktiviert werden kann;
  • Leistungsoptimierungen vorgenommen und Probleme behoben, die beim Start von GTA-Spielen auftraten: San Andreas, The Masquerade Bloodlines, Max Payne 2, Die Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Geschwindigkeit: Carbon und Risen 1.

Darüber hinaus kann darauf hingewiesen werden Absicht Projektentwickler DXVK-Erweiterung (Implementierung von DXGI, Direct3D 10 und Direct3D 11 zusätzlich zur Vulkan-API) werden die Bemühungen vorübergehend nur auf Fehlerbehebungen konzentrieren, was die Erweiterung der Funktionalität verlangsamt. Ein ähnlicher Wunsch verursacht Bedenken hinsichtlich einer Verschlechterung der Qualität der Codebasis und schwierigerer Wartung in der Zukunft. Jedes Update des 1.4.x-Zweigs führt zu Beschwerden über regressive Änderungen, die nicht reproduziert, lokalisiert und behoben werden können.

Diese Probleme erfordern eine Analyse der Gründe für ihr Auftreten. Andernfalls kann die Nichtbehebung bei gleichzeitiger Verbesserung der Funktionalität die Situation nur verschlimmern und den Wartungsprozess zu einem Albtraum machen. Zu den Plänen, die der DXVK-Entwickler vor dem Wechsel in den Nur-Fehlerbehebungsmodus umsetzen will, gehören die Hinzufügung von Unterstützung für einige nützliche Vulkan-Erweiterungen und die Zusammenführung mit den Entwicklungen des D9VK-Projekts.

Nachtrag: Auf Verfolgungsjagd gebildet Korrekturversion D9VK 0.40.1, in der behoben Setzen Sie vec4(1) auf den Standardwert für COLOR0 in Vertex-Shadern und beheben Sie einen Fehler, bei dem die Standard-Shader-Ausgabeslot-Bits falsch angewendet und daher vom Backend falsch korrigiert wurden, was dazu führte, dass sie durch vec4(0) ersetzt wurden.

Source: opennet.ru

Kommentar hinzufügen