summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_assembler.cpp7
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp3
2 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/r600/sfn/sfn_assembler.cpp b/src/gallium/drivers/r600/sfn/sfn_assembler.cpp
index 00197d0153d..265c6ca4f19 100644
--- a/src/gallium/drivers/r600/sfn/sfn_assembler.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_assembler.cpp
@@ -754,7 +754,7 @@ void AssamblerVisitor::visit(const RatInstr& instr)
struct r600_bytecode_gds gds;
/* The instruction writes to the retuen buffer loaction, and
- * the value will actually be read bach, so make sure all previous writes
+ * the value will actually be read back, so make sure all previous writes
* have been finished */
if (m_ack_suggested /*&& instr.has_instr_flag(Instr::ack_rat_return_write)*/)
emit_wait_ack();
@@ -1088,6 +1088,11 @@ void AssamblerVisitor::emit_loop_begin(bool vpm)
void AssamblerVisitor::emit_loop_end()
{
+ if (m_ack_suggested) {
+ emit_wait_ack();
+ m_ack_suggested = false;
+ }
+
r600_bytecode_add_cfinst(m_bc, CF_OP_LOOP_END);
m_callstack.pop(FC_LOOP);
assert(m_loop_nesting);
diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp
index 4b0d835de24..376075de971 100644
--- a/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_instr_mem.cpp
@@ -700,8 +700,7 @@ bool RatInstr::emit_image_store(nir_intrinsic_instr *intrin, Shader& shader)
auto store = new RatInstr(op, RatInstr::STORE_TYPED, value, coord, imageid,
image_offset, 1, 0xf, 0);
- if (nir_intrinsic_has_access(intrin) & ACCESS_COHERENT)
- store->set_ack();
+ store->set_ack();
shader.emit_instruction(store);
return true;
}