i965: Indroduce brw_finish_drawing.
authorPlamena Manolova <plamena.n.manolova@gmail.com>
Mon, 2 Oct 2017 20:58:25 +0000 (23:58 +0300)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 2 Oct 2017 23:25:36 +0000 (16:25 -0700)
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 <plamena.manolova@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_draw.c

index 1e93cb6..513a05b 100644 (file)
@@ -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