From 8c224d3d9f0eee05ffd2c4423f2c3a6ed64cfb8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Wed, 12 Apr 2017 09:40:28 +0200 Subject: [PATCH] radeonsi: extract derived tess state emit to higher level MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Especially with subsequent changes, this makes it easier to see the sequence of state emits at the higher level. Reviewed-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_state_draw.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index 2c4e3715e45..65b33cee4ef 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -495,15 +495,13 @@ static void si_emit_rasterizer_prim_state(struct si_context *sctx) } static void si_emit_draw_registers(struct si_context *sctx, - const struct pipe_draw_info *info) + const struct pipe_draw_info *info, + unsigned num_patches) { struct radeon_winsys_cs *cs = sctx->b.gfx.cs; unsigned prim = si_conv_pipe_prim(info->mode); unsigned gs_out_prim = si_conv_prim_to_gs_out(sctx->current_rast_prim); - unsigned ia_multi_vgt_param, num_patches = 0; - - if (sctx->tes_shader.cso) - si_emit_derived_tess_state(sctx, info, &num_patches); + unsigned ia_multi_vgt_param; ia_multi_vgt_param = si_get_ia_multi_vgt_param(sctx, info, num_patches); @@ -1093,6 +1091,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) struct pipe_index_buffer ib_tmp; /* for index buffer uploads only */ unsigned mask, dirty_tex_counter; enum pipe_prim_type rast_prim; + unsigned num_patches = 0; if (likely(!info->indirect)) { /* SI-CI treat instance_count==0 as instance_count==1. There is @@ -1290,7 +1289,9 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) sctx->dirty_states = 0; si_emit_rasterizer_prim_state(sctx); - si_emit_draw_registers(sctx, info); + if (sctx->tes_shader.cso) + si_emit_derived_tess_state(sctx, info, &num_patches); + si_emit_draw_registers(sctx, info, num_patches); si_ce_pre_draw_synchronization(sctx); si_emit_draw_packets(sctx, info, ib); -- 2.30.2