On 09/06/2017 09:30 AM, Michel Dänzer wrote:
On 05/09/17 02:52 PM, Mario Kleiner wrote:
XCreatePixmap doesn't like that. Fixes piglit regression if the
GL implementation exposes RGB10 depth 30 FBConfigs, but the X-Screen
is set to default DefaultDepth of 24 bits, and therefore the root
window only supports depth 24 pixmaps.

On RGB10 enabled Mesa fixes these tests on depth 24 screen:

glx-visuals-depth -pixmap
glx-visuals-stencil -pixmap

Signed-off-by: Mario Kleiner <mario.kleiner...@gmail.com>
---
  tests/util/piglit-glx-util.c | 6 ++++++
  1 file changed, 6 insertions(+)

diff --git a/tests/util/piglit-glx-util.c b/tests/util/piglit-glx-util.c
index 95e33ae..643692a 100644
--- a/tests/util/piglit-glx-util.c
+++ b/tests/util/piglit-glx-util.c
@@ -273,6 +273,7 @@ piglit_glx_iterate_pixmap_fbconfigs(enum piglit_result 
(*draw)(Display *dpy,
        bool any_fail = false;
        bool any_pass = false;
        Window root_win;
+       int root_depth;
Display *dpy = XOpenDisplay(NULL);
        if (!dpy) {
@@ -281,6 +282,7 @@ piglit_glx_iterate_pixmap_fbconfigs(enum piglit_result 
(*draw)(Display *dpy,
        }
        screen = DefaultScreen(dpy);
        root_win = RootWindow(dpy, screen);
+       root_depth = DefaultDepth(dpy, screen);
configs = glXGetFBConfigs(dpy, screen, &n_configs);
        if (!configs) {
@@ -305,6 +307,10 @@ piglit_glx_iterate_pixmap_fbconfigs(enum piglit_result 
(*draw)(Display *dpy,
glXGetFBConfigAttrib(dpy, config, GLX_BUFFER_SIZE,
                                     &depth);
+
+               if (depth > root_depth)
+                       continue;
+
                ctx = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE,
                                          NULL, true);
                pix = XCreatePixmap(dpy, root_win,


This is not correct. This X server, running at depth 24, supports the
following pixmap depths according to xdpyinfo:

number of supported pixmap formats:    7
supported pixmap formats:
     depth 1, bits_per_pixel 1, scanline_pad 32
     depth 4, bits_per_pixel 8, scanline_pad 32
     depth 8, bits_per_pixel 8, scanline_pad 32
     depth 15, bits_per_pixel 16, scanline_pad 32
     depth 16, bits_per_pixel 16, scanline_pad 32
     depth 24, bits_per_pixel 32, scanline_pad 32
     depth 32, bits_per_pixel 32, scanline_pad 32

It sounds like this doesn't list depth 30 for you, which indicates an
issue with the Xorg (driver) changes for depth 30 support.


What i see is the same as above for DefaultDepth 24, but for DefaultDepth 30 i additionally get

      depth 30, bits_per_pixel 32, scanline_pad 32

But i think re-reading the XCreatePixmap man page i think i know what you mean. It actually says "The depth argument must be one of the depths supported by the screen of the specified drawable, or a BadValue error results."

So that check is too strict, as it doesn't matter what the root window has by default, but what the screen associated with the root window supports.

So i think a proper check would be to get all supported depths via XListDepths() and then skip configs with a 'depth' that isn't contained in the returned list?

thanks,
-mario
_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to