mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 11:58:10 +02:00
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-stable@lists.freedesktop.org> Reviewed-by: José Fonseca <jfonseca@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
469b42ee21
commit
ff353c218a
1 changed files with 16 additions and 6 deletions
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue