My game frequently experiences GPU hang crashes when launched after packaging. Checking the logs reveals that it’s waiting for PSO creation. I’m using PSO pre-caching and bundled PSO caching to resolve the issue. However, I’ve encountered some uncertainties:
-
When I use bundled PSO caching in the packaged game, it prompts that Chunk files are not found. Does this indicate that the PSO cache is missing?
-
LogRHI: Display: FShaderPipelineCache starting pipeline cache 'MyProject' and enqueued 999 tasks for precompile. (cache contains 999, 999 eligible, 0 had missing shaders. 0 already compiled). BatchSize 50 and BatchTime 16.000000. LogRHI: Could not open FPipelineCacheFile: ../../../MyProject/Content/PipelineCaches/Windows/MyProject_Chunk5000_PCD3D_SM6.stable.upipelinecache LogRHI: Could not open FPipelineCacheFile: ../../../MOProject/Content/PipelineCaches/Windows/MyProject_Chunk4001_PCD3D_SM6.stable.upipelinecache LogRHI: Could not open FPipelineCacheFile: ../../../MOProject/Content/PipelineCaches/Windows/MyProject_Chunk109_PCD3D_SM6.stable.upipelinecache LogRHI: Could not open FPipelineCacheFile: ../../../MOProject/Content/PipelineCaches/Windows/MyProject_Chunk105_PCD3D_SM6.stable.upipelinecache LogRHI: Could not open FPipelineCacheFile: ../../../MOProject/Content/PipelineCaches/Windows/MyProject_Chunk0_PCD3D_SM6.stable.upipelinecache
-
-
I checked the official Unreal Engine documentation, which states that FShaderPipelineCache::NumPrecompilesRemaining() can be used to get the number of shaders being compiled. But when I load the map, the return value I get is 0.
-
After enabling r.PSOPrecache.Validation=2, I see a lot of PSO PRECACHING MISS every time I launch the packaged game. Does PSO Precache not save the results of previous misses? And where is it stored?
-
As far as I know, drivers also cache PSOs, which is why the -clearPSODriverCache command is needed, but where are they stored?
-
I’ve noticed that Shipping builds save .upiplinecache files in C:\Users\Computer\AppData\Local\MyProject, but Development builds do not. Is this expected behavior?