Commit 3f9cb2eb authored by Eric Anholt's avatar Eric Anholt

v3d: Wait for TMU writes to complete before continuing after a spill.

The simulator complained that we had write responses outstanding at shader
end.  It seems that a TMU read does not guarantee that previous TMU writes
by the thread have completed, which surprised me.

Cc: "18.2" <mesa-stable@lists.freedesktop.org>
parent ccbe33af
......@@ -102,7 +102,7 @@ v3d_choose_spill_node(struct v3d_compile *c, struct ra_graph *g,
started_last_seg = true;
/* Track when we're in between a TMU setup and the
* final LDTMU from that TMU setup. We can't
* final LDTMU or TMUWT from that TMU setup. We can't
* spill/fill any temps during that time, because that
* involves inserting a new TMU setup/LDTMU sequence.
*/
......@@ -110,6 +110,10 @@ v3d_choose_spill_node(struct v3d_compile *c, struct ra_graph *g,
is_last_ldtmu(inst, block))
in_tmu_operation = false;
if (inst->qpu.type == V3D_QPU_INSTR_TYPE_ALU &&
inst->qpu.alu.add.op == V3D_QPU_A_TMUWT)
in_tmu_operation = false;
if (v3d_qpu_writes_tmu(&inst->qpu))
in_tmu_operation = true;
}
......@@ -206,6 +210,7 @@ v3d_spill_reg(struct v3d_compile *c, int spill_temp)
inst->dst);
v3d_emit_spill_tmua(c, spill_offset);
vir_emit_thrsw(c);
vir_TMUWT(c);
c->spills++;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment