This post is a work-in-progress follow-up to Arkham Quixote - while this disclaimer is up expect it to be frequently updated. It is mainly a response to the frequently asked questions in the reddit discussion.
Since Arkham Knight’s performance issues are related to memory allocation, and memory allocators are fickle things affected by many properties of the system in question (including even what apps you’ve used and how you’ve used them since reboot), I decided to share a copy of the modified DXGI DLL with Tracy enabled. Usual caveats apply: Disable GameWorks, and any overlays other than the Steam overlay. I also uploaded a copy of the Tracy executable compatible with this DLL, usage instructions can be found in the Tracy manual.
You can use this version to explore Arkham Knight’s D3D performance, and I also added a way to compare performance between versions with texture and buffer pooling enabled and disabled: if you place a file called
nopool, without an extension, in the same directory as the Arkham Knight executable
BatmanAK.exe the DLL will disable the pooling behavior. Here’s two sample traces from a run without pooling (left) and with pooling (right) on my system:
March 24th: I’ve fixed issues with ReShade that prevented it from hooking swapchains on Optimus systems, like my own, and can now get a better view of per-frame timing. Now I can isolate frames that missed their 16ms budget and take a closer look, like this one:
Looks like they’re also calling
CreateBuffer a ton, and some calls are taking over 1ms - and the buffers are used in the same frame, so the budget is easily blown. I’ll have to add buffer pooling code too it seems.