UE 5.7 PSO Cache Hash Mismatch: "PSO from the cache was not found"

Since migrating to Unreal Engine 5.7, we are encountering an issue where pre-gathered PSO caches included in the package are seemingly ignored or mismatched.

The log repeatedly shows: Warning: PSO from the cache was not found in the cache!, which forces the engine to re-collect PSOs at runtime causing hitches.

We have tried the following steps to resolve this:

  1. Gathered new PSOs using the 5.7 build.

  2. Performed a completely clean wipe (deleted Saved, Intermediate, and Build folders).

  3. Repackaged with the freshly gathered .spc file.

However, the issue persists. Even if we include the newly collected PSOs, the engine still reports them as “not found” in the subsequent package, creating an infinite loop of re-gathering.

We did not have this issue in UE 5.6, and our packaging environment/workflow has not changed since the migration.

Has anyone else experienced this issue in 5.7? Is there a known solution or workaround?

// Example Log
LogRHI: Warning: PSO from the cache was not found in the cache! PSOHash: 348912424

This is a bug in U5.7. I used the source code version, so I fixed it myself.

I made some modifications on the UE dev-5.7 branch of GitHub, but I’m not sure if they have noticed my submission request.

Thank you for getting back to me, despite the delay. Could you please explain what the issue was and how it was resolved? Also, please let me know how I can review the changes you submitted.

Sorry, I don’t usually frequent this forum and my responses are not timely. My English is not very good. Please forgive me. This is the solution I have developed for the failure of PSO collection in UE5.7. It has been tested and verified to be effective. There is still a PSO crash issue in the CustomDepthRendering.cpp file of UE5.7. I have also resolved it, but it is not part of our discussion, so it is not presented here.