소스 검색

pan/midgard: Simplify and fix vector copyprop

Fixes a regression in QuakeSpasm. See
https://gitlab.freedesktop.org/mesa/mesa/issues/2169 for apitrace.

Closes #2169

Fixes: f72873e6aa ("pan/midgard: Copypropagate vector creation")
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reported-by: Icecream95
master
Alyssa Rosenzweig 6 년 전
부모
커밋
05b839f354
1개의 변경된 파일과 5개의 추가작업 그리고 14개의 파일을 삭제
  1. 5
    14
      src/panfrost/midgard/midgard_opt_copy_prop.c

+ 5
- 14
src/panfrost/midgard/midgard_opt_copy_prop.c 파일 보기

@@ -46,22 +46,13 @@ midgard_opt_copy_prop_reg(compiler_context *ctx, midgard_block *block)
if (ins->has_constants) continue;
if (mir_nontrivial_source2_mod(ins)) continue;
if (mir_nontrivial_outmod(ins)) continue;
if (!mir_single_use(ctx, ins->src[1])) continue;
if (!mir_single_use(ctx, from)) continue;

bool bad = false;
/* Ensure mask is continguous from 0 */
if (!(ins->mask & (1 << COMPONENT_X))) continue;
if (ins->mask & (ins->mask + 1)) continue;

mir_foreach_instr_global(ctx, c) {
if (mir_has_arg(c, ins->src[1])) {
if (ins->mask != c->mask)
bad = true;
}
}

if (bad)
continue;


mir_rewrite_index_dst(ctx, ins->src[1], ins->dest);
mir_rewrite_index_dst(ctx, from, ins->dest);
mir_remove_instruction(ins);
progress |= true;
}

Loading…
취소
저장