xlib: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values
authorBrian Paul <brianp@vmware.com>
Fri, 4 Jan 2013 00:31:22 +0000 (17:31 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 4 Jan 2013 22:18:53 +0000 (15:18 -0700)
Fixes piglit glx-dont-care-mask test.

Note: This is a candidate for the stable branches.

Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/x11/fakeglx.c

index 3dca405304fba86f59eadca4e7e625937f254b2f..2208d5e7f77c72cb6480f3ec368caa36ea562dd0 100644 (file)
@@ -911,6 +911,20 @@ choose_visual( Display *dpy, int screen, const int *list, GLboolean fbConfig )
 
    while (*parselist) {
 
+      if (fbConfig &&
+          parselist[1] == GLX_DONT_CARE &&
+          parselist[0] != GLX_LEVEL) {
+         /* For glXChooseFBConfig(), skip attributes whose value is
+          * GLX_DONT_CARE (-1), unless it's GLX_LEVEL (which can legitimately be
+          * a negative value).
+          *
+          * From page 17 (23 of the pdf) of the GLX 1.4 spec:
+          * GLX DONT CARE may be specified for all attributes except GLX LEVEL.
+          */
+         parselist += 2;
+         continue;
+      }
+
       switch (*parselist) {
         case GLX_USE_GL:
             if (fbConfig) {