mesa: work around failed assertion for GL_RGBA16_SNORM accum buffer
authorBrian Paul <brianp@vmware.com>
Mon, 4 Apr 2011 20:37:16 +0000 (14:37 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 4 Apr 2011 20:37:28 +0000 (14:37 -0600)
We use this format to represent the accum buffer.  No snorm texture
sampling or rendering takes place.

Fixes failed assertion with swrast and any app using the accum buffer
(and glxinfo).

src/mesa/main/renderbuffer.c

index 67ee589d77665def695658dc2c1be90b7feec5a9..e6d5fe4bff1d5bdfdea472ca551f0c0c9ed14549 100644 (file)
@@ -1122,7 +1122,20 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *
    rb->Width = width;
    rb->Height = height;
    rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
-   ASSERT(rb->_BaseFormat);
+
+   if (rb->Name == 0 &&
+       internalFormat == GL_RGBA16_SNORM &&
+       rb->_BaseFormat == 0) {
+      /* NOTE: This is a special case just for accumulation buffers.
+       * This is a very limited use case- there's no snorm texturing or
+       * rendering going on.
+       */
+      rb->_BaseFormat = GL_RGBA;
+   }
+   else {
+      /* the internalFormat should have been error checked long ago */
+      ASSERT(rb->_BaseFormat);
+   }
 
    return GL_TRUE;
 }