From: Kenneth Graunke Date: Mon, 11 Jan 2016 22:51:38 +0000 (-0800) Subject: glsl: Make read_from_write_only_variable_visitor ignore .length(). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c034dbeda8850fe1f3ec0dbdbd73344ace024748;p=mesa.git glsl: Make read_from_write_only_variable_visitor ignore .length(). .length() on an unsized SSBO variable doesn't actually read any data from the SSBO, and is allowed on variables marked 'writeonly'. Fixes compute shader compilation in Shadow of Mordor. Signed-off-by: Kenneth Graunke Reviewed-by: Iago Toral Quiroga Reviewed-by: Matt Turner --- diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index f3966d7e3f4..13696a36b0c 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -106,6 +106,15 @@ public: return found; } + virtual ir_visitor_status visit_enter(ir_expression *ir) + { + /* .length() doesn't actually read anything */ + if (ir->operation == ir_unop_ssbo_unsized_array_length) + return visit_continue_with_parent; + + return visit_continue; + } + private: ir_variable *found; };