From a3b98edf6f29aecc33d15a3df0d81a340ea3ebe5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Thu, 17 Nov 2016 21:52:32 +0100 Subject: [PATCH] glsl/lower_output_reads: bail early in tessellation control shaders MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This whole pass is a no-op. Acked-by: Edward O'Callaghan Reviewed-by: Ilia Mirkin Reviewed-by: Marek Olšák --- src/compiler/glsl/lower_output_reads.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/compiler/glsl/lower_output_reads.cpp b/src/compiler/glsl/lower_output_reads.cpp index 8a375ac0ad5..b0045f0c8fb 100644 --- a/src/compiler/glsl/lower_output_reads.cpp +++ b/src/compiler/glsl/lower_output_reads.cpp @@ -96,8 +96,6 @@ output_read_remover::visit(ir_dereference_variable *ir) { if (ir->var->data.mode != ir_var_shader_out) return visit_continue; - if (stage == MESA_SHADER_TESS_CTRL) - return visit_continue; hash_entry *entry = _mesa_hash_table_search(replacements, ir->var); ir_variable *temp = entry ? (ir_variable *) entry->data : NULL; @@ -173,6 +171,12 @@ output_read_remover::visit_leave(ir_function_signature *sig) void lower_output_reads(unsigned stage, exec_list *instructions) { + /* Due to the possible interactions between multiple tessellation control + * shader invocations, we leave output variables as-is. + */ + if (stage == MESA_SHADER_TESS_CTRL) + return; + output_read_remover v(stage); visit_list_elements(&v, instructions); } -- 2.30.2