On Wed, Feb 16, 2005 at 02:10:20PM +0000, Simon Huggins wrote: > Using the siliconmotion driver and attaching an external display I get > corrupted pixels on the right hand side (note not on the bottom as well) > beyond where the display would have stopped.
> e.g. my internal display does 1024x768 and the external LCD does > 1280x1024 so anything from 1024 -> 1280 is corrupted. The corruption > takes the form of two copies of the righthand most parts of the display > which look normal with blues changed to red and then blues changed to > green. > It sounds like: > http://bugs.xfree86.org/show_bug.cgi?id=727 > I've not been able to build X myself to test this yet however. I need > to find a host with enough disk and time to do it. Just to confirm I rebuilt -11 with the attached patch and it did indeed solve this so if you want some low-hanging fruit to please a humble user please apply this... :) I just dropped the following as 083a_siliconmotion_widthfix.diff in debian/patches. It is just the patch in the URL above but rejigged so the build system doesn't barf and I've now confirmed it fixes this bug. Simon. -- [ Deja Moo - the feeling you've heard this bull before. ] Black Cat Networks. http://www.blackcatnetworks.co.uk/
--- xc/programs/Xserver/hw/xfree86/drivers/siliconmotion/smi_driver.c.orig 2005-02-16 19:55:25.000000000 +0000 +++ xc/programs/Xserver/hw/xfree86/drivers/siliconmotion/smi_driver.c 2005-02-16 19:57:08.000000000 +0000 @@ -2676,12 +2676,12 @@ new->VPR0C = pSmi->FBOffset >> 3; if (pSmi->rotate) { - new->VPR10 = ((((min(pSmi->lcdWidth, pSmi->height) * pSmi->Bpp) >> 3) + new->VPR10 = ((((pSmi->height * pSmi->Bpp) >> 3) + 2) << 16) | ((pSmi->height * pSmi->Bpp) >> 3); } else { - new->VPR10 = ((((min(pSmi->lcdWidth, pSmi->width) * pSmi->Bpp) >> 3) + new->VPR10 = ((((pSmi->width * pSmi->Bpp) >> 3) + 2) << 16) | ((pSmi->width * pSmi->Bpp) >> 3); }