From 646e1123859405da36c7a9920e0c5e270eb4979f Mon Sep 17 00:00:00 2001 From: Plamena Manolova Date: Mon, 2 Oct 2017 23:58:25 +0300 Subject: [PATCH] i965: Indroduce brw_finish_drawing. In order to add our ARB_indirect_parameters implementation we need to refactor brw_try_draw_prims so that it operates on a per primitive basis and move the loop into brw_draw_prims. This commit introduces the brw_finish_drawing function where we move the code that executes once after the loop. Signed-off-by: Plamena Manolova Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_draw.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 1e93cb67c67..513a05bb960 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -658,6 +658,19 @@ brw_prepare_drawing(struct gl_context *ctx, brw->ctx.NewDriverState |= BRW_NEW_VERTICES; } +static void +brw_finish_drawing(struct gl_context *ctx) +{ + struct brw_context *brw = brw_context(ctx); + + if (brw->always_flush_batch) + intel_batchbuffer_flush(brw); + + brw_program_cache_check_size(brw); + brw_postdraw_reconcile_align_wa_slices(brw); + brw_postdraw_set_buffers_need_resolve(brw); +} + /* May fail if out of video memory for texture or vbo upload, or on * fallback conditions. */ @@ -796,13 +809,6 @@ retry: brw_render_state_finished(brw); } - if (brw->always_flush_batch) - intel_batchbuffer_flush(brw); - - brw_program_cache_check_size(brw); - brw_postdraw_reconcile_align_wa_slices(brw); - brw_postdraw_set_buffers_need_resolve(brw); - return; } @@ -863,6 +869,7 @@ brw_draw_prims(struct gl_context *ctx, * to it. */ brw_try_draw_prims(ctx, arrays, prims, nr_prims, xfb_obj, stream, indirect); + brw_finish_drawing(ctx); } void -- 2.30.2