aco: don't enable store_global for helper invocations
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
This commit is contained in:
parent
31e68e230f
commit
cc742562c1
|
@ -134,6 +134,9 @@ bool needs_exact(aco_ptr<Instruction>& instr) {
|
|||
} else if (instr->format == Format::MIMG) {
|
||||
MIMG_instruction *mimg = static_cast<MIMG_instruction *>(instr.get());
|
||||
return mimg->disable_wqm;
|
||||
} else if (instr->format == Format::FLAT || instr->format == Format::GLOBAL) {
|
||||
FLAT_instruction *flat = static_cast<FLAT_instruction *>(instr.get());
|
||||
return flat->disable_wqm;
|
||||
} else {
|
||||
return instr->format == Format::EXP || instr->opcode == aco_opcode::p_fs_buffer_store_smem;
|
||||
}
|
||||
|
|
|
@ -4764,6 +4764,8 @@ void visit_store_global(isel_context *ctx, nir_intrinsic_instr *instr)
|
|||
flat->glc = glc;
|
||||
flat->dlc = false;
|
||||
flat->offset = offset;
|
||||
flat->disable_wqm = true;
|
||||
ctx->program->needs_exact = true;
|
||||
ctx->block->instructions.emplace_back(std::move(flat));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -850,6 +850,7 @@ struct FLAT_instruction : public Instruction {
|
|||
bool dlc; /* NAVI: device level coherent */
|
||||
bool lds;
|
||||
bool nv;
|
||||
bool disable_wqm;
|
||||
};
|
||||
|
||||
struct Export_instruction : public Instruction {
|
||||
|
|
|
@ -371,6 +371,8 @@ static void print_instr_format_specific(struct Instruction *instr, FILE *output)
|
|||
fprintf(output, " lds");
|
||||
if (flat->nv)
|
||||
fprintf(output, " nv");
|
||||
if (flat->disable_wqm)
|
||||
fprintf(output, " disable_wqm");
|
||||
break;
|
||||
}
|
||||
case Format::MTBUF: {
|
||||
|
|
Loading…
Reference in New Issue