[Mesa-dev] [PATCH 3/3] egl/x11: Handle both depth 30 formats for eglCreateImage().

Michel Dänzer michel at daenzer.net
Tue Apr 10 08:42:17 UTC 2018


On 2018-04-10 10:22 AM, Mario Kleiner wrote:
> On 04/09/2018 12:12 PM, Michel Dänzer wrote:
>> On 2018-04-06 08:56 PM, Mario Kleiner wrote:
>>
>> I'm interested in the full xdpyinfo *at screen depth 30*, in particular
>> whether it lists only one variant of depth 30 visuals. If so, one
>> possibility for a kludge would be to just look at any depth 30 visual.
> 
> Ok, the fresh v2 patch implements that kludge. This one retested to work
> on nouveau, ati, intel.
> 
> On intel and nouveau we only get one channel mask for depth 30 visuals
> in xdpyinfo. On amd we get both masks for xrgb2101010 and xbgr2101010,
> as the amd gallium drivers expose both formats, but the ordering is
> xrgb2101010 first, so that's fine when picking the first depth 30 visual
> to get the channel mask for decisions.

Hmm, that sounds fragile though when there are both variants; is there
any guarantee they can't appear in the opposite order?


>>> The basic problem with EGL based compositing is that for
>>> eglCreateImageKHR() all we have is the EGLDisplay and EGLContext used
>>> for importing an image resource.
>>
>> Is there no EGLConfig associated somehow?
> 
> I guess we could get the EGLConfig from the context, but i assume this
> context of the importing application (e.g., typically x11 compositor)
> could have an EGLConfig possibly unrelated to depth 30 pixmaps.

Really, the compositor should explicitly specify the format based on the
window visual in this case. But from discussion on IRC, EGL doesn't seem
to have a mechanism for that yet.


>> P.S. IME nouveau is in for a world of pain in general with a format
>> which doesn't start at bit 0. Once upon a time, I explored this approach
>> for depth 24 on big-endian hosts, but ran into lots of issues both in
>> xserver and on the client side.
> 
> Can you clarify for me what you mean with "doesn't start at bit 0"? The
> position of red and blue channel is swapped in nouveau's depth 30
> format, but the red channel fills the 10 LSBs. So if there are padding
> bits, they are the 2 MSBs.

Yeah, I misunderstood what the two variants are here, sorry for the noise.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list