shader_environment: Receive cache version from outside

This allows us invalidating OpenGL and Vulkan separately in the future.
This commit is contained in:
ReinUsesLisp 2021-07-18 21:07:12 -03:00 committed by ameerj
parent 4a82450c81
commit 258f35515d
4 changed files with 23 additions and 16 deletions

View file

@ -48,9 +48,12 @@ using VideoCommon::ComputeEnvironment;
using VideoCommon::FileEnvironment;
using VideoCommon::GenericEnvironment;
using VideoCommon::GraphicsEnvironment;
using VideoCommon::LoadPipelines;
using VideoCommon::SerializePipeline;
using Context = ShaderContext::Context;
constexpr u32 CACHE_VERSION = 5;
template <typename Container>
auto MakeSpan(Container& container) {
return std::span(container.data(), container.size());
@ -287,7 +290,7 @@ void ShaderCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading,
});
++state.total;
}};
VideoCommon::LoadPipelines(stop_loading, shader_cache_filename, load_compute, load_graphics);
LoadPipelines(stop_loading, shader_cache_filename, CACHE_VERSION, load_compute, load_graphics);
std::unique_lock lock{state.mutex};
callback(VideoCore::LoadCallbackStage::Build, 0, state.total);
@ -394,7 +397,7 @@ std::unique_ptr<GraphicsPipeline> ShaderCache::CreateGraphicsPipeline() {
env_ptrs.push_back(&environments.envs[index]);
}
}
SerializePipeline(graphics_key, env_ptrs, shader_cache_filename);
SerializePipeline(graphics_key, env_ptrs, shader_cache_filename, CACHE_VERSION);
return pipeline;
}
@ -492,7 +495,8 @@ std::unique_ptr<ComputePipeline> ShaderCache::CreateComputePipeline(
if (!pipeline || shader_cache_filename.empty()) {
return pipeline;
}
SerializePipeline(key, std::array<const GenericEnvironment*, 1>{&env}, shader_cache_filename);
SerializePipeline(key, std::array<const GenericEnvironment*, 1>{&env}, shader_cache_filename,
CACHE_VERSION);
return pipeline;
}