Control - [ SteamAPI Fixes, HDR and Frame Pacing ]

More evidence that somethingā€™s fishy :frowning:

The two weirdest games I know of when it comes to using SteamAPI happen to be made by Remedy. It could all be a coincidence, since I do not really know (or care) who may have been contracted to do the ports.

Pirates may actually have ā€œthe superior versionā€ in this one case, depending on how much or how little of the Steamworks API their crack actually implements :stuck_out_tongue:

Hello! Iā€™d first like to thank you for making and maintaining SpecialK ā€“ itā€™s helped me enjoy some broken game ports in the past and now helps me also smooth-out a lot of my favourite games!

Iā€™m writing here (for the first time), since Iā€™ve identified a specific problem with this version of the .dll that affects only Control: if ā€œUseFlipDiscard=trueā€ then (on my system at least, running a 5700XT with the latest driver) the game crashes after clicking on ā€œplayā€ from steam and after like half a second of black screen. Iā€™ve identified the cvar that causes it through trial and error. Iā€™ve set everything as described in the opening post under ā€œfor best frame pacingā€ and it works only if ā€œUseFlipDiscard=falseā€. I donā€™t think itā€™s a biggie, but this game is the only one that does that ā€“ all other games Iā€™ve tested (Anthem, Far Cry 5, AC Odyssey, Horizon ZD and SOTR) work fine with flip discard.

On a side note, is there a way to completely disable any UI overlay to appear during gameplay? The cvar ā€œEnableCEGUI=falseā€ does not in fact disable the UI overlay (maybe this is not the inteded funcionality for this cvar?), and a very broken game (Anthem) alternates between displaying and then hiding every single widget at the same time on any button press on the keyboard (mouse clicks donā€™t though). So, having the option to totally disable the UI overlay would solve that problem without needing to try to determine why that specific game does that.

I hope I havenā€™t asked too many questions at once. Thank you kindly for the answers in advance!

Special K has two distinct UIs, which unfortunately causes some confusion. CEGUI is used for the text OSD / command console and Steam achievement popups, ImGui is used for everything else.

Realistically there is no reason you would ever need to disable ImGui, it is really polished and tightly integrated into the code. CEGUI, on the other hand, is a big collection of external DLLs with all sorts of compatibility problems ā€“ it has an option to turn it off for a reason :wink:


I suspect in your case, it is not so much disabling FlipDiscard that is needed as much as it is turning the number of backbuffers down.

AMD drivers have always had problems with SwapChains with large numbers of backbuffers, I thought the situation might have improved in recent years but I guess not. Try setting BackBuffer Count to something more conservative like 3 or 4 and Max Device Latency to BackBuffer Count + 1.

It is mostly NVIDIA drivers that benefit tremendously from way more backbuffers than necessary, so you probably will not loose out on anything here.

Thought AMD wrote the driver code to keep pre-rendered frames at 1 whereas NVIDIA only overrides this once users toggle Ultra Low Latency mode.

Technically AMD also has anti-lag and Chill but they do other things Iā€™m not 100% about something in regards to CPU and less GPU related.

EDIT: Effectively this hampers the design of a larger amount of back buffers and then one less for the pre-rendered frames if the back buffer count might as well be 2 - 3 as AMDā€™s drivers forcibly adjust the pre render frame value now.

Thank You for the swift reply! Iā€™ve tried setting PreRenderLimit and BackBufferCount to 3 and 2, and even -1, but the same thing happens, heres the crash log file after that

Can you please not do that in the future? Pastebin.com, or if your account has been active long enough, uploading logs directly to the forum are preferred.

Anyway, judging by that crash I think thereā€™s probably a software incompatibility here. I would need to see dxgi.log or SpecialK.log (whichever injection method you are using).

Iā€™m sorry, I havenā€™t been aware of that functionality. Iā€™ve edited my post now.

The requested specialk log.

No problem,

Thereā€™s actually a third option that slipped my mind.

If you want to keep a giant wall of text off the screen, you can wrap text in

[details="name"] ... [/details]

Okay, I see what I think is the problem. Itā€™s the waitable swapchain, itā€™s not working correctly when the buffers are resized.

I have a nightly build that may fix your problem, itā€™s actually planned for release later today:

Ā Ā Ā 64-bit v 0.11.0.46 Pre-Releae (7.6 MB)

With the provided dll the situation remains the same. Here are the crash and specialk log files generated by the new dll. I hope they are helpful.

That is such a weird thing to seeā€¦ maybe you could try setting ForceWindowed=true in the INI file?

Up until recently it had been my policy to always force games into windowed mode when using flip model, because there are some tricky bits to getting flip model working in fullscreen exclusive. I thought I solved those bits, but it looks like maybe I didnā€™t.

Donā€™t worry about the normal drawbacks that come from windowed mode, they donā€™t exist when flip model is being used.

ForceWindowed indeed did the trick!

It even does not reset PreRenderLimit to 3 anymore (if set higher, like the suggested value of 6).

In the end, youā€™ve solved my problem. I hope the information Iā€™ve provided will also be of some use to you!

P.S. What Youā€™ve written about ImGui ā€“ I see that it works beautifully, and Iā€™m 100% sure itā€™s Anthems fault. Still, is there a way (a compatibility setting perhaps) that could eliminate the described weird behaviour (it clearly has something to do with keyboard input and perhaps any key on the keyboard being interpreted as a key shortcurt for widgets activation)?

Widgets go haywire in all Frostbite engine games, unfortunately. The second they release a good Frostbite game I might have the motivation to fix that problem :stuck_out_tongue: Mass Effect: Andromeda was such a let down.

And yes, thank you for working with me on thisā€¦ I will need to go back to the drawing board and force windowed mode for D3D11 games that use flip model.

I understand.

Iā€™m glad Iā€™ve been able to help! Keep up the good work sir!

Garden Warfare :upside_down_face:

For real, those were genuinely fun games. Always multiplayer though, so iā€™d expect anti-cheat measures.

Perhaps just make it the default, but still let us override for the games that donā€™t have this problem?

I donā€™t think thereā€™s really much benefit to that, to be honest. Turning on flip model in a fullscreen application brings next to no benefit.

If the game already works in fullscreen mode, then a traditional fullscreen mode with no swapchain overrides is going to work just as well and without weird compatibility issues.

This update (SK v 0.11.0.47 nightly pre-release) fixes the problems with 11-bit HDR / MSAA.

Ā Ā Ā Ā Ā SpecialK64.7z (7.6 MB)

It is now safe to enable MSAA + 11-bit HDR. This should also fix NieR: Automataā€™s MSAA mode so that it is compatible with HDR.

1 Like

How to add reshade using ultimate asi loader? I managed to get it work in HZD but here I dont know how to rename the dll

Edit: NVM renaming reshade to d3d11 works

Well, 30 hours of playing later and Iā€™m finally finished with Control and both of its expansions. Itā€™s still as a great game as I remembered, although I understand why many feels that the first expansion, ā€œThe Foundationā€, was more of a ā€œfillerā€ sort of DLC. It provided a few hours of fun for me regardless though.