Jelajahi Sumber

Merge pull request #109882 from precup/shader-cache-return

Treat missing variants as normal cache misses during shader cache lookup
Thaddeus Crews 1 Minggu lalu
induk
melakukan
1d386b5f7d
1 mengubah file dengan 6 tambahan dan 1 penghapusan
  1. 6 1
      servers/rendering/renderer_rd/shader_rd.cpp

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

@@ -463,9 +463,14 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) {
 	for (uint32_t i = 0; i < variant_count; i++) {
 		int variant_id = group_to_variant_map[p_group][i];
 		uint32_t variant_size = f->get_32();
-		if (!variants_enabled[variant_id] || variant_size == 0) {
+		if (!variants_enabled[variant_id]) {
 			continue;
 		}
+		if (variant_size == 0) {
+			// A new variant has been requested, failing the entire load will generate it
+			print_verbose(vformat("Shader cache miss for %s due to missing variant %d", name.path_join(group_sha256[p_group]).path_join(_version_get_sha1(p_version)), variant_id));
+			return false;
+		}
 		Vector<uint8_t> variant_bytes;
 		variant_bytes.resize(variant_size);