diff options
author | Rob Clark <[email protected]> | 2020-02-25 16:37:26 -0800 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-02-28 16:53:41 +0000 |
commit | 4b8e198fd2b5bfcefccd998a94a1f065c91119d3 (patch) | |
tree | c775ab27e156e0502086eccbfa40fd9bac576e4f /src/freedreno | |
parent | 56565b7bba54b8298d2c14c66bb87c59930b09ee (diff) |
freedreno/ir3: fix crash with samgq workaround
Need to list_delinit() before we clone the instruction to split it into
individual samgpN instructions, otherwise we get list corruption.
Tested-by: Eduardo Lima Mitev <[email protected]>
Signed-off-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3989>
Diffstat (limited to 'src/freedreno')
-rw-r--r-- | src/freedreno/ir3/ir3_legalize.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/freedreno/ir3/ir3_legalize.c b/src/freedreno/ir3/ir3_legalize.c index 9c349bf2745..d5cdd6d4443 100644 --- a/src/freedreno/ir3/ir3_legalize.c +++ b/src/freedreno/ir3/ir3_legalize.c @@ -215,13 +215,14 @@ legalize_block(struct ir3_legalize_ctx *ctx, struct ir3_block *block) ctx->type == MESA_SHADER_VERTEX && n->opc == OPC_SAMGQ) { struct ir3_instruction *samgp; + list_delinit(&n->node); + for (i = 0; i < 4; i++) { samgp = ir3_instr_clone(n); samgp->opc = OPC_SAMGP0 + i; if (i > 1) samgp->flags |= IR3_INSTR_SY; } - list_delinit(&n->node); } else { list_addtail(&n->node, &block->instr_list); } |