Featured image of post D7VK: Direct3D-Wrapper für alte Spiele in Version 2.4 veröffentlicht

D7VK: Direct3D-Wrapper für alte Spiele in Version 2.4 veröffentlicht

D7VK, ein Fork von DXVK zur Ausführung alter Direct3D 3/5/6/7-Anwendungen unter Wine, wurde in der Version v2.4 veröffentlicht.

Das Projekt befindet sich im Wartungsmodus, daher gibt es keine neuen Features, sondern vor allem Fixes. Oberflächengrößen werden nun auf 2048 Pixel und Display-Modi auf 2048 x 1536 begrenzt (1080p ist damit die höchste “moderne” Auflösung). Das Strecken des Back Buffers (relevant für Wayland) ist jetzt standardmäßig deaktiviert und erhält einen Modus, der das Seitenverhältnis wahrt. Außerdem begrüßt das Projekt GXVK, eine frühe Alpha einer Glide-Implementierung auf DXVK-Basis von CkNoSFeRaTU.

Fixes/additions:

  • Rebased on the latest upstream DXVK development code, which pulls in present timing, among other things.
  • Implemented aspect ratio preservation for back buffer stretching and also disabled back buffer stretching by default.
  • Enforced traditional DDraw surface and mode size dimensions where applicable, providing a config option to skip any validations for the more adventurous souls.
  • Added a legacy aspect ratio compatibility option which will only report 4:3 and 5:4 modes to an application. This was needed by Earth 2150 and its addons, which crash while accessing certain UI sections when any 16:9 resolution is used.
  • Improved present interval handling (and VSync state propagation to the Vulkan backend), which has fixed missing text/artwork issues in Re-Volt and 3DMark 2000, as well as potentially other issues in games/applications that toggle VSync state during presentation.
  • Fixed an oversight which caused us to not enable VSync (if it was disabled) when using legacy surface flips.
  • Added an option to force proxied gamma ramp handling (using the DDraw swapchain exclusively), which may help resolve gamma ramp issues caused by alternating DDraw/Vulkan swapchain use.
  • Moved all bridge handling to the common interface/device objects, as well as improved device/interface creation robustness on failures and in OOM situations.
  • Skipped setting any LOD/priority levels on non-MANAGED textures, as per native behavior.
  • Slightly sped up cube texture uploads and initial object creation.
  • Reworked (D3D9) backend pool selection to be more compliant with newly introduced upstream restrictions.
  • Fixed a viewport detachment bug causing null pointer dereferencing, which has fixed crashing in H.E.D.Z. Thanks to @ksc-1 for reporting it.
  • Fixed a similar (but purely theoretical) clipper detachment bug.
  • Skipped applying a gamma ramp when in actual windowed mode (as dictated by our DDraw overlords).
  • Unified all surface description structs into a single backing DDSURFACEDESC2, which reduces memory overhead and slightly speeds up all surface description-related operations.
  • Relaxed validations on surface description refreshing, for a slight performance boost.
  • Improved vertex buffer lock tracking, to account for multiple possible simultaneous locks.
  • Propagated a common shadow surface object across all surface versions, to reduce memory overhead.
  • Slightly improved the IClassFactory-based object initialization path, both in terms of speed and corectness.
  • Reworked our early HWND caching workaround to always use the latest set HWND until we get an actual value from SetCooperativeLevel calls (some games need that in order to be able to properly create a Vulkan swapchain).

D7VK

Quelle: GitHub

PlayingTux – Playing Games on Linux - since 1995.