Support setTexBuffer2 in AIGLX.
Fixes broken GLX_tfp, specifically, lets compositors ignore un-defined alpha channel for pixmaps.
This commit is contained in:
parent
1c101d75d4
commit
91b697efde
|
@ -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)
|
||||
|
|
|
@ -72,6 +72,7 @@ struct __GLXdrawable {
|
|||
int refCount;
|
||||
|
||||
GLenum target;
|
||||
GLenum format;
|
||||
|
||||
/*
|
||||
** Event mask
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user