From a55a2e02a54cadcd9466d02021c2c7a0739c373f Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 4 Feb 2020 09:28:06 -0500 Subject: [PATCH] pan/midgard: Allow jumping out of a shader This comes up as a `return;` instruction in a compute shader. We need to use the special tag 1 to signify "break". Fixes numerous INSTR_INVALID_ENC faults in dEQP-GLES31.functional.compute.basic.* Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/midgard_compile.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 4bc494ca1be..30a81a4afd1 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -2690,19 +2690,19 @@ midgard_get_first_tag_from_block(compiler_context *ctx, unsigned block_idx) { midgard_block *initial_block = mir_get_block(ctx, block_idx); - unsigned first_tag = 0; - mir_foreach_block_from(ctx, initial_block, v) { if (v->quadword_count) { midgard_bundle *initial_bundle = util_dynarray_element(&v->bundles, midgard_bundle, 0); - first_tag = initial_bundle->tag; - break; + return initial_bundle->tag; } } - return first_tag; + /* Default to a tag 1 which will break from the shader, in case we jump + * to the exit block (i.e. `return` in a compute shader) */ + + return 1; } static unsigned -- 2.30.2