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 <plamena.manolova@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Plamena Manolova 2017-10-02 23:58:25 +03:00 committed by Kenneth Graunke
parent c63c8f5135
commit 646e112385

View 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