[Mesa-dev] [PATCH 35/65] glsl: add support for serialising image types

Timothy Arceri timothy.arceri at collabora.com
Fri Apr 29 13:33:34 UTC 2016


---
 src/compiler/glsl/shader_cache.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index 747df78..ee90157 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -85,6 +85,11 @@ encode_type_to_blob(struct blob *blob, const glsl_type *type)
       blob_write_string(blob, type->name);
       return;
    case GLSL_TYPE_IMAGE:
+      encoding = (type->base_type) << 24 |
+         (type->sampler_dimensionality << 3) |
+         (type->sampler_array << 2) |
+         (type->sampled_type);
+      break;
    case GLSL_TYPE_ATOMIC_UINT:
    case GLSL_TYPE_STRUCT:
    case GLSL_TYPE_INTERFACE:
@@ -120,6 +125,9 @@ decode_type_from_blob(struct blob_reader *blob)
    case GLSL_TYPE_SUBROUTINE:
       return glsl_type::get_subroutine_instance(blob_read_string(blob));
    case GLSL_TYPE_IMAGE:
+      return glsl_type::get_image_instance((enum glsl_sampler_dim) ((u >> 3) & 0x07),
+                                             (u >> 2) & 0x01,
+                                             (glsl_base_type) ((u >> 0) & 0x03));
    case GLSL_TYPE_ATOMIC_UINT:
    case GLSL_TYPE_STRUCT:
    case GLSL_TYPE_INTERFACE:
-- 
2.5.5



More information about the mesa-dev mailing list