[Mesa-dev] [PATCH 1/8] glsl: allow NULL to be passed to encode_type_to_blob()
Timothy Arceri
tarceri at itsqueeze.com
Sun Aug 13 23:49:00 UTC 2017
This will be used by the following commit.
---
src/compiler/glsl/shader_cache.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index cc4d24482d..1fd49b82e9 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -72,20 +72,25 @@ compile_shaders(struct gl_context *ctx, struct gl_shader_program *prog) {
for (unsigned i = 0; i < prog->NumShaders; i++) {
_mesa_glsl_compile_shader(ctx, prog->Shaders[i], false, false, true);
}
}
static void
encode_type_to_blob(struct blob *blob, const glsl_type *type)
{
uint32_t encoding;
+ if (!type) {
+ blob_write_uint32(blob, 0);
+ return;
+ }
+
switch (type->base_type) {
case GLSL_TYPE_UINT:
case GLSL_TYPE_INT:
case GLSL_TYPE_FLOAT:
case GLSL_TYPE_BOOL:
case GLSL_TYPE_DOUBLE:
case GLSL_TYPE_UINT64:
case GLSL_TYPE_INT64:
encoding = (type->base_type << 24) |
(type->vector_elements << 4) |
@@ -142,20 +147,25 @@ encode_type_to_blob(struct blob *blob, const glsl_type *type)
break;
}
blob_write_uint32(blob, encoding);
}
static const glsl_type *
decode_type_from_blob(struct blob_reader *blob)
{
uint32_t u = blob_read_uint32(blob);
+
+ if (u == 0) {
+ return NULL;
+ }
+
glsl_base_type base_type = (glsl_base_type) (u >> 24);
switch (base_type) {
case GLSL_TYPE_UINT:
case GLSL_TYPE_INT:
case GLSL_TYPE_FLOAT:
case GLSL_TYPE_BOOL:
case GLSL_TYPE_DOUBLE:
case GLSL_TYPE_UINT64:
case GLSL_TYPE_INT64:
--
2.13.4
More information about the mesa-dev
mailing list