mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
main: rework the compatibility check of visuals in glXMakeCurrent
Now it follows the compatibility criteria listed in section 2.1 of the GLX 1.4 specification. This is needed for post-process effects in SW:KotOR. Signed-off-by: Miklós Máté <mtmkls@gmail.com> Signed-off-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
df37b06276
commit
aad8707b28
1 changed files with 12 additions and 30 deletions
|
|
@ -1525,10 +1525,6 @@ _mesa_copy_context( const struct gl_context *src, struct gl_context *dst,
|
|||
* Check if the given context can render into the given framebuffer
|
||||
* by checking visual attributes.
|
||||
*
|
||||
* Most of these tests could go away because Mesa is now pretty flexible
|
||||
* in terms of mixing rendering contexts with framebuffers. As long
|
||||
* as RGB vs. CI mode agree, we're probably good.
|
||||
*
|
||||
* \return GL_TRUE if compatible, GL_FALSE otherwise.
|
||||
*/
|
||||
static GLboolean
|
||||
|
|
@ -1541,32 +1537,18 @@ check_compatible(const struct gl_context *ctx,
|
|||
if (buffer == _mesa_get_incomplete_framebuffer())
|
||||
return GL_TRUE;
|
||||
|
||||
#if 0
|
||||
/* disabling this fixes the fgl_glxgears pbuffer demo */
|
||||
if (ctxvis->doubleBufferMode && !bufvis->doubleBufferMode)
|
||||
return GL_FALSE;
|
||||
#endif
|
||||
if (ctxvis->stereoMode && !bufvis->stereoMode)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->haveAccumBuffer && !bufvis->haveAccumBuffer)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->haveDepthBuffer && !bufvis->haveDepthBuffer)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->haveStencilBuffer && !bufvis->haveStencilBuffer)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->redMask && ctxvis->redMask != bufvis->redMask)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->greenMask && ctxvis->greenMask != bufvis->greenMask)
|
||||
return GL_FALSE;
|
||||
if (ctxvis->blueMask && ctxvis->blueMask != bufvis->blueMask)
|
||||
return GL_FALSE;
|
||||
#if 0
|
||||
/* disabled (see bug 11161) */
|
||||
if (ctxvis->depthBits && ctxvis->depthBits != bufvis->depthBits)
|
||||
return GL_FALSE;
|
||||
#endif
|
||||
if (ctxvis->stencilBits && ctxvis->stencilBits != bufvis->stencilBits)
|
||||
return GL_FALSE;
|
||||
#define check_component(foo) \
|
||||
if (ctxvis->foo && bufvis->foo && \
|
||||
ctxvis->foo != bufvis->foo) \
|
||||
return GL_FALSE
|
||||
|
||||
check_component(redMask);
|
||||
check_component(greenMask);
|
||||
check_component(blueMask);
|
||||
check_component(depthBits);
|
||||
check_component(stencilBits);
|
||||
|
||||
#undef check_component
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue