On 2018-04-06 06:18 PM, Mario Kleiner wrote: > On Fri, Apr 6, 2018 at 12:01 PM, Michel Dänzer <mic...@daenzer.net> wrote: >> On 2018-03-27 07:53 PM, Daniel Stone wrote: >>> On 12 March 2018 at 20:45, Mario Kleiner <mario.kleiner...@gmail.com> wrote: >>>> We need to distinguish if a backing pixmap of a window is >>>> XRGB2101010 or XBGR2101010, as different gpu hw supports >>>> different formats. NVidia hw prefers XBGR, whereas AMD and >>>> Intel are happy with XRGB. >>>> >>>> We use the red channel mask of the visual to distinguish at >>>> depth 30, but because we can't easily get the associated >>>> visual of a Pixmap, we use the visual of the x-screens root >>>> window instead as a proxy. >>>> >>>> This fixes desktop composition of color depth 30 windows >>>> when the X11 compositor uses EGL. >>> >>> I have no reason to doubt your testing, so this patch is: >>> Acked-by: Daniel Stone <dani...@collabora.com> >>> >>> But it does rather fill me with trepidation, given that X11 Pixmaps >>> are supposed to be a dumb 'bag of bits', doing nothing else than >>> providing the same number and size of channels to the actual client >>> data for the Visual associated with the Window. >> >> As far as X11 is concerned, the number of channels and their sizes don't >> even matter; a pixmap is simply a container for an unsigned integer of n >> bits (where n is the pixmap depth) per pixel, with no inherent meaning >> attached to those values. >> >> That said, I'm not sure this is true for EGL as well. But even if it >> isn't, there would have to be another mechanism to determine the format, >> e.g. a config associated with the EGL pixmap. The pixmap doesn't even >> necessarily have the same depth as the root window, so using the >> latter's visual doesn't make much sense. > > Hi Michel. I thought with this patch i was implementing what you > proposed earlier as a heuristic on how to get around the "pixmaps > don't have an inherent format, only a depth" problem?
Do you have a pointer to that discussion? > My (possibly inaccurate) understanding is that one can only create a > depth 30 pixmap if the x-screen runs at depth >= 30. It only exposes > depth 30 as supported pixmap format (xdpyinfo) if xorg.conf > DefaultDepth 30 is selected, whereas other depths like > 1,4,8,15,16,24,32 are always supported at default depth 24. That sounds like an X server issue. Just like 32, there's no fundamental reason a pixmap couldn't have depth 30 despite the screen depth being lower. Out of curiosity, can you share the output of xdpyinfo with nouveau at depth 30? > Iff depth 30 is selected, then the root window has depth 30, and a depth 30 > visual. If each driver only exports one channel ordering for depth 30, > then the channel ordering of any pixmaps associated drawable should be > the same as the one of the root window. Repeat after me: "X11 pixmaps don't have a format." :) They're just bags of bits. Does __DRI_IMAGE_FORMAT_ARGB8888 work for depth 30 as well, by any chance? -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev