mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
mesa/clear: update ClearBufferuiv error handling for GL 4.5 spec
This fixes dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.clear_bufferuiv and brings the logic up to spec with GL 4.5 Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
758162923b
commit
3a0051bea9
1 changed files with 6 additions and 25 deletions
|
|
@ -445,32 +445,13 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case GL_DEPTH:
|
||||
case GL_STENCIL:
|
||||
/* Page 264 (page 280 of the PDF) of the OpenGL 3.0 spec says:
|
||||
*
|
||||
* "The result of ClearBuffer is undefined if no conversion between
|
||||
* the type of the specified value and the type of the buffer being
|
||||
* cleared is defined (for example, if ClearBufferiv is called for a
|
||||
* fixed- or floating-point buffer, or if ClearBufferfv is called
|
||||
* for a signed or unsigned integer buffer). This is not an error."
|
||||
*
|
||||
* In this case we take "undefined" and "not an error" to mean "ignore."
|
||||
* Even though we could do something sensible for GL_STENCIL, page 263
|
||||
* (page 279 of the PDF) says:
|
||||
*
|
||||
* "Only ClearBufferiv should be used to clear stencil buffers."
|
||||
*
|
||||
* Note that we still need to generate an error for the invalid
|
||||
* drawbuffer case (see the GL_STENCIL case in _mesa_ClearBufferiv).
|
||||
*/
|
||||
if (drawbuffer != 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferuiv(drawbuffer=%d)",
|
||||
drawbuffer);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
default:
|
||||
/* Page 498 of the PDF, section '17.4.3.1 Clearing Individual Buffers'
|
||||
* of the OpenGL 4.5 spec states:
|
||||
*
|
||||
* "An INVALID_ENUM error is generated by ClearBufferuiv and
|
||||
* ClearNamedFramebufferuiv if buffer is not COLOR."
|
||||
*/
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glClearBufferuiv(buffer=%s)",
|
||||
_mesa_enum_to_string(buffer));
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue