[Piglit] [PATCH 1/4] utils/glx: Don't create X pixmaps deeper than the root window.
Mario Kleiner
mario.kleiner.de at gmail.com
Wed Sep 6 08:13:26 UTC 2017
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.de at 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
More information about the Piglit
mailing list