Flattening pass adjustments

This commit is contained in:
Lander Gallastegi 2025-03-27 11:54:58 +01:00 committed by Lander Gallastegi
parent 057df5d3d1
commit fff2383c5e
2 changed files with 5 additions and 1 deletions

View File

@ -164,6 +164,7 @@ using BufferAlias = EmitContext::BufferAlias;
Id EmitReadConst(EmitContext& ctx, IR::Inst* inst) {
const auto& srt_flatbuf = ctx.buffers.back();
ASSERT_MSG(inst->Flags<u32>() == 1, "ReadConst was not processed by the flattening pass");
ASSERT(srt_flatbuf.binding >= 0 && srt_flatbuf.buffer_type == BufferType::ReadConstUbo);
const auto [id, pointer_type] = srt_flatbuf[BufferAlias::U32];
const Id ptr{ctx.OpAccessChain(pointer_type, id, ctx.u32_zero_value, ctx.Def(inst->Arg(1)))};

View File

@ -159,14 +159,17 @@ static void GenerateSrtReadConsts(IR::Program& program, PassInfo& pass_info, Poo
++IR::Block::InstructionList::s_iterator_to(*inst));
ir.StoreFlatbuf(IR::U32(inst), save_offset);
}
data.original_inst->SetFlags<u32>(1);
IR::IREmitter ir(*data.original_inst);
data.original_inst->SetArg(0, ir.Imm32(0));
if (data.count_dw > 1) {
IR::U32 counter =
WrapInstWithCounter(data.original_inst, data.offset_dw, original_first_block);
data.original_inst->SetArg(1, counter);
} else {
IR::IREmitter ir(*data.original_inst);
data.original_inst->SetArg(1, ir.Imm32(data.offset_dw));
}
}
DeadCodeEliminationPass(sub_program);
IR::DumpProgram(sub_program, sub_program.info, "srt");