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.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user