summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIago Toral Quiroga <itoral@igalia.com>2015-04-06 09:37:58 +0200
committerSamuel Iglesias Gonsalvez <siglesias@igalia.com>2015-07-14 07:04:04 +0200
commit3ad92589f29466383c0218aa4a73bff52019c4be (patch)
treef5d86f4bd27c34b63d733319fb8b1629ec8f34d5
parent173ed05a6d9e851b2b7b2f9f2d8993e5da115c40 (diff)
glsl: Don't do tree grafting on buffer variables
Otherwise we can lose writes into the buffers backing the variables. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
-rw-r--r--src/glsl/opt_tree_grafting.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/glsl/opt_tree_grafting.cpp b/src/glsl/opt_tree_grafting.cpp
index d47613c219..7f2ee6cee3 100644
--- a/src/glsl/opt_tree_grafting.cpp
+++ b/src/glsl/opt_tree_grafting.cpp
@@ -359,10 +359,11 @@ tree_grafting_basic_block(ir_instruction *bb_first,
if (!lhs_var)
continue;
- if (lhs_var->data.mode == ir_var_function_out ||
- lhs_var->data.mode == ir_var_function_inout ||
- lhs_var->data.mode == ir_var_shader_out)
- continue;
+ if (lhs_var->data.mode == ir_var_function_out ||
+ lhs_var->data.mode == ir_var_function_inout ||
+ lhs_var->data.mode == ir_var_shader_out ||
+ lhs_var->data.mode == ir_var_shader_storage)
+ continue;
ir_variable_refcount_entry *entry = info->refs->get_variable_entry(lhs_var);