From 9ae93be8fbdf753e07fbf1b707ce3bc89105b5a9 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Fri, 28 Feb 2020 15:45:53 -0800 Subject: [PATCH] freedreno/ir3: fix has_latency_to_hide Also count tex-prefetch instructions. And only let the no-latency rule kick in for frag shaders. Signed-off-by: Rob Clark Part-of: --- src/freedreno/ir3/ir3.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3.h b/src/freedreno/ir3/ir3.h index a44663f..5cde264 100644 --- a/src/freedreno/ir3/ir3.h +++ b/src/freedreno/ir3/ir3.h @@ -1201,9 +1201,16 @@ void ir3_legalize(struct ir3 *ir, struct ir3_shader_variant *so, int *max_bary); static inline bool ir3_has_latency_to_hide(struct ir3 *ir) { + /* VS/GS/TCS/TESS co-exist with frag shader invocations, but we don't + * know the nature of the fragment shader. Just assume it will have + * latency to hide: + */ + if (ir->type != MESA_SHADER_FRAGMENT) + return true; + foreach_block (block, &ir->block_list) { foreach_instr (instr, &block->instr_list) { - if (is_tex(instr)) + if (is_tex_or_prefetch(instr)) return true; if (is_load(instr)) { -- 2.7.4