Mesa (master): mesa: work around failed assertion for GL_RGBA16_SNORM accum buffer

Brian Paul brianp at kemper.freedesktop.org
Mon Apr 4 13:39:00 PDT 2011


Module: Mesa
Branch: master
Commit: fdb04c0384838d983ccd1bc239dcce2b37ee77f8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdb04c0384838d983ccd1bc239dcce2b37ee77f8

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Apr  4 14:37:16 2011 -0600

mesa: work around failed assertion for GL_RGBA16_SNORM accum buffer

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 |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c
index 67ee589..e6d5fe4 100644
--- a/src/mesa/main/renderbuffer.c
+++ b/src/mesa/main/renderbuffer.c
@@ -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;
 }



More information about the mesa-commit mailing list