[PATCH xserver 3/3] render: Fix default picture format initialization

Peter Harris pharris at opentext.com
Thu Feb 22 23:53:23 UTC 2018

> "depth" for a picture format is the sum of bits of a/r/g/b, and not x.
> The default format list was creating an x8r8g8b8 format at depth 32,
> which is wrong. Likewise, servers supporting depth 30 would get an
> x8r8g8b8 format at depth 30, which is nonsense.

>      formats[nformats].format = PICT_x8r8g8b8;
> -    formats[nformats].depth = 32;
> +    formats[nformats].depth = 24;

The RENDER extension forces a depth 32 pixmap format. It does not force depth 24. So with a 16bpp root window, there may not be a depth 24 pixmap format, and this picture format would not be usable at all (BadMatch with every possible drawable). Also, d32 x8r8g8b8 is used in the wild (eg. it looks like gtk2 sometimes uses it to avoid manually filling the alpha channel with 0xFF). I suspect we want to keep this one as-is.

A "depth 30 x8r8g8b8" probably isn't useful most of the time, but maybe it makes sense for PutImage-then-convert-in-the-server an x8r8g8b8 image to x2r10g10b10 without needing a second (not-depth-30) pixmap?

Peter Harris

More information about the xorg-devel mailing list