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