summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2011-06-07 12:27:04 -0700
committerIan Romanick <[email protected]>2011-06-07 18:29:52 -0700
commit7f9c17aaa82f5a8a1d5f077eba4d5889d3c3b298 (patch)
tree24191f231b6a8d785dbac7ca6577d0a7ec2f162e
parent1d71bbed3bbeb99d954cc137e4923c5db6e063c8 (diff)
mesa: Don't try to clear a NULL renderbuffer
In an ES2 context (or if GL_ARB_ES2_compatibility) is supported, the framebuffer can be complete with some attachments be missing. In this case the _ColorDrawBuffers pointer will be NULL. Fixes the crash in piglit test fbo-missing-attachment-clear. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=37739 Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Eric Anholt <[email protected]> NOTE: This is a candidate for the stable branches.
-rw-r--r--src/mesa/swrast/s_clear.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/swrast/s_clear.c b/src/mesa/swrast/s_clear.c
index 75805f9605d..9e9b5311684 100644
--- a/src/mesa/swrast/s_clear.c
+++ b/src/mesa/swrast/s_clear.c
@@ -165,6 +165,14 @@ clear_color_buffers(struct gl_context *ctx)
for (buf = 0; buf < ctx->DrawBuffer->_NumColorDrawBuffers; buf++) {
struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[buf];
+
+ /* If this is an ES2 context or GL_ARB_ES2_compatibility is supported,
+ * the framebuffer can be complete with some attachments be missing. In
+ * this case the _ColorDrawBuffers pointer will be NULL.
+ */
+ if (rb == NULL)
+ continue;
+
if (ctx->Color.ColorMask[buf][0] == 0 ||
ctx->Color.ColorMask[buf][1] == 0 ||
ctx->Color.ColorMask[buf][2] == 0 ||