forked from suyu/suyu
vk_pipeline_cache: Skip cached pipelines with different dynamic state
This commit is contained in:
parent
5445799260
commit
41cca8b8ad
1 changed files with 6 additions and 0 deletions
|
@ -391,10 +391,16 @@ void PipelineCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading
|
||||||
});
|
});
|
||||||
++state.total;
|
++state.total;
|
||||||
}};
|
}};
|
||||||
|
const bool extended_dynamic_state = device.IsExtExtendedDynamicStateSupported();
|
||||||
|
const bool dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported();
|
||||||
const auto load_graphics{[&](std::ifstream& file, std::vector<FileEnvironment> envs) {
|
const auto load_graphics{[&](std::ifstream& file, std::vector<FileEnvironment> envs) {
|
||||||
GraphicsPipelineCacheKey key;
|
GraphicsPipelineCacheKey key;
|
||||||
file.read(reinterpret_cast<char*>(&key), sizeof(key));
|
file.read(reinterpret_cast<char*>(&key), sizeof(key));
|
||||||
|
|
||||||
|
if ((key.state.extended_dynamic_state != 0) != extended_dynamic_state ||
|
||||||
|
(key.state.dynamic_vertex_input != 0) != dynamic_vertex_input) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
workers.QueueWork([this, key, envs = std::move(envs), &state, &callback]() mutable {
|
workers.QueueWork([this, key, envs = std::move(envs), &state, &callback]() mutable {
|
||||||
ShaderPools pools;
|
ShaderPools pools;
|
||||||
boost::container::static_vector<Shader::Environment*, 5> env_ptrs;
|
boost::container::static_vector<Shader::Environment*, 5> env_ptrs;
|
||||||
|
|
Loading…
Reference in a new issue