Possible oversights when variable rate shading was added to PSO cache

Hi,

I could be wrong, but there might be some issues with https://github.com/EpicGames/UnrealEngine/commit/0a1a5e480501764fbeb2c12905bc58ee8a323d79

Firstly, GetTypeHash(const FPipelineCacheFileFormatPSO &Key) was modified to account for the new fields, but they are not serialized because FPipelineCacheFileFormatCurrentVersion was not updated to latest version (VariableRateShading).

There’s another issue in FShaderPipelineCacheTask::Precompile, the new VSR fields aren’t applied from the FPipelineCacheFileFormatPSO to the FGraphicsPipelineStateInitializer.

Thanks,

JB.

Steps to Reproduce

Hi Jean-Baptiste,

Both those points were definitely oversights, appreciate the catch here. I’ll put together a change to address these this week.

Thanks,

Christopher Fiala

Hey, awesome thanks for the quick reply, looking forward to it so that I can revert my change and integrate the official fix.

Wasn’t sure that would cover everything, but I can confirm that with both fixes it’s working on my side in 5.7.1.

Without the fix, the behavior would be a lot of “PSO from the cache was not found in the cache!” because of the FPipelineCacheFileFormatPSO->FGraphicsPipelineStateInitializer->FPipelineCacheFileFormatPSO not being equal due to both points.

Thanks,

JB.

Hi JB,

I submitted the fix in CL 48973278 on UE5/Main (incrementing FPipelineCacheFileFormatCurrentVersion and properly setting the VRS fields in FShaderPipelineCacheTask::Precompile). Thanks again for the heads up - let me know if you run into any more issues.

Thanks,

Chris