Derived Data Cache is not generated completely

We’ve recently upgraded to 4.12.5 and have run into an issue with the generation of the Derived Data Cache. We run the command “MyProject -run=DerivedDataCache -fill” nightly in order to keep the DDC primed. However, the amount of data that is generated is far less than what it used to be. The Engine is now compiling shaders after the level is loaded which ends up taking a significant amount of time.

Looking at the diffs of DerivedDataCacheCommandlet.cpp, the new statement “if (ProcessedPackages.Contains(It->GetOutermost()->GetName()))” never ends up being true. As a result, BeginCacheForCookedPlatformData is not called on the UObject. If I comment out this line, the data created is much larger and we no longer have shaders compiling during level load.

I’ve tested this with Github source versions 4.12.5-release and 4.13.0-preview-3 and both exhibit the same behavior. To reproduce it, I have been deleting the Engine\DerivedDataCache and Engine\Saved folders in between each test.

DDC sizes in 4.13.0-preview-3:

  • ~39.9 MB after DerivedDataCache -fill command.
  • ~194 MB after running the Editor and waiting for “Compiling Shaders” to complete.
  • ~419 MB after DerivedDataCache -fill command with the if check commented out.

Has the DDC generation changed and our usage is no longer correct or could this be a bug?

-K