aco: Reset scratch_rsrc on blocks without predecessors

Fixes hangs with raytracing in Hellblade: Senua's Sacrifice.

Fixes: 3d4f6a00b ('aco/spill: allow for disconnected CFG')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23586>
This commit is contained in:
Friedrich Vock 2023-06-12 10:18:37 +02:00 committed by Marge Bot
parent 67a0f2532f
commit 7f3cfcc96a

View file

@ -1755,6 +1755,11 @@ assign_spill_slots(spill_ctx& ctx, unsigned spills_to_vgpr)
last_top_level_block_idx = block.index;
end_unused_spill_vgprs(ctx, block, vgpr_spill_temps, slots, ctx.spills_entry[block.index]);
/* If the block has no predecessors (for example in RT resume shaders),
* we cannot reuse the current scratch_rsrc temp because its definition is unreachable */
if (block.linear_preds.empty())
ctx.scratch_rsrc = Temp();
}
std::vector<aco_ptr<Instruction>>::iterator it;