radeonsi/gfx11: emit SQ_NON_EVENT for tessellation at the end of IBs

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16328>
This commit is contained in:
Marek Olšák
2022-01-22 09:56:39 -05:00
committed by Marge Bot
parent b27b9b0c31
commit c33a930cea
+10
View File
@@ -115,6 +115,16 @@ void si_flush_gfx_cs(struct si_context *ctx, unsigned flags, struct pipe_fence_h
if (ctx->chip_class >= GFX7)
si_cp_dma_wait_for_idle(ctx, &ctx->gfx_cs);
/* If we use s_sendmsg to set tess factors to all 0 or all 1 instead of writing to the tess
* factor buffer, we need this at the end of command buffers:
*/
if (ctx->chip_class == GFX11 && ctx->tess_rings) {
radeon_begin(cs);
radeon_emit(PKT3(PKT3_EVENT_WRITE, 0, 0));
radeon_emit(EVENT_TYPE(V_028A90_SQ_NON_EVENT) | EVENT_INDEX(0));
radeon_end();
}
/* Wait for draw calls to finish if needed. */
if (wait_flags) {
ctx->flags |= wait_flags;