On 06/07/2011 02:01 PM, Ian Romanick wrote:
From: Ian Romanick<ian.d.roman...@intel.com>

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
---
  src/mesa/swrast/s_clear.c |    8 ++++++++
  1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/mesa/swrast/s_clear.c b/src/mesa/swrast/s_clear.c
index 75805f9..9e9b531 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 ||

Reviewed-by: Brian Paul <bri...@vmware.com>

I suspect that similar checks will be needed elsewhere for glDraw/CopyPixels() and ordinary rendering.

-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to