Module: Mesa Branch: master Commit: ff353c218a1ab1fd3fb797a4780612ec4b0451d8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff353c218a1ab1fd3fb797a4780612ec4b0451d8
Author: Fredrik Höglund <fred...@kde.org> Date: Mon Nov 11 18:54:15 2013 +0100 mesa: Fix derived vertex state not being updated in glCallList() AEcontext::NewState is not always set when the vertex array state is changed. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71492 Cc: "10.0" <mesa-sta...@lists.freedesktop.org> Reviewed-by: José Fonseca <jfons...@vmware.com> Reviewed-by: Brian Paul <bri...@vmware.com> --- src/mesa/main/api_arrayelt.c | 22 ++++++++++++++++------ 1 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index 6822465..c9d4d03 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -1469,6 +1469,18 @@ check_vbo(AEcontext *actx, struct gl_buffer_object *vbo) } +static inline void +update_derived_client_arrays(struct gl_context *ctx) +{ + struct gl_array_object *arrayObj = ctx->Array.ArrayObj; + + if (arrayObj->NewArrays) { + _mesa_update_array_object_client_arrays(ctx, arrayObj); + arrayObj->NewArrays = 0; + } +} + + /** * Make a list of per-vertex functions to call for each glArrayElement call. * These functions access the array data (i.e. glVertex, glColor, glNormal, @@ -1486,12 +1498,6 @@ _ae_update_state(struct gl_context *ctx) actx->nr_vbos = 0; - if (arrayObj->NewArrays) { - /* update the derived client arrays */ - _mesa_update_array_object_client_arrays(ctx, arrayObj); - arrayObj->NewArrays = 0; - } - /* conventional vertex arrays */ if (arrayObj->_VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) { aa->array = &arrayObj->_VertexAttrib[VERT_ATTRIB_COLOR_INDEX]; @@ -1618,6 +1624,8 @@ _ae_map_vbos(struct gl_context *ctx) if (actx->mapped_vbos) return; + update_derived_client_arrays(ctx); + if (actx->NewState) _ae_update_state(ctx); @@ -1669,6 +1677,8 @@ _ae_ArrayElement(GLint elt) const struct _glapi_table * const disp = GET_DISPATCH(); GLboolean do_map; + update_derived_client_arrays(ctx); + /* If PrimitiveRestart is enabled and the index is the RestartIndex * then we call PrimitiveRestartNV and return. */ _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit