DXVK 2.0 (A Vulkan-based translation layer for DX 9/10/11)

Discussion in 'General Software and Applications' started by SpajdrEX, Aug 13, 2020.

  1. SpajdrEX

    SpajdrEX Ancient Guru

    Messages:
    3,417
    Likes Received:
    1,673
    GPU:
    Gainward RTX 4070
    Bug fixes and Improvements
    • Added support for new DXGI interfaces introduced in Windows 10 version 1809.
    • Added an option to scale the HUD on high-DPI displays. Refer to the README for details. (#771)
    • Changed generated D3D11 shader code to allow drivers to optimize away texture operations in case no texture is bound.
    • Fixed some old D3D9 games crashing on RADV due to invalid shader code.
    • Fixed Vulkan validation errors when the HUD is active.
    • Optimized away redundant render target clears in some games to potentially increase performance.
    • Indirect draw batching can now work with arbitrary strides. This may slightly reduce the draw call count in Trine 4.
    • EverQuest 2 Fixed broken cloth rendering on Nvidia. (#1832)
    • Trine 4: Fixed rendering issues that would occur on some Nvidia GPUs as well as on RADV. (#1816)
    Note: Build requirements have changed to MinGW 8.0 since new headers are required for the DXGI changes.
    Building on older versions will fail with messages about IDXGIFactory7 not being declared. Do not confuse the MinGW version with the GCC version provided by MinGW.

    https://github.com/doitsujin/dxvk/releases/tag/v1.7.3
     
    Last edited: Feb 6, 2021
    OnnA likes this.
  2. Mufflore

    Mufflore Ancient Guru

    Messages:
    14,730
    Likes Received:
    2,701
    GPU:
    Aorus 3090 Xtreme
    Thanks for making a thread about DXVK.
    Do they intend on supporting DX12?
     
  3. Astyanax

    Astyanax Ancient Guru

    Messages:
    17,038
    Likes Received:
    7,379
    GPU:
    GTX 1080ti
    Down the track
     
  4. JonasBeckman

    JonasBeckman Ancient Guru

    Messages:
    17,564
    Likes Received:
    2,961
    GPU:
    XFX 7900XTX M'310
    Impressive how this actually helps both AMD and NVIDIA even on Windows and even in a few D3D11 cases even for NVIDIA, nice to see more updates too although it might be a while before the .148/.149 Vulkan extensions land in the release display drivers.
    (The NVIDIA VLK beta driver might be up to almost the latest though but losing a few other changes if it's based on a slightly earlier 451.xx branch driver though it was still rebased to the 451.xx code.)

    Wrapping D3D12 would be a interesting comparison too just for trying it though for these low-level ones I suppose it's even more important that the port itself and coding is done right. :D
     

  5. RzrTrek

    RzrTrek Guest

    Messages:
    2,547
    Likes Received:
    741
    GPU:
    -
    All that's missing right now is MESA 20.2 on my end.
     
  6. SpajdrEX

    SpajdrEX Ancient Guru

    Messages:
    3,417
    Likes Received:
    1,673
    GPU:
    Gainward RTX 4070
    Version 1.7.2

    Bug fixes and Improvements

    Fixed a major D3D9 regression that would cause crashes in many games.
    Fixed D3D9 crashes on AMDVLK due to invalid Vulkan API usage (#1742).
    Work around stack overflows in some 32-bit D3D9 games.
    Added workarounds for rendering issues on AMD drivers in some Unity Engine games.
    Work around Unicode support on Windows being garbage (PR #1761).
    Log file creation can now be disabled by setting DXVK_LOG_PATH=none, but logs will still be printed to stderr (#1743).
    Age of Empires II HD: Fixed video playback (#1726).
    Baldur's Gate 3: Fixed crash after character selection screen in D3D11 mode.
    Final Fantasy XIV: Improved stability on recent Nvidia drivers.
    Just Cause 3: Work around a game bug causing flickering terrain on RADV (#1553).
    Marvel's Avengers: Fixed spurious crashes due to invalid resource copies.
    Need for Speed Heat: Fixed some Vulkan validation errors.
    PGA TOUR 2K21: Fixed Vulkan validation errors and potential crashes.
    Trails in the Sky SC: Fixed fog rendering (#1771).

    https://github.com/doitsujin/dxvk/releases
     
    JonasBeckman and MerolaC like this.
  7. SpajdrEX

    SpajdrEX Ancient Guru

    Messages:
    3,417
    Likes Received:
    1,673
    GPU:
    Gainward RTX 4070
    Version 1.7.3

    Bug fixes and Improvements
    Added support for new DXGI interfaces introduced in Windows 10 version 1809.
    Added an option to scale the HUD on high-DPI displays. Refer to the README for details. (#771)
    Changed generated D3D11 shader code to allow drivers to optimize away texture operations in case no texture is bound.
    Fixed some D3D9 games crashing on RADV due to invalid shader code.
    Fixed Vulkan validation errors when the HUD is active.
    Optimized away redundant render target clears in some games to potentially increase performance.
    Indirect draw batching can now work with arbitrary strides. This may slightly reduce the draw call count in Trine 4.
    EverQuest 2 Fixed broken cloth rendering on Nvidia. (#1832)
    Trine 4: Fixed rendering issues that would occur on some Nvidia GPUs as well as on RADV. (#1816)

    https://github.com/doitsujin/dxvk/releases
     
    Valken likes this.
  8. Valken

    Valken Ancient Guru

    Messages:
    2,924
    Likes Received:
    901
    GPU:
    Forsa 1060 3GB Temp GPU
    Awesome. Is it possible to use this with RESHADE at the same time? I don't see any ini files from it to inject another dll. Vice versa, I don't see the ability for reshade to inject another to covert a DX games to Vulkan for better performance in Windows.
     
  9. Astyanax

    Astyanax Ancient Guru

    Messages:
    17,038
    Likes Received:
    7,379
    GPU:
    GTX 1080ti
    install reshade as a vulkan layer.
     
  10. Andy_96

    Andy_96 Active Member

    Messages:
    68
    Likes Received:
    29
    GPU:
    Gig-te 4090 Aero OC
    So, my results with 2 games and ASYNC DXVK win10
    Heroes Of The Storm went to stable 150-200+ fps (prev was 110-120 or lower (zerg map))
    It means that starcraft 2 would benefit too, as this old engine prefers higher speed than number of cores
    Sunset overdrive also better fps across the board + no stuttering
    RX 5700
    Ryzen 7 3800X
    PS: mod pls, add link and instruction from this post
    https://forums.guru3d.com/threads/r...020-edition-21-2-1.436539/page-3#post-5884261
     

  11. Krteq

    Krteq Maha Guru

    Messages:
    1,132
    Likes Received:
    766
    GPU:
    MSI RTX 3080 WC
    Tested few engines/games on RX Vega + DXVK 1.7.3 Async build on Windows 10 20H2 -> nice gains + better frametimes

    List:
    • UE3/4 - Borderlands (1, 2, Pre-Sequel), Mass Effect 1-3, The Vanishing of Ethan Carter, Homefront etc.
    • Cryengines - Crysis series, Kingdom Come: Deliverance, Homefront: The Revolution etc.
    • Frostbite - Mass Effect Andromeda, Dragon Age: Inquisition, Need for Speed (reboot series) etc.
    • Creation Engine - Elder Scrolls series, Fallout 3 - 4 etc.
    • AnvilNext Engine - Assassin's Creed series
    • Dunia Engine - FarCry (2 - 5)
    • Aurora/RED egine - Witcher 1 - 3
    • X-ray engine - STALKER series
    • VOID engine - Dishonored 2, Dishonored: Death of Outsider, Prey, Prey - Typhoon hunter

    DXVK 1.7.3. Async prebuilt binaries - https://github.com/Sporif/dxvk-async/files/5649367/dxvk-async-1.7.3.tar.gz

    Don't forget to add "DXVK_ASYNC = 1" sysvar to enable/use DXVK async functionality
    [​IMG]
     
    Last edited: Feb 4, 2021
    OnnA, Cryio and JonasBeckman like this.
  12. PhazDelta

    PhazDelta Master Guru

    Messages:
    936
    Likes Received:
    1,091
    GPU:
    RX6900XT Strix LC
    GTA 4 run super smooth WOW


    [​IMG]
     
    cucaulay malkin and Cryio like this.
  13. Astyanax

    Astyanax Ancient Guru

    Messages:
    17,038
    Likes Received:
    7,379
    GPU:
    GTX 1080ti
    using async on Blizzard games is how you get banned.
     
    BlindBison likes this.
  14. GREGIX

    GREGIX Master Guru

    Messages:
    856
    Likes Received:
    222
    GPU:
    Inno3d 4090 X3
    Can't make KDC to work, any idea?
     
  15. X7007

    X7007 Ancient Guru

    Messages:
    1,879
    Likes Received:
    74
    GPU:
    ZOTAC 4090 EXT AMP
    wow, I didn't know there is such a thing....
     

  16. Andy_96

    Andy_96 Active Member

    Messages:
    68
    Likes Received:
    29
    GPU:
    Gig-te 4090 Aero OC
    played few games, no ban
    should I wait for it?:)
     
  17. X7007

    X7007 Ancient Guru

    Messages:
    1,879
    Likes Received:
    74
    GPU:
    ZOTAC 4090 EXT AMP
    Many games doesn't work.
    I added the 2 sys commands. DXVK_ASYNC 1 and DXVK_HUD Full
    I added the D3D11.dll and dxgi.dll, some crashing, some just freeze, how do I know what works and what not?
     
  18. KissSh0t

    KissSh0t Ancient Guru

    Messages:
    13,948
    Likes Received:
    7,767
    GPU:
    ASUS 3060 OC 12GB
    Could you please explain the adding of "DXVK_ASYNC = 1" sysvar, I do not understand what you are showing / this part at all.
     
  19. Krteq

    Krteq Maha Guru

    Messages:
    1,132
    Likes Received:
    766
    GPU:
    MSI RTX 3080 WC
    Control Panel -> System -> Advanced system settings -> Environment Variables -> click "New..." under System variables

    Variable name: DXVK_ASYNC
    Variable value: 1

    [​IMG]

    For DXVK_HUD configuration values, please check DXVK readme - https://github.com/doitsujin/dxvk
     
    Last edited: Feb 4, 2021
  20. Astyanax

    Astyanax Ancient Guru

    Messages:
    17,038
    Likes Received:
    7,379
    GPU:
    GTX 1080ti
    most games work, some with issues.

    also, dxvk.conf
    Code:
    # Create the VkSurface on the first call to IDXGISwapChain::Present,
    # rather than when creating the swap chain. Some games that start
    # rendering with a different graphics API may require this option,
    # or otherwise the window may stay black.
    #
    # Supported values: True, False
    
    # dxgi.deferSurfaceCreation = False
    # d3d9.deferSurfaceCreation = False
    
    
    # Enforce a stricter maximum frame latency. Overrides the application
    # setting specified by calling IDXGIDevice::SetMaximumFrameLatency.
    # Setting this to 0 will have no effect.
    #
    # Supported values : 0 - 16
    
    # dxgi.maxFrameLatency = 0
    # d3d9.maxFrameLatency = 0
    
    
    # Override PCI vendor and device IDs reported to the application. Can
    # cause the app to adjust behaviour depending on the selected values.
    #
    # Supported values: Any four-digit hex number.
    
    # dxgi.customDeviceId = 0000
    # dxgi.customVendorId = 0000
    
    # d3d9.customDeviceId = 0000
    # d3d9.customVendorId = 0000
    
    
    # Report Nvidia GPUs as AMD GPUs by default. This is enabled by default
    # to work around issues with NVAPI, but may cause issues in some games.
    #
    # Supported values: True, False
    
    # dxgi.nvapiHack = True
    
    
    
    # Override maximum amount of device memory and shared system memory
    # reported to the application. This may fix texture streaming issues
    # in games that do not support cards with large amounts of VRAM.
    #
    # Supported values: Any number in Megabytes.
    
    # dxgi.maxDeviceMemory = 0
    # dxgi.maxSharedMemory = 0
    
    
    # Override back buffer count for the Vulkan swap chain.
    # Setting this to 0 or less will have no effect.
    #
    # Supported values: Any number greater than or equal to 2.
    
    # dxgi.numBackBuffers = 0
    
    
    # Overrides synchronization interval (Vsync) for presentation.
    # Setting this to 0 disables vertical synchronization entirely.
    # A positive value 'n' will enable Vsync and repeat the same
    # image n times, and a negative value will have no effect.
    #
    # Supported values: Any non-negative number
    
    # dxgi.syncInterval   = -1
    # d3d9.presentInterval = -1
    
    
    # True enables the mailbox present mode in case regular Vsync is disabled.
    # This should avoid tearing, but may be unsupported on some systems
    # or require setting dxgi.numBackBuffers to a higher value in order
    # to work properly.
    #
    # False enables the relaxed fifo present mode in case regular Vsync is enabled.
    # This should result in tearing but reduce stutter if FPS are too low,
    # but may be unsupported on some systems.
    #
    # Please do not report issues with this option.
    #
    # Supported values: Auto, True, False
    
    # dxgi.tearFree = Auto
    # d3d9.tearFree = Auto
    
    
    # Performs range check on dynamically indexed constant buffers in shaders.
    # This may be needed to work around a certain type of game bug, but may
    # also introduce incorrect behaviour.
    #
    # Supported values: True, False
    
    # d3d11.constantBufferRangeCheck = False
    
    
    # Assume single-use mode for command lists created on deferred contexts.
    # This may need to be disabled for some applications to avoid rendering
    # issues, which may come at a significant performance cost.
    #
    # Supported values: True, False
    
    # d3d11.dcSingleUseMode = True
    
    
    # Override the maximum feature level that a D3D11 device can be created
    # with. Setting this to a higher value may allow some applications to run
    # that would otherwise fail to create a D3D11 device.
    #
    # Supported values: 9_1, 9_2, 9_3, 10_0, 10_1, 11_0, 11_1
    
    # d3d11.maxFeatureLevel = 11_1
    
    
    # Overrides the maximum allowed tessellation factor. This can be used to
    # improve performance in titles which overuse tessellation.
    #
    # Supported values: Any number between 8 and 64
    
    # d3d11.maxTessFactor = 0
    
    
    # Enables relaxed pipeline barriers around UAV writes.
    #
    # This may improve performance in some games, but may also introduce
    # rendering issues. Please don't report bugs with the option enabled.
    #
    # Supported values: True, False
    
    # d3d11.relaxedBarriers = False
    
    
    # Overrides anisotropic filtering for all samplers. Set this to a positive
    # value to enable AF for all samplers in the game, or to 0 in order to
    # disable AF entirely. Negative values will have no effect.
    #
    # Supported values: Any number between 0 and 16
    
    # d3d11.samplerAnisotropy = -1
    # d3d9.samplerAnisotropy  = -1
    
    
    # Declares vertex positions as invariant in order to solve
    # potential Z-fighting issues at a small performance cost.
    #
    # Supported values: True, False
    
    # d3d11.invariantPosition = False
    # d3d9.invariantPosition = False
    
    
    # Replaces NaN outputs from fragment shaders with zeroes for floating
    # point render target. Used in some games to prevent artifacting.
    #
    # Supported values: True, False
    
    # d3d11.enableRtOutputNanFixup = False
    
    
    # Clears workgroup memory in compute shaders to zero. Some games don't do
    # this and rely on undefined behaviour. Enabling may reduce performance.
    #
    # Supported values: True, False
    
    # d3d11.zeroWorkgroupMemory = False
    
    
    # Sets number of pipeline compiler threads.
    #
    # Supported values:
    # - 0 to automatically determine the number of threads to use
    # - any positive number to enforce the thread count
    
    # dxvk.numCompilerThreads = 0
    
    
    # Toggles raw SSBO usage.
    #
    # Uses storage buffers to implement raw and structured buffer
    # views. Enabled by default on hardware which has a storage
    # buffer offset alignment requirement of 4 Bytes (e.g. AMD).
    # Enabling this may improve performance, but is not safe on
    # hardware with higher alignment requirements.
    #
    # Supported values:
    # - Auto: Don't change the default
    # - True, False: Always enable / disable
    
    # dxvk.useRawSsbo = Auto
    
    
    # Toggles early discard.
    #
    # Uses subgroup operations to determine whether it is safe to
    # discard fragments before the end of a fragment shader. This
    # is enabled by default on all drivers except RADV and Nvidia.
    # Enabling this may improve or degrade performance depending
    # on the game and hardware, or cause other issues.
    #
    # Supported values:
    # - Auto: Don't change the default
    # - True, False: Always enable / disable
    
    # dxvk.useEarlyDiscard = Auto
    
    
    # Sets enabled HUD elements
    #
    # Behaves like the DXVK_HUD environment variable if the
    # environment variable is not set, otherwise it will be
    # ignored. The syntax is identical.
    
    dxvk.hud = pipelines
    
    
    # Reported shader model
    #
    # The shader model to state that we support in the device
    # capabilities that the applicatation queries.
    #
    # Supported values:
    # - 1: Shader Model 1
    # - 2: Shader Model 2
    # - 3: Shader Model 3
    
    # d3d9.shaderModel = 3
    
    
    # Evict Managed on Unlock
    #
    # Decides whether we should evict managed resources from
    # system memory when they are unlocked entirely.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.evictManagedOnUnlock = False
    
    
    # DPI Awareness
    #
    # Decides whether we should call SetProcessDPIAware on device
    # creation. Helps avoid upscaling blur in modern Windows on
    # Hi-DPI screens/devices.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.dpiAware = True
    
    
    # Strict Constant Copies
    #
    # Decides whether we should always copy defined constants to
    # the UBO when relative addressing is used, or only when the
    # relative addressing starts a defined constant.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.strictConstantCopies = False
    
    
    # Strict Pow
    #
    # Decides whether we have an opSelect for handling pow(0,0) = 0
    # otherwise it becomes undefined.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.strictPow = True
    
    
    # Lenient Clear
    #
    # Decides whether or not we fastpath clear anyway if we are close enough to
    # clearing a full render target.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.lenientClear = False
    
    
    # Max available memory
    #
    # Changes the max initial value used in tracking and GetAvailableTextureMem
    # Value in Megabytes
    #
    # Supported values:
    # - Any int32_t
    
    # d3d9.maxAvailableMemory = 4096
    
    
    # Force enable/disable floating point quirk emulation
    #
    # Force toggle anything * 0 emulation
    # Tristate
    # Supported values:
    # - True/False
    
    # d3d9.floatEmulation =
    
    
    # Enable dialog box mode
    #
    # Changes the default state of dialog box mode.
    # *Disables* exclusive fullscreen when enabled.
    #
    # Supported values:
    # - True, False: Always enable / disable
    
    # d3d9.enableDialogMode = False
    
    # Overrides the application's MSAA level on the swapchain
    #
    # Supported values: -1 (application) and 0 to 16 (user override)
    
    # d3d9.forceSwapchainMSAA  = -1
    
    
    # Long Mad
    #
    # Should we make our Mads a FFma or do it the long way with an FMul and an FAdd?
    # This solves some rendering bugs in games that have z-pass shaders which
    # don't match entirely to the regular vertex shader in this way.
    #
    # Supported values:
    # - True/False
    
    # d3d9.longMad = False
    
    #Async Pipelines
    #
    # Configuration settings for the DXVK Async patch
    
    # Supported Values are True/False or Numerical to the maximum coresin the machine.
    
    dxvk.enableAsync = true
    #dxvk.numAsyncThreads = 6
    
     
    Cryio likes this.

Share This Page