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.
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-saoDXVK-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.