mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
Allow first != 0 in mesa CVA handling, and add more error checking.
This commit is contained in:
parent
2abcc512a3
commit
5857e988be
3 changed files with 27 additions and 9 deletions
|
|
@ -1399,8 +1399,10 @@ _mesa_PopClientAttrib(void)
|
|||
adjust_buffer_object_ref_counts(&ctx->Array, -1);
|
||||
|
||||
ctx->Array.ActiveTexture = data->ActiveTexture;
|
||||
ctx->Array.LockFirst = data->LockFirst;
|
||||
ctx->Array.LockCount = data->LockCount;
|
||||
if (data->LockCount != 0)
|
||||
_mesa_LockArraysEXT(data->LockFirst, data->LockCount);
|
||||
else
|
||||
_mesa_UnlockArraysEXT();
|
||||
|
||||
_mesa_BindVertexArrayAPPLE( data->ArrayObj->Name );
|
||||
|
||||
|
|
|
|||
|
|
@ -809,15 +809,21 @@ _mesa_LockArraysEXT(GLint first, GLsizei count)
|
|||
if (MESA_VERBOSE & VERBOSE_API)
|
||||
_mesa_debug(ctx, "glLockArrays %d %d\n", first, count);
|
||||
|
||||
if (first == 0 && count > 0 &&
|
||||
count <= (GLint) ctx->Const.MaxArrayLockSize) {
|
||||
ctx->Array.LockFirst = first;
|
||||
ctx->Array.LockCount = count;
|
||||
if (first < 0) {
|
||||
_mesa_error( ctx, GL_INVALID_VALUE, "glLockArraysEXT(first)" );
|
||||
return;
|
||||
}
|
||||
else {
|
||||
ctx->Array.LockFirst = 0;
|
||||
ctx->Array.LockCount = 0;
|
||||
if (count <= 0) {
|
||||
_mesa_error( ctx, GL_INVALID_VALUE, "glLockArraysEXT(count)" );
|
||||
return;
|
||||
}
|
||||
if (ctx->Array.LockCount != 0) {
|
||||
_mesa_error( ctx, GL_INVALID_OPERATION, "glLockArraysEXT(reentry)" );
|
||||
return;
|
||||
}
|
||||
|
||||
ctx->Array.LockFirst = first;
|
||||
ctx->Array.LockCount = count;
|
||||
|
||||
ctx->NewState |= _NEW_ARRAY;
|
||||
ctx->Array.NewState |= _NEW_ARRAY_ALL;
|
||||
|
|
@ -836,6 +842,11 @@ _mesa_UnlockArraysEXT( void )
|
|||
if (MESA_VERBOSE & VERBOSE_API)
|
||||
_mesa_debug(ctx, "glUnlockArrays\n");
|
||||
|
||||
if (ctx->Array.LockCount == 0) {
|
||||
_mesa_error( ctx, GL_INVALID_OPERATION, "glUnlockArraysEXT(reexit)" );
|
||||
return;
|
||||
}
|
||||
|
||||
ctx->Array.LockFirst = 0;
|
||||
ctx->Array.LockCount = 0;
|
||||
ctx->NewState |= _NEW_ARRAY;
|
||||
|
|
|
|||
|
|
@ -146,6 +146,11 @@ _mesa_MultiModeDrawElementsIBM( const GLenum * mode, const GLsizei * count,
|
|||
GLenum type, const GLvoid * const * indices,
|
||||
GLsizei primcount, GLint modestride );
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_LockArraysEXT(GLint first, GLsizei count);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_UnlockArraysEXT( void );
|
||||
|
||||
extern void
|
||||
_mesa_init_varray( GLcontext * ctx );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue