diff --git a/src/dxvk/dxvk_state_cache.cpp b/src/dxvk/dxvk_state_cache.cpp index 5b0e440ee..6c5f79dd5 100644 --- a/src/dxvk/dxvk_state_cache.cpp +++ b/src/dxvk/dxvk_state_cache.cpp @@ -45,6 +45,12 @@ namespace dxvk { std::ios_base::binary | std::ios_base::trunc); + if (!file && env::createDirectory(getCacheDir())) { + file = std::ofstream(getCacheFileName(), + std::ios_base::binary | + std::ios_base::trunc); + } + // Write header with the current version number DxvkStateCacheHeader header; @@ -455,7 +461,7 @@ namespace dxvk { std::string DxvkStateCache::getCacheFileName() const { - std::string path = env::getEnvVar("DXVK_STATE_CACHE_PATH"); + std::string path = getCacheDir(); if (!path.empty() && *path.rbegin() != '/') path += '/'; @@ -470,4 +476,9 @@ namespace dxvk { return path; } + + std::string DxvkStateCache::getCacheDir() const { + return env::getEnvVar("DXVK_STATE_CACHE_PATH"); + } + } diff --git a/src/dxvk/dxvk_state_cache.h b/src/dxvk/dxvk_state_cache.h index ca4b331a5..de3b4104a 100644 --- a/src/dxvk/dxvk_state_cache.h +++ b/src/dxvk/dxvk_state_cache.h @@ -209,6 +209,8 @@ namespace dxvk { void writerFunc(); std::string getCacheFileName() const; + + std::string getCacheDir() const; };