diff options
author | Ian Romanick <[email protected]> | 2011-09-20 16:39:30 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2012-08-29 15:09:34 -0700 |
commit | e58c19a204a028b0c3db7416250387ba98ed0a2d (patch) | |
tree | 3766729dd17efdebd46445994230c03064ca4d4f /src/mesa | |
parent | f0c99d0a6a897189dd4b66f508385eb2ecf3f76f (diff) |
mesa/es: Validate glClear mask in Mesa code rather than the ES wrapper
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/APIspec.xml | 11 | ||||
-rw-r--r-- | src/mesa/main/clear.c | 9 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 1de7014c5bc..44dcd210078 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -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"> diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index cfb060018c7..f07d5333b65 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -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 */ } |