On Thu, 2009-10-08 at 19:11 -0700, Aaron Plattner wrote: 
> On Sun, Aug 02, 2009 at 08:00:01AM -0700,  wrote:
> > 
> > diff --git a/composite/compinit.c b/composite/compinit.c
> > index dfc3929..6159e4e 100644
> > --- a/composite/compinit.c
> > +++ b/composite/compinit.c
> > @@ -238,6 +238,7 @@ static CompAlternateVisual  altVisuals[] = {
> >      {      24,     PICT_r8g8b8 },
> >  #endif
> >      {      32,     PICT_a8r8g8b8 },
> > +    {      32,     PICT_b8g8r8a8 },
> >  };
> >  
> >  static const int NUM_COMP_ALTERNATE_VISUALS = sizeof(altVisuals) /
> > @@ -272,7 +273,8 @@ compAddAlternateVisual(ScreenPtr pScreen, CompScreenPtr 
> > cs,
> >     return TRUE;
> >  
> >      pPictFormat = PictureMatchFormat (pScreen, alt->depth, alt->format);
> > -    if (!pPictFormat)
> > +    if (!pPictFormat ||
> > +   pPictFormat->direct.red != pScreen->visuals[0].offsetRed)
> >     return FALSE;
> >  
> >      vid = xalloc(sizeof(VisualID));
> 
> This breaks Composite at depth 16:
> 
> [formatted for clarity]
> 
> (gdb) p pPictFormat->direct
> $7 = {red = 16, redMask = 255, green = 8, greenMask = 255, blue = 0,
>       blueMask = 255, alpha = 24, alphaMask = 255}
> (gdb) p *pPictFormat
> $8 = {id = 180, format = 166024, type = 1 '\001', depth = 32 ' ',
>       direct = {red = 16, redMask = 255, green = 8, greenMask = 255,
>                 blue = 0, blueMask = 255, alpha = 24,
>                 alphaMask = 255},
>       index = {vid = 0, pColormap = 0x0, nvalues = 0, pValues = 0x0,
>                devPrivate = 0x0}}
> (gdb) p pScreen->visuals[0]
> $9 = {vid = 33, class = 4, bitsPerRGBValue = 8, ColormapEntries = 64,
>       nplanes = 16, redMask = 63488, greenMask = 2016, blueMask = 31,
>       offsetRed = 11, offsetGreen = 5, offsetBlue = 0}
> 
> Since pPictFormat->direct.red is 16 and pScreen->visuals[0].offsetRed is 11, 
> it
> returns FALSE and compScreenInit bails out.

Hmm, right. The two hunks above were aimed towards my first approach for
fixing radeon KMS on big endian machines, by making the root window
visual BGRA. I've since abandoned that approach for a different one, so
those hunks are not needed anymore and obviously even harmful. I'll
submit a patch to revert them.



-- 
Earthling Michel Dänzer           |                http://www.vmware.com
Libre software enthusiast         |          Debian, X and DRI developer
_______________________________________________
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to