A critical stability issue has been identified in Unreal Engine versions 5.5 and above, affecting projects running on Nvidia hardware, particularly with recent driver versions. This post describes a way to integrate a fix for this issue.
https://dev.epicgames.com/community/learning/knowledge-base/DBOL/tech-note-fix-for-pso-management-issue-on-nvidia-hardware-in-unreal-engine-5-5
When does this get taken updated with vendors like Wildcard and nvidia?
The Game ARK ASa is having major issues with this due to the pipelines.
In addition to the CL mentioned in the Tech Note above, we also recommend integrating the following change to defer the deletion of the PSOs and avoid potential hitching - in some cases over 100ms.
Hi,
For stability reasons, retaining too many PSO objects at the driver level may lead to instability issues. However, the downside is that once the low-level D3D12 PSOs are released, encountering the same PSOs again later may require recreating them, which can cause runtime hitches.
One possible mitigation we are considering is enabling:
D3D12.PSO.DriverOptimizedDiskCache=1
Our idea is to keep:
D3D12.PSO.KeepUsedPSOsInLowLevelCache=0
This would still allow live low-level PSO objects to be released, while using the driver-optimized disk cache / ID3D12PipelineLibrary path to reduce the cost of recreating those PSOs later.
We have a few questions:
When KeepUsedPSOsInLowLevelCache is disabled, would enabling D3D12.PSO.DriverOptimizedDiskCache be considered a safe way to reduce PSO recreation hitches while also avoiding this driver instability issue? I am concerned that ID3D12PipelineLibrary may internally retain some form of driver-level PSO data, such that even after the actual ID3D12PipelineState objects have been released, it could still contribute to the same NVIDIA PSO management / stability issue.
If DriverOptimizedDiskCache is not recommended in this scenario, is there another recommended approach that can both reduce hitches caused by PSO recreation and avoid long-term accumulation of live D3D12 PSO objects?
Thank you very much.