[cogl/cogl-1.14] glx do not use multisample visual config for front or pixmap



commit 1f84b5c9b41fb053e7d96b93e3558ca03eed2ae0
Author: Jerome Glisse <jglisse redhat com>
Date:   Tue Jan 29 18:37:41 2013 -0500

    glx do not use multisample visual config for front or pixmap
    
    There is no guaranty that glXGetFBConfigs will return fbconfig ordered
    with non msaa config first. This patch make sure that non msaa config
    get choose.
    
    Signed-off-by: Jerome Glisse <jglisse redhat com>
    Reviewed-by: Robert Bragg <robert linux intel com>
    
    (cherry picked from commit 93b7b4c850dd928bf21ee168a95641a8d631f713)

 cogl/winsys/cogl-winsys-glx.c |   29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/cogl/winsys/cogl-winsys-glx.c b/cogl/winsys/cogl-winsys-glx.c
index 234e9da..24aee14 100644
--- a/cogl/winsys/cogl-winsys-glx.c
+++ b/cogl/winsys/cogl-winsys-glx.c
@@ -776,13 +776,20 @@ glx_attributes_from_framebuffer_config (CoglDisplay *display,
   attributes[i++] = GLX_STENCIL_SIZE;
   attributes[i++] = config->need_stencil ? 1: GLX_DONT_CARE;
 
-  if (glx_renderer->glx_major == 1 && glx_renderer->glx_minor >= 4 &&
-      config->samples_per_pixel)
-    {
-       attributes[i++] = GLX_SAMPLE_BUFFERS;
-       attributes[i++] = 1;
-       attributes[i++] = GLX_SAMPLES;
-       attributes[i++] = config->samples_per_pixel;
+  if (glx_renderer->glx_major == 1 && glx_renderer->glx_minor >= 4)
+    {
+       if (config->samples_per_pixel)
+         {
+            attributes[i++] = GLX_SAMPLE_BUFFERS;
+            attributes[i++] = 1;
+            attributes[i++] = GLX_SAMPLES;
+            attributes[i++] = config->samples_per_pixel;
+         }
+       else
+         {
+            attributes[i++] = GLX_SAMPLE_BUFFERS;
+            attributes[i++] = 0;
+         }
     }
 
   attributes[i++] = None;
@@ -2024,6 +2031,16 @@ get_fbconfig_for_depth (CoglContext *context,
       if (value != depth && (value - alpha) != depth)
         continue;
 
+      if (glx_renderer->glx_major == 1 && glx_renderer->glx_minor >= 4)
+        {
+          glx_renderer->glXGetFBConfigAttrib (dpy,
+                                              fbconfigs[i],
+                                              GLX_SAMPLES,
+                                              &value);
+          if (value > 1)
+            continue;
+        }
+
       value = 0;
       if (depth == 32)
         {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]