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();