In case you wanted to know a few reasons on why Starfield is so unoptimized.
Vkd3d (the dx12->vulkan translation layer) developer has put up a change log for a new version that is about to be (
released here) and also a pull request with more information about what he discovered about all the awful things that starfield is doing to GPU drivers (
here).
Basically:
- Starfield allocates its memory incorrectly where it doesn't align to the CPU page size. If your GPU drivers are not robust against this, your game is going to crash at random times.
- Starfield abuses a dx12 feature called ExecuteIndirect. One of the things that this wants is some hints from the game so that the graphics driver knows what to expect. Since Starfield sends in bogus hints, the graphics drivers get caught off gaurd trying to process the data and end up making bubbles in the command queue. These bubbles mean the GPU has to stop what it's doing, double check the assumptions it made about the indirect execute and start over again.
- Starfield creates multiple `ExecuteIndirect` calls back to back instead of batching them meaning the problem above is compounded multiple times.