Signed-off-by: Tapani Pälli <[email protected]>
---
src/glsl/shader_cache.h | 3 +++
src/glsl/shader_deserialize.cpp | 18 ++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/src/glsl/shader_cache.h b/src/glsl/shader_cache.h
index 23d1098..2262a49 100644
--- a/src/glsl/shader_cache.h
+++ b/src/glsl/shader_cache.h
@@ -91,6 +91,9 @@ int
mesa_program_deserialize(struct gl_shader_program *prog, const GLvoid *data,
size_t size);
+int
+mesa_program_load(struct gl_shader_program *prog, const char *path);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/src/glsl/shader_deserialize.cpp b/src/glsl/shader_deserialize.cpp
index 84b62cc..f0e3a58 100644
--- a/src/glsl/shader_deserialize.cpp
+++ b/src/glsl/shader_deserialize.cpp
@@ -401,3 +401,21 @@ mesa_program_deserialize(struct gl_shader_program *prog,
const GLvoid *data,
map.map((const void*) data, size);
return deserialize_program(prog, map);
}
+
+
+extern "C" int
+mesa_program_load(struct gl_shader_program *prog, const char *path)
+{
+ memory_map map;
+ int result = 0;
+
+ if (map.map(path))
+ return -1;
+ result = deserialize_program(prog, map);
+
+ /* Cache binary produced with a different Mesa, remove it. */
+ if (result == MESA_SHADER_DESERIALIZE_VERSION_ERROR)
+ unlink(path);
+
+ return result;
+}
--
1.8.3.1
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev