Missing Geometry on Spagonia on systems without Copy Queue Overlap
It's a known issue that apparently, on systems that copy queues seem to be unable to overlap with graphics work, the current scheme to upload assets will be much slower than usual.
This results in a stage like Rooftop Run Act 1 loading assets so slowly that geometry tends to be missing.
This issue seems to be very common place on systems that use integrated GPUs that don't properly support copy queues. Even if the copy queue is reported to be supported, it works only on one hardware queue internally.
Skyth has a task assigned to work on UMA transfers that will significantly alleviate the issue for hardware that supports it: https://github.com/hedge-dev/UnleashedRecomp/issues/991
However, if this fails to address the issue for more users, we may need a different workaround and logic that makes the copy queue logic resilient against this behavior. Our current hope is that adding this feature will alleviate the issue, so keep an eye out for that feature in the next version that has it.
If you've been redirected here, you don't need to comment on the issue: simply know that the issue is being looked into and will require some time and effort to address it.
This is probably just a driver quirk, but in case it isn't or it can help a user I noticed this bug behaves weirder than I expected. Time to load Rooftop Run Act 1 from world map on UHD 620 from HDD, restarting game every round of 3
- DX12 windowed: 11.5, 19, 21.5s
- DX12 fullscreen: 11.5, 21, 21s
- Vulkan windowed: 14s, 16.5, 15s
- Vulkan fullscreen: 75s, 76s
The backend differences seem plausible enough, but the second load being different on DX12 and fullscreen slowing down vulkan seems strange to me.
In the actual level seems similar, vulkan fullscreen is trivial to outrun. And I think second run of DX12 is marginally worse, but I'm not consistent enough to be confident in that. And I never managed to outrun the load on vulkan windowed for some reason.
And I never managed to outrun the load on vulkan windowed for some reason.
The underlying problem is that if the GPU does not support asynchronous copy queues properly, it'll be tied to your framerate. The lower frametimes your GPU has internally (windowed), the faster it'll load. It's just a design flaw of the logic that was made to support loading assets faster for this port: it works great if the driver/hardware does what it's supposed to do, but has a catastrophic result if the driver takes the easy way out and just shoves the work on the main queue.
I was maximizing the window, so the pixel count difference was very small and put DX12 windowed and fullscreen too close to say. But it seems strange for vulkan fullscreen to be horribly bugged while vulkan windowed is either not bugged or far better. And I still don't see why second load would be worse for one backend only.
And for specifically comparing vulkan window and DX12 window, vulkan framerate is close to DX12 on this GPU, so that doesn't explain the better windowed performance (though maybe vulkan just needs fewer iterations to copy everything?)
We're fairly confident in the explanation I gave above at this point and you'd see it reflected if we added measurements to the average transfer time when the issue hits. I don't think we should deviate into investigating other possible causes until this one is solved.
Check the notice on the OP for a Pull Request that attempts to fix the problem.
Check the notice on the OP for a Pull Request that attempts to fix the problem.
PR build has improved the situation big time (using Vulkan), Eggmanland no longer takes forever to load at 100% resolution for me. The issue is not completely fixed, however, I am still observing significantly longer loading times in Rooftop Run Day Act 1 and Savannah Citadel Day Act 3 at 100% resolution although they are much better than they used to be.
PR build has improved the situation big time (using Vulkan), Eggmanland no longer takes forever to load at 100% resolution for me. The issue is not completely fixed, however, I am still observing significantly longer loading times in Rooftop Run Day 1 and Savannah Citadel Day Act 3 at 100% resolution although they are much better than they used to be.
The one part we're missing is texture transfers, this one only does buffers. This PR will not cover that due to the complexity of doing it in Vulkan. We'll probably merge this one first and then improve that one later.
PR build has improved the situation big time (using Vulkan) for me.