[Mesa-dev] [PATCH 5/8] main: rework the compatibility check of visuals in glXMakeCurrent

Marek Olšák maraeo at gmail.com
Wed Apr 6 10:52:30 UTC 2016


This looks good to me. I'll commit this on April 9th if there are
other comments.

Marek

On Thu, Mar 24, 2016 at 1:12 AM, Miklós Máté <mtmkls at gmail.com> wrote:
> 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 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 dbba136..6af02d1 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
>
>     return GL_TRUE;
>  }
> --
> 2.8.0.rc3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list