Skip to content

Whitelist performance focused DXVK forks dlls to address AMD driver timeout/crash and improve general experience #79

Description

@BitRotJoey

Summary

The current supported version of DXVK 32-bit v2.7.1 can resolve a driver timeout issue that AMD GPU users regularly experience, however due to shader compilation it can greatly degrade the experience into a stuttering mess.

I am proposing to whitelist both the Windows and Linux DLLs for the following project releases to solve this issue.

Why?

AMD driver timeouts are seemingly caused by AMD hardcoding fixes for Black Ops 1 to two different .exe files; BlackOps.exe and BGamerT5.exe. Because of the way that the Plutonium Bootstrapper executable works, the fixes don't get applied as needed and therefore you experience the timeout problem.

By using a fork of DXVK that is latency and performance focused, this allows the problem to be sidestepped while sacrificing minimal performance, and actually leading to better frame pacing than native DX9 in my testing.

Proposed solution

Whitelist the necessary DLLs in the most recent releases of the following Github projects:

https://github.com/Digger1955/dxvk-gplall
https://github.com/Digger1955/dxvk-sao

DXVK-GPLALL offers the best user experience, giving people the option to additionally toggle optional latency lowering tweaks which may benefit in multiplayer scenarios, at the cost of higher resource usage.
DXVK-SAO has less ideal latency/performance, but supports a larger range of hardware as it only needs the driver to be Vulkan 1.1 compliant.

There are different builds for optimal performance on different CPU architectures, so it is probably best to whitelist each version for both Windows and Linux. I'm not an expert on this topic, but they appear to be broken down as follows:

SSE2 = Recommended for older CPUs that don't support newer instruction sets. High compatibility, lower performance.
SSE4.2 = Recommended for CPUs that support SSE4.2 but not AVX2. It is meant for newer Intel CPUs (i.e. Intel64) or other generic CPUs.
AVX2 = Recommended for modern CPUs (i.e. AMD Zen 3 / Intel Skylake or newer). Because AVX2 can perform at roughly twice the instruction completion speed of SSE4.2, this is recommended as the best option if your system supports it.

Only the 32-bit DX9 DLL versions of each build would need to be whitelisted, as others would not be applicable to any games under the Plutonium launcher.

Affected game(s)

BO2 Multiplayer (T6MP), BO2 Zombies (T6ZM), MW3 Multiplayer (IW5MP), BO1 Multiplayer (T5MP), BO1 Zombies (T5SP), WaW Multiplayer (T4MP), WaW Co-Op/Zombies (T4SP)

Affected component(s)

Client (game)

Additional information

As AMD GPU adoption has been growing in popularity, I believe it would be a good idea to support these files as a workaround for Black Ops 1 users, as well as providing an overall performance/frame pacing jump for other games under the Plutonium umbrella.

I have tested these instruction converters in LAN mode with Shader Warming disabled and Borderless Windowed enabled, and the results appear to be very good.

Edit: Removed request to add DXVK-SAO as it appears to not be a good fit for BO1 overall, the currently supported DXVK 32-bit v2.7.1 requires a minimum of Vulkan 1.3 so this would be promising additional compatibility the original did not, and DXVK-SAO cannot. Developer of DXVK-SAO explained that this issue is unlikely to be resolved anytime soon due to limitations with Vulkan 1.1 and DXVK-GPLALL being the primary development focus.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    component: clientIssue related to the game clientfeatureRequest for new featuregame: IW5Issue related to IW5game: T4Issue related to T4game: T5Issue related to T5game: T6Issue related to T6

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions