Merge pull request #110174 from clayjohn/RD-shader-cache

Avoid attempting to load from shader cache when both the user-dir and res-dir are invalid
This commit is contained in:
Thaddeus Crews 2025-09-01 19:09:55 -05:00
commit b919b19f48
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 7 additions and 3 deletions

View file

@ -437,7 +437,7 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) {
f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, true), FileAccess::READ); f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, true), FileAccess::READ);
} }
if (f.is_null()) { if (f.is_null() && shader_cache_res_dir_valid) {
f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, false), FileAccess::READ); f = FileAccess::open(_get_cache_file_path(p_version, p_group, api_safe_name, false), FileAccess::READ);
} }
@ -539,8 +539,10 @@ void ShaderRD::_compile_version_start(Version *p_version, int p_group) {
p_version->dirty = false; p_version->dirty = false;
#if ENABLE_SHADER_CACHE #if ENABLE_SHADER_CACHE
if (_load_from_cache(p_version, p_group)) { if (shader_cache_user_dir_valid || shader_cache_res_dir_valid) {
return; if (_load_from_cache(p_version, p_group)) {
return;
}
} }
#endif #endif
@ -823,6 +825,7 @@ void ShaderRD::initialize(const Vector<String> &p_variant_defines, const String
void ShaderRD::_initialize_cache() { void ShaderRD::_initialize_cache() {
shader_cache_user_dir_valid = !shader_cache_user_dir.is_empty(); shader_cache_user_dir_valid = !shader_cache_user_dir.is_empty();
shader_cache_res_dir_valid = !shader_cache_res_dir.is_empty();
if (!shader_cache_user_dir_valid) { if (!shader_cache_user_dir_valid) {
return; return;
} }

View file

@ -142,6 +142,7 @@ private:
static bool shader_cache_save_compressed_zstd; static bool shader_cache_save_compressed_zstd;
static bool shader_cache_save_debug; static bool shader_cache_save_debug;
bool shader_cache_user_dir_valid = false; bool shader_cache_user_dir_valid = false;
bool shader_cache_res_dir_valid = false;
enum StageType { enum StageType {
STAGE_TYPE_VERTEX, STAGE_TYPE_VERTEX,