mesa/es: Validate glClear mask in Mesa code rather than the ES wrapper

This commit is contained in:
Ian Romanick 2011-09-20 16:39:30 -07:00
parent f0c99d0a6a
commit e58c19a204
2 changed files with 9 additions and 11 deletions

View file

@ -432,17 +432,6 @@
<return type="void"/>
<param name="mask" type="GLbitfield"/>
</proto>
<desc name="mask" error="GL_INVALID_VALUE">
<value name="0"/>
<value name="(GL_COLOR_BUFFER_BIT)"/>
<value name="(GL_DEPTH_BUFFER_BIT)"/>
<value name="(GL_STENCIL_BUFFER_BIT)"/>
<value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)"/>
<value name="(GL_COLOR_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
<value name="(GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
<value name="(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)"/>
</desc>
</template>
<template name="ClearColor">

View file

@ -167,6 +167,15 @@ _mesa_Clear( GLbitfield mask )
return;
}
/* Accumulation buffers were removed in core contexts, and they never
* existed in OpenGL ES.
*/
if ((mask & GL_ACCUM_BUFFER_BIT) != 0
&& (ctx->API == API_OPENGL_CORE || _mesa_is_gles(ctx))) {
_mesa_error( ctx, GL_INVALID_VALUE, "glClear(GL_ACCUM_BUFFER_BIT)");
return;
}
if (ctx->NewState) {
_mesa_update_state( ctx ); /* update _Xmin, etc */
}