Description
After #5453, all cache has been moved to a separate folder. While this is neat, it did create a new problem. Previously, every time a game update was installed, the current PPU and SPU cache would be invalidated and recompiled afresh. But the shader cache was not invalidated and could be used irrespective of game version. With the new layout, the shader cache sits within the PPU specific folder and gets invalidated along with the PPU and SPU cache and starts generating afresh.
Old layout:
Shaders cache: data > GAMEID > xxxxxx-EBOOT.BIN > shaders_cache
PPU cache: data > GAMEID > xxxxxx-EBOOT.BIN
SPU cache: data > GAMEID > ppu-xxxxxx-EBOOT.BIN
Every time a game update is installed, a new ppu-xxxxxx-EBOOT.BIN
folder is created, forcing a new SPU cache. The PPU modules were present in the same folder but were recompiled once again. The shader cache remained in the same folder and was still used independent of any game updates.
New layout:
Shaders cache: cache > GAMEID > ppu-xxxxxx-EBOOT.BIN > shaders_cache
PPU cache: cache > GAMEID > ppu-xxxxxx-EBOOT.BIN
SPU cache: cache > GAMEID > ppu-xxxxxx-EBOOT.BIN
As mentioned above, every time a game update is installed a new ppu-xxxxxx-EBOOT.BIN
folder is created. As before, the PPU and SPU cache is invalidated and compiled afresh. New PPU cache goes into the new folder as well which is nice. But the shader cache from the original folder is also ignored and we need to unnecessarily cache it all over again.
I don't think the shader cache needs to be invalidated in this scenario. The easiest way to fix this would be to move the shader cache alone back into a PPU independent folder (cache > GAMEID > xxxxxx-EBOOT.BIN > shaders_cache
). Even better would be to let the shader_cache
folder sit independently like cache > GAMEID > shaders_cache
.