[Mesa-dev] [PATCH v2 25/82] glsl: Don't do constant variable on buffer variables
Iago Toral Quiroga
itoral at igalia.com
Wed Jun 3 00:01:15 PDT 2015
Since the backing storage for these is shared we cannot ensure that the
value won't change by writes from other threads.
---
src/glsl/opt_constant_variable.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/glsl/opt_constant_variable.cpp b/src/glsl/opt_constant_variable.cpp
index 7222eb9..7aaaeed 100644
--- a/src/glsl/opt_constant_variable.cpp
+++ b/src/glsl/opt_constant_variable.cpp
@@ -115,6 +115,13 @@ ir_constant_variable_visitor::visit_enter(ir_assignment *ir)
if (!var)
return visit_continue;
+ /* Ignore buffer variables, since the underlying storage is shared
+ * and we can't be sure that this variable won't be written by another
+ * thread.
+ */
+ if (var->data.mode == ir_var_shader_storage)
+ return visit_continue;
+
constval = ir->rhs->constant_expression_value();
if (!constval)
return visit_continue;
--
1.9.1
More information about the mesa-dev
mailing list