diff options
author | agd5f <agd5f> | 2004-01-14 18:42:45 +0000 |
---|---|---|
committer | agd5f <agd5f> | 2004-01-14 18:42:45 +0000 |
commit | ee097c1058e34a9666b3f1bc1bd87660d808484c (patch) | |
tree | 0c8e97f521a00a0bbe85b3cb7ba26bc3fb453509 | |
parent | 98fac59a9b9c02a61264760931ec7a86868f8311 (diff) |
Fix pitch for savagespan when 2D is in linear mode.
3 files changed, 16 insertions, 3 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_dri.c b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_dri.c index bc4fc7b40..564a75d8a 100644 --- a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_dri.c +++ b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_dri.c @@ -1432,7 +1432,8 @@ Bool SAVAGEDRIFinishScreenInit( ScreenPtr pScreen ) if(pSAVAGEDRI->width > 1024) shift = 1; - pSAVAGEDRI->aperturePitch = psav->ulAperturePitch; + /* pSAVAGEDRI->aperturePitch = psav->ulAperturePitch; */ + pSAVAGEDRI->aperturePitch = psav->ul3DAperturePitch; } { @@ -1449,10 +1450,10 @@ Bool SAVAGEDRIFinishScreenInit( ScreenPtr pScreen ) || (psav->Chipset == S3_SAVAGE3D)) { if(pSAVAGEDRI->cpp == 2) { - value |= ((psav->lDelta / 4) >> 5) << 24; + value |= ((psav->l3DDelta / 4) >> 5) << 24; /* I assume psav->l3DDelta for 3D */ value |= 2<<30; } else { - value |= ((psav->lDelta / 4) >> 5) << 24; + value |= ((psav->l3DDelta / 4) >> 5) << 24; /* I assume psav->l3DDelta for 3D */ value |= 3<<30; } } else { diff --git a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.c index 2021227d1..1701cd597 100644 --- a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.c +++ b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.c @@ -2863,6 +2863,15 @@ void SavageEnableMode(ScrnInfoPtr pScrn,BOOL bEnable) psav->lDelta = ((psav->lDelta + 31) >> 5) << 5; psav->ulAperturePitch = psav->lDelta; } + + /* if you are using linear mode for 2D, 3D still needs to be tiled, linear AperturePitch + seems to be wrong for savagespan */ + if (psav->Chipset == S3_SAVAGE_MX) + psav->ul3DAperturePitch = 0x2000; + else + psav->ul3DAperturePitch = GetTileAperturePitch(pScrn->virtualX,pScrn->bitsPerPixel); + + psav->l3DDelta = (((pScrn->virtualX * (pScrn->bitsPerPixel >> 3)) + 127) >> 7) << 7; psav->Bpp = pScrn->bitsPerPixel >> 3; psav->cxMemory = psav->lDelta / (psav->Bpp); diff --git a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.h b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.h index 7af6de320..7aa7d55b0 100644 --- a/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.h +++ b/xc/programs/Xserver/hw/xfree86/drivers/savage/savage_driver.h @@ -400,6 +400,9 @@ typedef struct _Savage { Bool bTiled; int lDelta; int ulAperturePitch; /* aperture pitch */ + + int l3DDelta; + int ul3DAperturePitch; /* pitch for 3D */ /* * cxMemory is number of pixels across screen width * cyMemory is number of scanlines in available adapter memory. |