#pragma once #include #include "HW/Latte/Core/LatteConst.h" #include "HW/Latte/ISA/LatteReg.h" class MetalSamplerCache { public: MetalSamplerCache(class MetalRenderer* metalRenderer) : m_mtlr{metalRenderer} {} ~MetalSamplerCache(); MTL::SamplerState* GetSamplerState(const LatteContextRegister& lcr, LatteConst::ShaderType shaderType, uint32 stageSamplerIndex); private: class MetalRenderer* m_mtlr; std::map m_samplerCache; uint64 CalculateSamplerHash(const LatteContextRegister& lcr, LatteConst::ShaderType shaderType, uint32 stageSamplerIndex, uint32 samplerIndex); };