diff --git a/src/dxvk/dxvk_options.cpp b/src/dxvk/dxvk_options.cpp index d769ba77d..6a15abeae 100644 --- a/src/dxvk/dxvk_options.cpp +++ b/src/dxvk/dxvk_options.cpp @@ -4,6 +4,7 @@ namespace dxvk { DxvkOptions::DxvkOptions(const Config& config) { allowMemoryOvercommit = config.getOption ("dxvk.allowMemoryOvercommit", false); + enableStateCache = config.getOption ("dxvk.enableStateCache", true); numCompilerThreads = config.getOption ("dxvk.numCompilerThreads", 0); } diff --git a/src/dxvk/dxvk_options.h b/src/dxvk/dxvk_options.h index 3cdafe9e1..4e1c39f5f 100644 --- a/src/dxvk/dxvk_options.h +++ b/src/dxvk/dxvk_options.h @@ -12,6 +12,9 @@ namespace dxvk { /// a heap than the device supports. bool allowMemoryOvercommit; + /// Enable state cache + bool enableStateCache; + /// Number of compiler threads /// when using the state cache int32_t numCompilerThreads; diff --git a/src/dxvk/dxvk_pipemanager.cpp b/src/dxvk/dxvk_pipemanager.cpp index 27d559898..dd98f7675 100644 --- a/src/dxvk/dxvk_pipemanager.cpp +++ b/src/dxvk/dxvk_pipemanager.cpp @@ -46,7 +46,7 @@ namespace dxvk { m_cache (new DxvkPipelineCache(device->vkd())) { std::string useStateCache = env::getEnvVar("DXVK_STATE_CACHE"); - if (useStateCache != "0") + if (useStateCache != "0" && device->config().enableStateCache) m_stateCache = new DxvkStateCache(device, this, passManager); } diff --git a/src/util/config/config.cpp b/src/util/config/config.cpp index 7bfe64f3d..6cf08c778 100644 --- a/src/util/config/config.cpp +++ b/src/util/config/config.cpp @@ -63,6 +63,10 @@ namespace dxvk { { "QuantumBreak.exe", {{ { "d3d11.zeroInitWorkgroupMemory", "True" }, }} }, + /* Anno 2205 */ + { "anno2205.exe", {{ + { "dxvk.enableStateCache", "False" }, + }} }, }};