From: Kristian Høgsberg <k...@bitplanet.net> The same we do for UBO loads with ir_binop_ubo_load. --- src/glsl/lower_ubo_reference.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/glsl/lower_ubo_reference.cpp b/src/glsl/lower_ubo_reference.cpp index 4ea4ccb..4341c34 100644 --- a/src/glsl/lower_ubo_reference.cpp +++ b/src/glsl/lower_ubo_reference.cpp @@ -149,6 +149,7 @@ public: struct gl_shader *shader; struct gl_uniform_buffer_variable *ubo_var; ir_rvalue *uniform_block; + enum ir_expression_operation opcode; bool progress; }; @@ -252,6 +253,11 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue) this->uniform_block = index; } + if (shader->UniformBlocks[i].IsShaderStorage) + this->opcode = ir_binop_ssbo_load; + else + this->opcode = ir_binop_ubo_load; + struct gl_uniform_block *block = &shader->UniformBlocks[i]; this->ubo_var = var->is_interface_instance() @@ -413,7 +419,7 @@ lower_ubo_reference_visitor::ubo_load(const glsl_type *type, { ir_rvalue *block_ref = this->uniform_block->clone(mem_ctx, NULL); return new(mem_ctx) - ir_expression(ir_binop_ubo_load, + ir_expression(this->opcode, type, block_ref, offset); -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev