Mesa (master): aco: don't enable store_global for helper invocations
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Nov 29 18:07:21 UTC 2019
Module: Mesa
Branch: master
Commit: cc742562c133672c989b155d58ddc6794f9b67b8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cc742562c133672c989b155d58ddc6794f9b67b8
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Wed Nov 27 17:15:54 2019 +0000
aco: don't enable store_global for helper invocations
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
---
src/amd/compiler/aco_insert_exec_mask.cpp | 3 +++
src/amd/compiler/aco_instruction_selection.cpp | 2 ++
src/amd/compiler/aco_ir.h | 1 +
src/amd/compiler/aco_print_ir.cpp | 2 ++
4 files changed, 8 insertions(+)
diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp
index c2693608a1a..ba0d1f04a01 100644
--- a/src/amd/compiler/aco_insert_exec_mask.cpp
+++ b/src/amd/compiler/aco_insert_exec_mask.cpp
@@ -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;
}
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index cb33814f17f..60963060dea 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -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));
}
}
diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h
index 98d59ea2d63..60f06393aa5 100644
--- a/src/amd/compiler/aco_ir.h
+++ b/src/amd/compiler/aco_ir.h
@@ -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 {
diff --git a/src/amd/compiler/aco_print_ir.cpp b/src/amd/compiler/aco_print_ir.cpp
index f641a21da34..5ced1d2d7bb 100644
--- a/src/amd/compiler/aco_print_ir.cpp
+++ b/src/amd/compiler/aco_print_ir.cpp
@@ -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: {
More information about the mesa-commit
mailing list