diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_query.c b/src/gallium/drivers/freedreno/a6xx/fd6_query.c index 48233ba4912..7796f1eb521 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_query.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_query.c @@ -99,7 +99,14 @@ occlusion_pause(struct fd_acc_query *aq, struct fd_batch *batch) assert_dt * counter delta in the epilogue ring. */ struct fd_ringbuffer *epilogue = fd_batch_get_epilogue(batch); - fd_wfi(batch, epilogue); + + OUT_PKT7(epilogue, CP_WAIT_REG_MEM, 6); + OUT_RING(epilogue, CP_WAIT_REG_MEM_0_FUNCTION(WRITE_NE) | + CP_WAIT_REG_MEM_0_POLL_MEMORY); + OUT_RELOC(epilogue, query_sample(aq, stop)); + OUT_RING(epilogue, CP_WAIT_REG_MEM_3_REF(0xffffffff)); + OUT_RING(epilogue, CP_WAIT_REG_MEM_4_MASK(0xffffffff)); + OUT_RING(epilogue, CP_WAIT_REG_MEM_5_DELAY_LOOP_CYCLES(16)); /* result += stop - start: */ OUT_PKT7(epilogue, CP_MEM_TO_MEM, 9);