diff options
author | Eric Anholt <eric@anholt.net> | 2010-05-25 08:00:51 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-06-10 00:22:01 -0700 |
commit | 262cdbd957b68878adf1fb3edcf478604ed9f171 (patch) | |
tree | 1e31420a9d64ecd66309e4ff36db0aa016d42598 | |
parent | ceba688cb54016a9f6ff70761b2c459698bfd7f0 (diff) |
mesa: Allow GL_ALPHA FBOs with ARB_framebuffer_object.
Drivers still reject them today, but cairo would like to use these.
-rw-r--r-- | src/mesa/main/fbobject.c | 7 | ||||
-rw-r--r-- | src/mesa/main/framebuffer.c | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index f33e027857..1a2e9b1da6 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -393,7 +393,9 @@ test_attachment_completeness(const GLcontext *ctx, GLenum format, if (format == GL_COLOR) { if (baseFormat != GL_RGB && - baseFormat != GL_RGBA) { + baseFormat != GL_RGBA && + (!ctx->Extensions.ARB_framebuffer_object || + baseFormat != GL_ALPHA)) { att_incomplete("bad format"); att->Complete = GL_FALSE; return; @@ -572,7 +574,8 @@ _mesa_test_framebuffer_completeness(GLcontext *ctx, struct gl_framebuffer *fb) f = texImg->_BaseFormat; numImages++; if (f != GL_RGB && f != GL_RGBA && f != GL_DEPTH_COMPONENT - && f != GL_DEPTH_STENCIL_EXT) { + && f != GL_DEPTH_STENCIL_EXT + && (!ctx->Extensions.ARB_framebuffer_object || f != GL_ALPHA)) { fb->_Status = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT; fbo_incomplete("texture attachment incomplete", -1); return; diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 31689c8fe8..01f84180af 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -544,7 +544,8 @@ _mesa_update_framebuffer_visual(struct gl_framebuffer *fb) const GLenum baseFormat = _mesa_get_format_base_format(rb->Format); const gl_format fmt = rb->Format; - if (baseFormat == GL_RGBA || baseFormat == GL_RGB) { + if (baseFormat == GL_RGBA || baseFormat == GL_RGB || + baseFormat == GL_ALPHA) { fb->Visual.redBits = _mesa_get_format_bits(fmt, GL_RED_BITS); fb->Visual.greenBits = _mesa_get_format_bits(fmt, GL_GREEN_BITS); fb->Visual.blueBits = _mesa_get_format_bits(fmt, GL_BLUE_BITS); |