From 94506e56424970f30861baf2808020609d752b00 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 8 May 2017 02:11:31 +0200 Subject: [PATCH] st/mesa: unify common code in st_draw_vbo functions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Nicolai Hähnle --- src/mesa/state_tracker/st_draw.c | 48 ++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 78aabb0..15c5b80 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -124,6 +124,23 @@ translate_prim(const struct gl_context *ctx, unsigned prim) return prim; } +static inline void +prepare_draw(struct st_context *st, struct gl_context *ctx) +{ + /* Mesa core state should have been validated already */ + assert(ctx->NewState == 0x0); + + if (unlikely(!st->bitmap.cache.empty)) + st_flush_bitmap_cache(st); + + st_invalidate_readpix_cache(st); + + /* Validate state. */ + if ((st->dirty | ctx->NewDriverState) & ST_PIPELINE_RENDER_STATE_MASK || + st->gfx_shaders_may_be_dirty) { + st_validate_state(st, ST_PIPELINE_RENDER); + } +} /** * This function gets plugged into the VBO module and is called when @@ -148,23 +165,10 @@ st_draw_vbo(struct gl_context *ctx, unsigned i; unsigned start = 0; - /* Mesa core state should have been validated already */ - assert(ctx->NewState == 0x0); - - if (unlikely(!st->bitmap.cache.empty)) - st_flush_bitmap_cache(st); - - st_invalidate_readpix_cache(st); - - /* Validate state. */ - if ((st->dirty | ctx->NewDriverState) & ST_PIPELINE_RENDER_STATE_MASK || - st->gfx_shaders_may_be_dirty) { - st_validate_state(st, ST_PIPELINE_RENDER); - } + prepare_draw(st, ctx); - if (st->vertex_array_out_of_memory) { + if (st->vertex_array_out_of_memory) return; - } /* Initialize pipe_draw_info. */ info.primitive_restart = false; @@ -253,21 +257,11 @@ st_indirect_draw_vbo(struct gl_context *ctx, struct pipe_draw_info info; struct pipe_draw_indirect_info indirect; - /* Mesa core state should have been validated already */ - assert(ctx->NewState == 0x0); assert(stride); + prepare_draw(st, ctx); - st_invalidate_readpix_cache(st); - - /* Validate state. */ - if ((st->dirty | ctx->NewDriverState) & ST_PIPELINE_RENDER_STATE_MASK || - st->gfx_shaders_may_be_dirty) { - st_validate_state(st, ST_PIPELINE_RENDER); - } - - if (st->vertex_array_out_of_memory) { + if (st->vertex_array_out_of_memory) return; - } memset(&indirect, 0, sizeof(indirect)); util_draw_init_info(&info); -- 2.7.4