[Mesa-dev] [PATCH 1/2] mesa: Don't try to clear a NULL renderbuffer

Brian Paul brianp at vmware.com
Tue Jun 7 13:50:50 PDT 2011


On 06/07/2011 02:01 PM, Ian Romanick wrote:
> From: Ian Romanick<ian.d.romanick at 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 <brianp at vmware.com>

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

-Brian


More information about the mesa-dev mailing list