浏览代码

Add shader_cache_dir_valid check to _save_to_cache

jsjtxietian 1 年之前
父节点
当前提交
a365c070b3
共有 3 个文件被更改,包括 5 次插入1 次删除
  1. 1 0
      drivers/gles3/shader_gles3.cpp
  2. 3 1
      drivers/gles3/shader_gles3.h
  3. 1 0
      servers/rendering/renderer_rd/shader_rd.cpp

+ 1 - 0
drivers/gles3/shader_gles3.cpp

@@ -611,6 +611,7 @@ void ShaderGLES3::_save_to_cache(Version *p_version) {
 #ifdef WEB_ENABLED // not supported in webgl
 	return;
 #else
+	ERR_FAIL_COND(!shader_cache_dir_valid);
 #if !defined(ANDROID_ENABLED) && !defined(IOS_ENABLED)
 	if (RasterizerGLES3::is_gles_over_gl() && (glGetProgramBinary == NULL)) { // ARB_get_program_binary extension not available.
 		return;

+ 3 - 1
drivers/gles3/shader_gles3.h

@@ -209,7 +209,9 @@ protected:
 				_compile_specialization(s, p_variant, version, p_specialization);
 				version->variants[p_variant].insert(p_specialization, s);
 				spec = version->variants[p_variant].lookup_ptr(p_specialization);
-				_save_to_cache(version);
+				if (shader_cache_dir_valid) {
+					_save_to_cache(version);
+				}
 			}
 		} else if (spec->build_queued) {
 			// Still queued, wait

+ 1 - 0
servers/rendering/renderer_rd/shader_rd.cpp

@@ -463,6 +463,7 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) {
 }
 
 void ShaderRD::_save_to_cache(Version *p_version, int p_group) {
+	ERR_FAIL_COND(!shader_cache_dir_valid);
 	String sha1 = _version_get_sha1(p_version);
 	String path = shader_cache_dir.path_join(name).path_join(group_sha256[p_group]).path_join(sha1) + ".cache";