Module: Mesa Branch: master Commit: 94506e56424970f30861baf2808020609d752b00 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=94506e56424970f30861baf2808020609d752b00
Author: Marek Olšák <[email protected]> Date: Mon May 8 02:11:31 2017 +0200 st/mesa: unify common code in st_draw_vbo functions Reviewed-by: Nicolai Hähnle <[email protected]> --- 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 78aabb0896..15c5b80f29 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); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
