From f8c0a99d52be913f16a1760b3f4f7cfda9919d24 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 6 Jun 2024 19:01:40 +0300 Subject: [PATCH] anv: emit conditional after gfx state flushing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In a following change the predicate registers might be used when flushing the state. Signed-off-by: Lionel Landwerlin Reviewed-by: José Roberto de Souza Part-of: --- src/intel/vulkan/genX_cmd_draw.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_draw.c b/src/intel/vulkan/genX_cmd_draw.c index bc0b0d23d9d..361a50ded44 100644 --- a/src/intel/vulkan/genX_cmd_draw.c +++ b/src/intel/vulkan/genX_cmd_draw.c @@ -960,9 +960,6 @@ void genX(CmdDraw)( */ genX(flush_pipeline_select_3d)(cmd_buffer); - if (cmd_buffer->state.conditional_render_enabled) - genX(cmd_emit_conditional_render_predicate)(cmd_buffer); - #if GFX_VER < 11 cmd_buffer_emit_vertex_constants_and_flush(cmd_buffer, get_vs_prog_data(pipeline), @@ -973,6 +970,9 @@ void genX(CmdDraw)( genX(cmd_buffer_flush_gfx_state)(cmd_buffer); genX(emit_ds)(cmd_buffer); + if (cmd_buffer->state.conditional_render_enabled) + genX(cmd_emit_conditional_render_predicate)(cmd_buffer); + genX(emit_breakpoint)(&cmd_buffer->batch, cmd_buffer->device, true); anv_batch_emit(&cmd_buffer->batch, _3DPRIMITIVE_DIRECT, prim) { @@ -1141,9 +1141,6 @@ void genX(CmdDrawIndexed)( */ genX(flush_pipeline_select_3d)(cmd_buffer); - if (cmd_buffer->state.conditional_render_enabled) - genX(cmd_emit_conditional_render_predicate)(cmd_buffer); - #if GFX_VER < 11 const struct brw_vs_prog_data *vs_prog_data = get_vs_prog_data(pipeline); cmd_buffer_emit_vertex_constants_and_flush(cmd_buffer, vs_prog_data, @@ -1152,6 +1149,10 @@ void genX(CmdDrawIndexed)( #endif genX(cmd_buffer_flush_gfx_state)(cmd_buffer); + + if (cmd_buffer->state.conditional_render_enabled) + genX(cmd_emit_conditional_render_predicate)(cmd_buffer); + genX(emit_breakpoint)(&cmd_buffer->batch, cmd_buffer->device, true); anv_batch_emit(&cmd_buffer->batch, _3DPRIMITIVE_DIRECT, prim) { @@ -1448,9 +1449,6 @@ void genX(CmdDrawIndirectByteCountEXT)( */ genX(flush_pipeline_select_3d)(cmd_buffer); - if (cmd_buffer->state.conditional_render_enabled) - genX(cmd_emit_conditional_render_predicate)(cmd_buffer); - #if GFX_VER < 11 const struct brw_vs_prog_data *vs_prog_data = get_vs_prog_data(pipeline); if (vs_prog_data->uses_firstvertex || @@ -1462,6 +1460,9 @@ void genX(CmdDrawIndirectByteCountEXT)( genX(cmd_buffer_flush_gfx_state)(cmd_buffer); + if (cmd_buffer->state.conditional_render_enabled) + genX(cmd_emit_conditional_render_predicate)(cmd_buffer); + struct mi_builder b; mi_builder_init(&b, cmd_buffer->device->info, &cmd_buffer->batch); const uint32_t mocs = anv_mocs_for_address(cmd_buffer->device, &counter_buffer->address);