Skip to content

Unnecessary shader cache invalidation with new layout #5563

Open
@HerrHulaHoop

Description

@HerrHulaHoop

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions