[Mesa-dev] [PATCH 4/7] main: rework the compatibility check of visuals in glXMakeCurrent
Brian Paul
brianp at vmware.com
Thu Feb 25 01:37:14 UTC 2016
On 02/24/2016 04:35 PM, Miklós Máté wrote:
> Now it follows the GLX 1.4 specification.
Can you elaborate on that a bit?
> This fixes post-processing in SW:KotOR.
>
> Signed-off-by: Miklós Máté <mtmkls at gmail.com>
> ---
> src/mesa/main/context.c | 42 ++++++++++++------------------------------
> 1 file changed, 12 insertions(+), 30 deletions(-)
>
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index 26eee28..6c16229 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -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
IIRC, Ian had some comments on this so he should re-review. But since
Mesa doesn't actually used the red/green/blueMask fields (AFAIK), I'm
not sure what those checks are good for.
Nowadays, we should be flexible enough that a single context can render
to any variety of 16 or 24 or 32bpp surfaces. If we don't care about
the bits/channel, we shouldn't care about the masks either.
-Brian
>
> return GL_TRUE;
> }
>
More information about the mesa-dev
mailing list