Commit 53d6e113 authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig
Browse files

panfrost/midgard: Fix tex propogation



Unbreaks mpv.
Signed-off-by: Alyssa Rosenzweig's avatarAlyssa Rosenzweig <alyssa@rosenzweig.io>
parent 68a1508d
...@@ -3199,23 +3199,38 @@ midgard_opt_copy_prop_tex(compiler_context *ctx, midgard_block *block) ...@@ -3199,23 +3199,38 @@ midgard_opt_copy_prop_tex(compiler_context *ctx, midgard_block *block)
unsigned from = ins->ssa_args.src1; unsigned from = ins->ssa_args.src1;
unsigned to = ins->ssa_args.dest; unsigned to = ins->ssa_args.dest;
/* Make sure it's a familiar type of special move. Basically we /* Make sure it's simple enough for us to handle */
* just handle the special dummy moves emitted by the texture
* pipeline. TODO: verify. TODO: why does this break varyings?
*/
if (from >= SSA_FIXED_MINIMUM) continue; if (from >= SSA_FIXED_MINIMUM) continue;
if (from >= ctx->func->impl->ssa_alloc) continue;
if (to < SSA_FIXED_REGISTER(REGISTER_TEXTURE_BASE)) continue; if (to < SSA_FIXED_REGISTER(REGISTER_TEXTURE_BASE)) continue;
if (to > SSA_FIXED_REGISTER(REGISTER_TEXTURE_BASE + 1)) continue; if (to > SSA_FIXED_REGISTER(REGISTER_TEXTURE_BASE + 1)) continue;
bool eliminated = false;
mir_foreach_instr_in_block_from_rev(block, v, mir_prev_op(ins)) { mir_foreach_instr_in_block_from_rev(block, v, mir_prev_op(ins)) {
/* The texture registers are not SSA so be careful.
* Conservatively, just stop if we hit a texture op
* (even if it may not write) to where we are */
if (v->type != TAG_ALU_4)
break;
if (v->ssa_args.dest == from) { if (v->ssa_args.dest == from) {
v->ssa_args.dest = to; /* We don't want to track partial writes ... */
progress = true; if (v->alu.mask == 0xF) {
v->ssa_args.dest = to;
eliminated = true;
}
break;
} }
} }
mir_remove_instruction(ins); if (eliminated)
mir_remove_instruction(ins);
progress |= eliminated;
} }
return progress; return progress;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment