Support setTexBuffer2 in AIGLX.

Fixes broken GLX_tfp, specifically, lets compositors ignore un-defined
alpha channel for pixmaps.
This commit is contained in:
Kristian Høgsberg 2009-04-01 17:42:33 -04:00
parent 1c101d75d4
commit 91b697efde
3 changed files with 16 additions and 3 deletions

View File

@ -1134,6 +1134,7 @@ static void
determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
{
GLenum target = 0;
GLenum format = 0;
int i;
__GLXdrawable *pGlxDraw;
@ -1150,6 +1151,9 @@ determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
break;
}
}
if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
format = attribs[2 * i + 1];
}
if (!target) {
@ -1162,6 +1166,7 @@ determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
}
pGlxDraw->target = target;
pGlxDraw->format = format;
}
int __glXDisp_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)

View File

@ -72,6 +72,7 @@ struct __GLXdrawable {
int refCount;
GLenum target;
GLenum format;
/*
** Event mask

View File

@ -251,9 +251,16 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
if (texBuffer == NULL)
return Success;
texBuffer->setTexBuffer(context->driContext,
glxPixmap->target,
drawable->driDrawable);
if (texBuffer->base.version >= 2 && texBuffer->setTexBuffer2 != NULL) {
(*texBuffer->setTexBuffer2)(context->driContext,
glxPixmap->target,
glxPixmap->format,
drawable->driDrawable);
} else {
texBuffer->setTexBuffer(context->driContext,
glxPixmap->target,
drawable->driDrawable);
}
return Success;
}