diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/mtypes.h | 1 | ||||
| -rw-r--r-- | src/mesa/main/state.c | 2 | ||||
| -rw-r--r-- | src/mesa/vbo/vbo_exec_array.c | 5 | 
3 files changed, 8 insertions, 0 deletions
| diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 09e17d9110..b7473e1ca8 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1643,6 +1643,7 @@ struct gl_array_attrib     GLuint RestartIndex;     GLbitfield NewState;		/**< mask of _NEW_ARRAY_* values */ +   GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */     /* GL_ARB_vertex_buffer_object */     struct gl_buffer_object *ArrayBufferObj; diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index cce1b464f0..502c429294 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -662,6 +662,8 @@ _mesa_update_state_locked( struct gl_context *ctx )     ctx->NewState = 0;     ctx->Driver.UpdateState(ctx, new_state);     ctx->Array.NewState = 0; +   if (!ctx->Array.RebindArrays) +      ctx->Array.RebindArrays = (new_state & (_NEW_ARRAY | _NEW_PROGRAM)) != 0;  } diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 80085c17c5..6749541b77 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -502,8 +502,13 @@ recalculate_input_bindings(struct gl_context *ctx)  static void  bind_arrays(struct gl_context *ctx)  { +   if (!ctx->Array.RebindArrays) { +      return; +   } +     bind_array_obj(ctx);     recalculate_input_bindings(ctx); +   ctx->Array.RebindArrays = GL_FALSE;  } | 
