This and the previous patch feels wrong. The glsl shader cache shouldn't be handling writing nir to disk. IMO you should add this functionality to nir_serialize.c (maybe rename is nir_cache.c ??). That way we have continue with the nir is a toolkit theme and we can easily reused the util to write nir to disk in Vulkan which could be useful for reducing compile times.

Doing it this way we could deserialize it in brw_link() and serialize it in glsl_to_nir() no need for the extra serialized_nir params.

On 19/10/17 16:32, Jordan Justen wrote:
Signed-off-by: Jordan Justen <jordan.l.justen@inir_serialize.cntel.com>
---
  src/compiler/glsl/shader_cache.cpp | 16 ++++++++++++++++
  1 file changed, 16 insertions(+)

diff --git a/src/compiler/glsl/shader_cache.cpp 
b/src/compiler/glsl/shader_cache.cpp
index ca90cfde35..f43bd6b17e 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -1062,6 +1062,14 @@ write_shader_metadata(struct blob *metadata, 
gl_linked_shader *shader)
     }
write_shader_parameters(metadata, glprog->Parameters);
+
+   assert((glprog->serialized_nir == NULL) ==
+          (glprog->serialized_nir_size == 0));
+   blob_write_uint32(metadata, (uint32_t)glprog->serialized_nir_size);
+   if (glprog->serialized_nir_size > 0) {
+      blob_write_bytes(metadata, glprog->serialized_nir,
+                       glprog->serialized_nir_size);
+   }
  }
static void
@@ -1116,6 +1124,14 @@ read_shader_metadata(struct blob_reader *metadata,
glprog->Parameters = _mesa_new_parameter_list();
     read_shader_parameters(metadata, glprog->Parameters);
+
+   glprog->serialized_nir_size = (size_t)blob_read_uint32(metadata);
+   if (glprog->serialized_nir_size > 0) {
+      glprog->serialized_nir =
+         (uint8_t*)ralloc_size(glprog, glprog->serialized_nir_size);
+      blob_copy_bytes(metadata, glprog->serialized_nir,
+                      glprog->serialized_nir_size);
+   }
  }
static void

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to