From 7056425bbdf399edf98d75533b8c62ea985289e1 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 11 Feb 2019 22:24:19 +0100 Subject: [PATCH] [dxvk] Create state cache directory if it does not yet exist We only create it if the parent directory already exists. Resolves #907. --- src/dxvk/dxvk_state_cache.cpp | 13 ++++++++++++- src/dxvk/dxvk_state_cache.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dxvk/dxvk_state_cache.cpp b/src/dxvk/dxvk_state_cache.cpp index 5b0e440e..6c5f79dd 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 ca4b331a..de3b4104 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; };