diff options
author | Mathias Fröhlich <[email protected]> | 2018-03-16 06:34:35 +0100 |
---|---|---|
committer | Mathias Fröhlich <[email protected]> | 2018-03-22 04:58:52 +0100 |
commit | 5b917862251f365f2c670196f9222b33f4adcd4f (patch) | |
tree | 6ccce53878b2d153b544505a60d277dfa2582af6 | |
parent | d3c604e12e1e2ef1e562f51e529ba18bae2d9af1 (diff) |
mesa: Set DriverFlags.NewArray together with vbo...recalculate_inputs.
Both mean something very similar and are set at the same time now.
For that vbo module to be set from core mesa, implement a public vbo
module method to set that flag. In the longer term the flag should
vanish in favor of a driver flag of the appropriate driver.
Reviewed-by: Brian Paul <[email protected]>
Signed-off-by: Mathias Fröhlich <[email protected]>
-rw-r--r-- | src/mesa/main/state.c | 19 | ||||
-rw-r--r-- | src/mesa/vbo/vbo.h | 9 | ||||
-rw-r--r-- | src/mesa/vbo/vbo_exec.c | 7 |
3 files changed, 32 insertions, 3 deletions
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index e523bccd0ce..a6ae3b90018 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -458,6 +458,14 @@ _mesa_set_vp_override(struct gl_context *ctx, GLboolean flag) } +static void +set_new_array(struct gl_context *ctx) +{ + _vbo_set_recalculate_inputs(ctx); + ctx->NewDriverState |= ctx->DriverFlags.NewArray; +} + + /** * Update ctx->VertexProgram._VPMode. * This is to distinguish whether we're running @@ -490,23 +498,28 @@ _mesa_set_draw_vao(struct gl_context *ctx, struct gl_vertex_array_object *vao, GLbitfield filter) { struct gl_vertex_array_object **ptr = &ctx->Array._DrawVAO; + bool new_array = false; if (*ptr != vao) { _mesa_reference_vao_(ctx, ptr, vao); - ctx->NewDriverState |= ctx->DriverFlags.NewArray; + new_array = true; } if (vao->NewArrays) { _mesa_update_vao_derived_arrays(ctx, vao); vao->NewArrays = 0; - ctx->NewDriverState |= ctx->DriverFlags.NewArray; + new_array = true; } /* May shuffle the position and generic0 bits around, filter out unwanted */ const GLbitfield enabled = filter & _mesa_get_vao_vp_inputs(vao); if (ctx->Array._DrawVAOEnabledAttribs != enabled) - ctx->NewDriverState |= ctx->DriverFlags.NewArray; + new_array = true; + + if (new_array) + set_new_array(ctx); + ctx->Array._DrawVAOEnabledAttribs = enabled; _mesa_set_varying_vp_inputs(ctx, enabled); } diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h index 42436e0fac9..ef2bf9221a2 100644 --- a/src/mesa/vbo/vbo.h +++ b/src/mesa/vbo/vbo.h @@ -293,6 +293,15 @@ struct vbo_inputs /** + * Set the recalculate_inputs flag. + * The method should in the longer run be replaced with listening for the + * DriverFlags.NewArray flag in NewDriverState. But for now ... + */ +void +_vbo_set_recalculate_inputs(struct gl_context *ctx); + + +/** * Initialize inputs. */ void diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index c0b0a11fe51..f9cf8355ed4 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -244,6 +244,13 @@ vbo_merge_prims(struct _mesa_prim *p0, const struct _mesa_prim *p1) void +_vbo_set_recalculate_inputs(struct gl_context *ctx) +{ + vbo_context(ctx)->exec.array.recalculate_inputs = GL_TRUE; +} + + +void _vbo_init_inputs(struct vbo_inputs *inputs) { inputs->current = 0; |