ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.2k stars 1.06k forks source link

[379720] Doom 2016 common issue with Razer-ChromaSDK #896

Open Riesi opened 6 years ago

Riesi commented 6 years ago

Hello, I just want to mention an issue that a lot of people are having with this game. ID-Software added support for the Razer-Chroma effects in one of their updates for the game, but the implementation is really flawed. You get the option to enable or disable the effect in game. But both have their own problem in wine, which results in one or two CPU cores stuck at 100% workload. This can result in unplayable stutter and bad frametimes.

Chroma enabled

With the effect enabled the dll isn't able to load the Chroma animations the game tells it to load. This results in a spamming of load animation, which creates the performance impact.

Chroma disabled

You think that disabling the effect will help, but no it just moves the problem to somewhere else. With this option the game still calls the Chroma dll functions, but fails at the invocation of for example ChromaSDKPlugin::CreateEffectNone2D. This gets also spammed by the game and results in the same performance issue.

My workaround

This is just a fork of the original dll that modifies the exported functions to simple return calls. The Chroma effects don't work with this dll, but it fixes the performance issue. https://github.com/Riesi/CChromaEditor

The CChromaEditor is licensed under GPL3 as you can see in the eula: https://github.com/razerofficial/CChromaEditor/blob/master/eula.txt

Here some reddit discussions about bad doom performance where my dll fixed the issue: Doom 2016 Chroma Fix (CChromaEditorLibrary.dll) Doom performance

I hope that I described the problem understandable and that it's possible to issue some kind of fix. Keep the great work up!

Kind regards, Riesi

dreamer commented 5 years ago

I saw no issue when testing Doom (and I am using Chroma-enabled keyboard), but maybe game ran just good enough on my system. However, it may be affecting performance in Quake Champions (also includes Chroma integration and performance is definitely worse on Linux than on Windows). I will try to test it with and without fake .dll.

Riesi commented 5 years ago

Very interesting I could not reproduce the CPU issue with proton anymore, but it still happens on Lutris. The Chroma errors are still occurring in proton though as you can see in my log. I am not sure what they have changed. steam-379720.log

mercuriete commented 4 years ago

I have this in my logs:

ChromaSDKPlugin::CreateEffectNone1D Invoke.
ChromaSDKPlugin::CreateEffectNone1D Result=-1.
ChromaSDKPlugin::CreateEffectNone1D Invoke.
ChromaSDKPlugin:romaSDKPlugin CreateKeypadEffect method is not set!
ChromaSDKPlugin CreateMouseEffect method is not set!
ChromaSDKPlugin CreateMousepadEffect method is not set!
OpenAnimation: Failed to open animation! Z:\mnt\Datos\Steam\Linux\steamapps\common\DOOM\base\chroma_effect_files\ChainsawKill
PluginOpenAnimation: Animation is null! name=Z:\mnt\Datos\Steam\Linux\steamapps\common\DOOM\base\chroma_effect_files\ChainsawKill
PluginIsPlayingName: Animation not found! Z:\mnt\Datos\Steam\Linux\steamapps\common\DOOM\base\chroma_effect_files\ChainsawKillChromaSDKPlugin CreateChromaLinkEffect method is not set!

I have lot of stutter. Someone on proton team is investigating this issue? its seems it happens to all people.

mercuriete commented 4 years ago

@Riesi Thanks for your work Now my frametime is perfect stable.

Please could someone inside valve create a workaround for people that distribute the Riesi's dll instead of the one is in Doom folder?

In my configuration makes from unplayable to perfect smooth frametimes.

Thanks.

MasterCATZ commented 4 years ago

something between OCT ( last time I played ) and NOW ( Dec 13th) , has brought this issue back for me in Doom 2016 , it is disabled but still trying to run making the game impossible to play ,, touch mouse 1fps .. wiped my config folder started fresh , last time it was just a matter of disabling razor chroma and going from opengl to Vulkan and everything was butter smooth , now its just a laggy pile of steam that takes 30 mins to just change a setting

OpenAnimation: Z:\ZFS3WAY\SteamLibrary\steamapps\common\DOOM\base\chroma_effect_files\ChainsawKill ChromaSDKPlugin::CreateEffectNone1D Invoke. ChromaSDKPlugin::CreateEffectNone1D Result=-1. ChromaSDKPlugin::CreateEffectNone1D Invoke. ChromaSDKPlugin::CreateEffectNone1D Result=-1. ChromaSDKPlugin::CreateEffectNone2D Invoke. ChromaSDKPlugin::CreateEffectNone2D Result=-1. ChromaSDKPlugin::CreateEffectNone2D Invoke. ChromaSDKPlugin::CreateEffectNone2D Result=-1. ChromaSDKPlugin::CreateEffectNone2D Invoke. ChromaSDKPlugin::CreateEffectNone2D Result=-1. ChromaSDKPlugin::CreateEffectNone1D Invoke. ChromaSDKPlugin::CreateEffectNone1D Result=-1. OpenAnimation: Z:\ZFS3WAY\SteamLibrary\steamapps\common\DOOM\base\chroma_effect_files\ChainsawKill

mercuriete commented 4 years ago

@MasterCATZ Hi same issue. go to @Riesi repository: https://github.com/Riesi/CChromaEditor/releases download the zip rename CChromaEditorLibrary.dll to CChromaEditorLibrary.dll.bak on Doom folder copy CChromaEditorLibrary.dll and paste in the Doom2016 folder. (do it everytime that steam repairs the folder and everytime steam updates the game)

You will improve from non playable to perfect frametimes.

I have a 1000HZ mouse and it was a nightmare. changing the settings of the mouse improve the frametimes a little bit. but the ultimate solution is @Riesi 's dll

Hope you fix and enjoy the game.

EDIT: The real problem, I think, is that the game is writing to stdout. Maybe is a proton/wine issue? Why writing a stdout blocks the main thread? Maybe someone from proton can check if this is a bug from wine side.

mozo78 commented 3 years ago

Now there's a CChromaEditorLibrary.dll problem with Crysis Remastered but there is a x64 variant. Can we get a x64 workaround please?

mercuriete commented 3 years ago

@mozo78 open an issue to @Riesi 's repository: https://github.com/Riesi/CChromaEditor/issues

I don't have that game, so I can't test anything.