From 58bb8172574cf9a911af03326903034daa30a481 Mon Sep 17 00:00:00 2001 From: Dmitriy Nester Date: Thu, 30 Apr 2020 16:25:04 +0300 Subject: [PATCH] mesa: check draw buffer completeness on glClearBufferfv/glClearBufferuiv MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit From OpenGL 4.6, section 9.4.4 "Effects of Framebuffer Completeness on Framebuffer Operations", page 332: "An INVALID_FRAMEBUFFER_OPERATION error is generated by attempts to render to or read from a framebuffer which is not framebuffer complete. This error is generated regardless of whether fragments are actually read from or written to the framebuffer. For example, it is generated when a rendering command is called and the framebuffer is incomplete, even if RASTERIZER_DISCARD is enabled." Signed-off-by: Dmytro Nester Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/clear.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index fda4df59528..ca0ecd95b8c 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -467,6 +467,12 @@ clear_bufferuiv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, _mesa_update_state( ctx ); } + if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE) { + _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION, + "glClearBufferuiv(incomplete framebuffer)"); + return; + } + switch (buffer) { case GL_COLOR: { @@ -555,6 +561,12 @@ clear_bufferfv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer, _mesa_update_state( ctx ); } + if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE) { + _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION, + "glClearBufferfv(incomplete framebuffer)"); + return; + } + switch (buffer) { case GL_DEPTH: /* Page 264 (page 280 of the PDF) of the OpenGL 3.0 spec says: -- 2.30.2