glsl: Identify active uniform blocks that are buffer blocks as such.
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
a78a589efc
commit
df89ed1591
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2564,6 +2564,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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue