From 1f90a2be60ae7fab68b5a9124fc0523e66bb422e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 15 May 2023 20:11:27 -0400 Subject: [PATCH] radeonsi: move emitting draws states out of si_emit_all_states Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- .../drivers/radeonsi/si_state_draw.cpp | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 551a5b6b690..9343f7a5229 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -2073,13 +2073,9 @@ static void si_get_draw_start_count(struct si_context *sctx, const struct pipe_d } } -template ALWAYS_INLINE -static void si_emit_all_states(struct si_context *sctx, const struct pipe_draw_info *info, - const struct pipe_draw_indirect_info *indirect, - enum pipe_prim_type prim, unsigned instance_count, - unsigned min_vertex_count, bool primitive_restart, - unsigned skip_atom_mask) +template +ALWAYS_INLINE +static void si_emit_all_states(struct si_context *sctx, unsigned skip_atom_mask) { si_emit_rasterizer_prim_state(sctx); if (HAS_TESS) @@ -2111,12 +2107,6 @@ static void si_emit_all_states(struct si_context *sctx, const struct pipe_draw_i sctx->dirty_states = 0; } - - /* Emit draw states. */ - si_emit_vs_state(sctx, info->index_size); - si_emit_draw_registers - (sctx, indirect, prim, instance_count, primitive_restart, - info->restart_index, min_vertex_count); } #define DRAW_CLEANUP do { \ @@ -2411,9 +2401,14 @@ static void si_draw(struct pipe_context *ctx, bool primitive_restart = !IS_DRAW_VERTEX_STATE && info->primitive_restart; /* Emit all states except possibly render condition. */ - si_emit_all_states - (sctx, info, indirect, prim, instance_count, min_direct_count, - primitive_restart, masked_atoms); + si_emit_all_states(sctx, masked_atoms); + + /* Emit draw states. */ + si_emit_vs_state(sctx, index_size); + si_emit_draw_registers + (sctx, indirect, prim, instance_count, primitive_restart, + info->restart_index, min_direct_count); + if (sctx->flags) sctx->emit_cache_flush(sctx, &sctx->gfx_cs); /* <-- CUs are idle here if we waited. */