diff options
author | Eric Anholt <eric@anholt.net> | 2010-09-07 14:31:22 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-09-07 14:34:23 -0700 |
commit | 50a3349bee04088bee3491622d6ef3c032d01eac (patch) | |
tree | 6c89ebe510804f81e2262c4f59eedb579d055a96 /src | |
parent | acd7c21541110d7ae6b9e63647391f65946e5c5d (diff) |
mesa: Set the base format of GL_ALPHA FBOs and teach swrast about it.
Fixes assertion failures in fbo-alpha with a debug build of Mesa.
Bug #29781.
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/fbobject.c | 6 | ||||
-rw-r--r-- | src/mesa/swrast/s_readpix.c | 3 | ||||
-rw-r--r-- | src/mesa/swrast/s_span.c | 6 |
3 files changed, 12 insertions, 3 deletions
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index defdebbdef..72cbb09ab8 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -925,6 +925,12 @@ GLenum _mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat) { switch (internalFormat) { + case GL_ALPHA: + case GL_ALPHA4: + case GL_ALPHA8: + case GL_ALPHA12: + case GL_ALPHA16: + return GL_ALPHA; case GL_RGB: case GL_R3_G3_B2: case GL_RGB4: diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index 553fd9a76d..1de481248b 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -191,7 +191,8 @@ fast_read_rgba_pixels( GLcontext *ctx, if (!rb) return GL_FALSE; - ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB); + ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_ALPHA); /* clipping should have already been done */ ASSERT(x + width <= (GLint) rb->Width); diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index 8931cdec1b..28c82990e0 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -1248,7 +1248,8 @@ _swrast_write_rgba_span( GLcontext *ctx, SWspan *span) 4 * span->end * sizeof(GLchan)); } - ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB); + ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_ALPHA); if (ctx->Color._LogicOpEnabled) { _swrast_logicop_rgba_span(ctx, rb, span); @@ -1346,7 +1347,8 @@ _swrast_read_rgba_span( GLcontext *ctx, struct gl_renderbuffer *rb, ASSERT(rb); ASSERT(rb->GetRow); - ASSERT(rb->_BaseFormat == GL_RGB || rb->_BaseFormat == GL_RGBA); + ASSERT(rb->_BaseFormat == GL_RGB || rb->_BaseFormat == GL_RGBA || + rb->_BaseFormat == GL_ALPHA); if (rb->DataType == dstType) { rb->GetRow(ctx, rb, length, x + skip, y, |