[Mesa-dev] [PATCH v3 (part1) 07/26] glsl: Identify active uniform blocks that are buffer blocks as such.
Iago Toral Quiroga
itoral at igalia.com
Fri Jul 10 03:13:26 PDT 2015
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
---
src/glsl/link_uniform_block_active_visitor.cpp | 1 +
src/glsl/link_uniform_block_active_visitor.h | 1 +
src/glsl/link_uniform_blocks.cpp | 4 ++++
src/mesa/main/mtypes.h | 5 +++++
4 files changed, 11 insertions(+)
diff --git a/src/glsl/link_uniform_block_active_visitor.cpp b/src/glsl/link_uniform_block_active_visitor.cpp
index ddfd2b2..5102947 100644
--- a/src/glsl/link_uniform_block_active_visitor.cpp
+++ b/src/glsl/link_uniform_block_active_visitor.cpp
@@ -44,6 +44,7 @@ process_block(void *mem_ctx, struct hash_table *ht, ir_variable *var)
b->type = block_type;
b->has_instance_name = var->is_interface_instance();
+ b->is_shader_storage = var->data.mode == ir_var_shader_storage;
if (var->data.explicit_binding) {
b->has_binding = true;
diff --git a/src/glsl/link_uniform_block_active_visitor.h b/src/glsl/link_uniform_block_active_visitor.h
index e5ea501..b663a88 100644
--- a/src/glsl/link_uniform_block_active_visitor.h
+++ b/src/glsl/link_uniform_block_active_visitor.h
@@ -38,6 +38,7 @@ struct link_uniform_block_active {
bool has_instance_name;
bool has_binding;
+ bool is_shader_storage;
};
class link_uniform_block_active_visitor : public ir_hierarchical_visitor {
diff --git a/src/glsl/link_uniform_blocks.cpp b/src/glsl/link_uniform_blocks.cpp
index 898544b..4df39e2 100644
--- a/src/glsl/link_uniform_blocks.cpp
+++ b/src/glsl/link_uniform_blocks.cpp
@@ -293,6 +293,8 @@ link_uniform_blocks(void *mem_ctx,
blocks[i].NumUniforms =
(unsigned)(ptrdiff_t)(&variables[parcel.index] - blocks[i].Uniforms);
+ blocks[i].IsShaderStorage = b->is_shader_storage;
+
i++;
}
} else {
@@ -311,6 +313,8 @@ link_uniform_blocks(void *mem_ctx,
blocks[i].NumUniforms =
(unsigned)(ptrdiff_t)(&variables[parcel.index] - blocks[i].Uniforms);
+ blocks[i].IsShaderStorage = b->is_shader_storage;
+
i++;
}
}
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 9ec342b..86508c3 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2565,6 +2565,11 @@ struct gl_uniform_block
GLuint UniformBufferSize;
/**
+ * Is this actually an interface block for a shader storage buffer?
+ */
+ bool IsShaderStorage;
+
+ /**
* Layout specified in the shader
*
* This isn't accessible through the API, but it is used while
--
1.9.1
More information about the mesa-dev
mailing list