save pipelines to a binary archive

This commit is contained in:
Samuliak 2024-08-14 15:16:10 +02:00
parent 53efb9e5b2
commit 3c1a7479c2
6 changed files with 150 additions and 93 deletions

View file

@ -8,6 +8,10 @@
class MetalPipelineCache
{
public:
static void ShaderCacheLoading_begin(uint64 cacheTitleId);
static void ShaderCacheLoading_end();
static void ShaderCacheLoading_Close();
MetalPipelineCache(class MetalRenderer* metalRenderer) : m_mtlr{metalRenderer} {}
~MetalPipelineCache();
@ -18,5 +22,14 @@ private:
std::map<uint64, MTL::RenderPipelineState*> m_pipelineCache;
NS::URL* m_binaryArchiveURL;
MTL::BinaryArchive* m_binaryArchive;
uint64 CalculatePipelineHash(const LatteFetchShader* fetchShader, const LatteDecompilerShader* vertexShader, const LatteDecompilerShader* pixelShader, class CachedFBOMtl* activeFBO, const LatteContextRegister& lcr);
void TryLoadBinaryArchive();
void LoadBinary(MTL::RenderPipelineDescriptor* desc);
void SaveBinary(MTL::RenderPipelineDescriptor* desc);
};