From a674eb8367fb1fbe447746903e85a07cb1151bcb Mon Sep 17 00:00:00 2001 From: OpenSauce04 Date: Sat, 13 Sep 2025 00:55:44 +0100 Subject: [PATCH] vk_pipeline_cache: Fix directory creation failure if `shaders/vulkan/` is missing --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 9 ++++++--- src/video_core/renderer_vulkan/vk_pipeline_cache.h | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 1ff478984..3a730ab5f 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -556,12 +556,15 @@ bool PipelineCache::EnsureDirectories() const { }; return create_dir(FileUtil::GetUserPath(FileUtil::UserPath::ShaderDir)) && - create_dir(GetPipelineCacheDir()); + create_dir(GetVulkanDir()) && create_dir(GetPipelineCacheDir()); +} + +std::string PipelineCache::GetVulkanDir() const { + return FileUtil::GetUserPath(FileUtil::UserPath::ShaderDir) + "vulkan" + DIR_SEP; } std::string PipelineCache::GetPipelineCacheDir() const { - return FileUtil::GetUserPath(FileUtil::UserPath::ShaderDir) + "vulkan" + DIR_SEP + "pipeline" + - DIR_SEP; + return GetVulkanDir() + "pipeline" + DIR_SEP; } void PipelineCache::SwitchPipelineCache(u64 title_id, const std::atomic_bool& stop_loading, diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.h b/src/video_core/renderer_vulkan/vk_pipeline_cache.h index 650df5680..c4f2ea062 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.h +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.h @@ -108,6 +108,9 @@ private: /// Create pipeline cache directories. Returns true on success. bool EnsureDirectories() const; + /// Returns the Vulkan shader directory + std::string GetVulkanDir() const; + /// Returns the pipeline cache storage dir std::string GetPipelineCacheDir() const;