On Sat, 2004-01-10 at 23:25, David Dawes wrote:

> The 24-bit flags argument to xf86SetDepthBpp() should probably
> be:
> 
>   Support24bppFb | Support32bppFb | SupportConvert32to24 | PreferConvert32to24
> 
> Since the actual framebuffer format is passed explicitly, this should
> be safe in all cases.  It will then default to using 32-bit bpp for
> depth 24 pixmaps.  It is possible that this change will fix the rotation
> problem you are seeing at 24-bit.
> 
> It would be better to disable randr only when rotation is enabled.
> Have you tried adding it to the else part of the following:
> 
>         if (!fPtr->rotate)
>           FBDevDGAInit(pScrn, pScreen);
>         else {
>           xf86DrvMsg(scrnIndex, X_INFO, "Rotated display, disabling DGA\n");
> 
>           if (pScrn->bitsPerPixel == 24)
>             xf86DrvMsg(scrnIndex, X_WARNING, "Rotation might be broken in 24 bpp
> \n");
>         }

Applying the changes as you suggested, I have the attached diff.  While
this allows correct rotation and (unrotated) 24 bpp, rotated 24 bpp is
still corrupt.

--Jonathan Thambidurai


412c412,413
< 	if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,0))
---
> 	if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,
> 			     Support24bppFb | Support32bppFb | SupportConvert32to24 | PreferConvert32to24))
795c796,797
< 
---
> 	  xf86DrvMsg(scrnIndex, X_INFO, "Enabling Driver rotation, disabling RandR\n");
> 	  xf86DisableRandR();

Reply via email to