mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-01 15:02:40 +00:00
Flattening pass adjustments
This commit is contained in:
parent
057df5d3d1
commit
fff2383c5e
@ -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)))};
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user