From 344dd914972f9ddcef814a3cf08f832708c33146 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 12 May 2020 13:34:52 -0400 Subject: [PATCH] pan/mdg: Use analysis to set .cont/.last flags Corresponds roughly to what we analyze. Note that "terminate AND execute" is a contradiction (rather: it's equivalent to just terminating), hence why there are only three possibilities for the states of the flags: .cont = continue, don't execute .last = don't continue, don't execute .cont.last = continue and execute Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/midgard_emit.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/panfrost/midgard/midgard_emit.c b/src/panfrost/midgard/midgard_emit.c index 98844169fae..b62052b1317 100644 --- a/src/panfrost/midgard/midgard_emit.c +++ b/src/panfrost/midgard/midgard_emit.c @@ -508,16 +508,8 @@ emit_binary_bundle(compiler_context *ctx, ctx->texture_op_count--; if (mir_op_computes_derivatives(ctx->stage, ins->texture.op)) { - bool continues = ctx->texture_op_count > 0; - - /* Control flow complicates helper invocation - * lifespans, so for now just keep helper threads - * around indefinitely with loops. TODO: Proper - * analysis */ - continues |= ctx->loop_count > 0; - - ins->texture.cont = continues; - ins->texture.last = !continues; + ins->texture.cont = !ins->helper_terminate; + ins->texture.last = ins->helper_terminate || ins->helper_execute; } else { ins->texture.cont = ins->texture.last = 1; } -- 2.30.2