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 <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835>
This commit is contained in:
Alyssa Rosenzweig
2020-02-04 09:28:06 -05:00
parent 3f59098d1a
commit a55a2e02a5
+5 -5
View File
@@ -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