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é <mtm...@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;
  }


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to