Grow Up (Ubisoft, 2016) - black screen

Grow Up is a Unity engine game. It does not normally trigger g-sync despite being in a borderless, fullscreen window, so I am using Special K to enable flip presentation and activate g-sync. This is by far my most common use case for Special K.

When I use any version of Special K newer than about 0.9.20, the game renders only a black screen, or more accurately, it’s a hall of mirrors, with anything drawn on top of it (steam UI, Special K UI, cursor) persisting. If I go all the way back to 0.9.20, the game functions, but Special K does not display a startup banner or the UI when the shortcut is pressed. (I tried 0.10.2.1, which failed, but I did not try any versions between these two.)

I hypothesized that it was the UI feature that was breaking it, so I tried disabling the UI by setting EnableCEGUI=false, but I was not successful; the banner still displayed, and the game still drew nothing. Is that not supposed to disable the UI entirely?

The situation is not dire, since the game works with 0.9.20, but the problem has me curious.

Yeah, it sounds like a third-party overlay is doing something weird and that 0.10.x is able to at least render the overlay. SwapChain overrides won’t work correctly until the entire D3D11 device can be hooked.

It’s also possible something’s preventing SwapChain resize, RTSS is known to do that in some D3D9 and D3D12 games, but kind of rare in D3D11.

If you can provide logs, I’ll look at them.

Oh, important note I forgot! Special K normally works fine, EXCEPT when I enable flip presentation. It is that feature specifically that causes Grow Up to stop rendering.

As it turns out, saying 0.9.20 “works” was a bit premature; if I alt+tab, the game refuses to come back and eventually crashes. Oops!

Here’s a log collection using 0.9.20 when it crashed.

logs.zip (15.9 KB)
2021-12-11_013334.zip (15.2 KB)

Here’s a log collection using the latest “test” version, 21.11.21, the more interesting run.

logs.zip (16.2 KB)

And this is 21.11.21 with EnableCEGUI=false.

logs.zip (9.9 KB)

I note in both some instances of text like, “C:\Users*********\Documents\My Mods\SpecialK\CEGUI\bin\Win32\CEGUIRapidXMLParser.dll’ < LoadLibraryA” – I didn’t expect it to try to load DLLs outside of the game folder. I have no idea what version of Special K is installed to my user folder. I was hoping that just writing the DLL into the game folder was an entirely self-contained installation, and now I worry that I might be doing this wrong. I wouldn’t like to be limited to having only one version of Special K usable with all games at a time.
edit: I see that folder gets populated by the DLL even if it’s empty, so I think I have nothing to worry about.

FYI, I don’t have RTSS or any other rendering hooks that I’m aware of, except the Steam overlay.

edit: Installing 21.11.21 to the user profile and then trying this again with 21.11.21 produces the same result of a black screen. I’m both relieved and disappointed. Using SKIF to inject instead of placing the DLL in the game folder makes no difference.

Here’s a weird thing. When I change focus away from the game and then return to it (without Special K), sometimes g-sync activates for just a couple of seconds and synchronizes to a frame rate of about 32 Hz. I’m not sure what to make of that.

I found some useful advice in the Steam discussions. I used dxcpl to force it to use Direct3D 9. Oddly enough, the process still loads the d3d11.dll file in addition to the d3d9.dll one. And now the splash videos don’t play… but I really do not care about those. The game engages g-sync when running this way. However, it has the same alt+tab problem, with the game not restoring if you switch focus back to it. I suppose that’s why SK 0.9 was engaging g-sync; it probably didn’t support D3D 11.