summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2007-03-09 15:13:50 +0100
committerMichel Dänzer <michel@tungstengraphics.com>2007-03-09 15:13:50 +0100
commit1b54ee493fb96f944aa81e56fa6f00a8067f87fc (patch)
treedbba3200222c9c60aa7b28c0bc9ca2266c3853b6
parente972265261c421268e4fb806e587378d0adec577 (diff)
parent81722a21d232fa6cfb11fbe3d984abab50e89bcc (diff)
Merge remote branch 'origin/master' into i830-pageflip
Conflicts: src/i830_dri.c
-rw-r--r--src/common.h1
-rw-r--r--src/i810_driver.c7
-rw-r--r--src/i830_dri.c8
-rw-r--r--src/i830_driver.c122
-rw-r--r--src/i830_memory.c8
5 files changed, 18 insertions, 128 deletions
diff --git a/src/common.h b/src/common.h
index 6e8ddbda..f596eb87 100644
--- a/src/common.h
+++ b/src/common.h
@@ -87,7 +87,6 @@ extern const char *I810ddcSymbols[];
extern const char *I810fbSymbols[];
extern const char *I810xaaSymbols[];
extern const char *I810shadowFBSymbols[];
-extern const char *I810shadowSymbols[];
#ifdef XF86DRI
extern const char *I810driSymbols[];
extern const char *I810drmSymbols[];
diff --git a/src/i810_driver.c b/src/i810_driver.c
index 04166b78..6666d7f9 100644
--- a/src/i810_driver.c
+++ b/src/i810_driver.c
@@ -341,12 +341,6 @@ const char *I810driSymbols[] = {
#endif /* I830_ONLY */
-const char *I810shadowSymbols[] = {
- "shadowSetup",
- "shadowAdd",
- NULL
-};
-
const char *I810i2cSymbols[] = {
"xf86CreateI2CBusRec",
"xf86I2CBusInit",
@@ -435,7 +429,6 @@ i810Setup(pointer module, pointer opts, int *errmaj, int *errmin)
I810drmSymbols,
I810driSymbols,
#endif
- I810shadowSymbols,
I810shadowFBSymbols,
I810vbeSymbols, vbeOptionalSymbols,
I810ddcSymbols, I810int10Symbols, NULL);
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 9931acc4..52935744 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -109,10 +109,6 @@ static void I830DRITransitionMultiToSingle3d(ScreenPtr pScreen);
static void I830DRITransitionSingleToMulti3d(ScreenPtr pScreen);
static void I830DRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num);
-#if 0
-static void I830DRIShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
-#endif
-
extern void GlxSetVisualConfigs(int nconfigs,
__GLXvisualConfig * configs,
void **configprivs);
@@ -1418,10 +1414,6 @@ I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg,
* allocate and free 3d-specific memory on demand.
*/
-
-
-
-
/* Use the miext/shadow module to maintain a list of dirty rectangles.
* These are blitted to the back buffer to keep both buffers clean
* during page-flipping when the 3d application isn't fullscreen.
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 0de4d0df..a889612d 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -539,8 +539,10 @@ I830MapMem(ScrnInfoPtr pScrn)
if (!pI830->FbBase)
return FALSE;
- if (I830IsPrimary(pScrn))
- pI830->LpRing->virtual_start = pI830->FbBase + pI830->LpRing->mem->offset;
+ if (I830IsPrimary(pScrn) && pI830->LpRing->mem != NULL) {
+ pI830->LpRing->virtual_start =
+ pI830->FbBase + pI830->LpRing->mem->offset;
+ }
return TRUE;
}
@@ -1235,14 +1237,13 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
pI830->mmModeFlags = 0;
if (!pI830->directRenderingDisabled) {
+ pI830->mmModeFlags = I830_KERNEL_TEX;
#ifdef XF86DRI_MM
Bool tmp = FALSE;
if (!IS_I965G(pI830))
pI830->mmModeFlags |= I830_KERNEL_MM;
- else
#endif
- pI830->mmModeFlags |= I830_KERNEL_TEX;
from = X_PROBED;
@@ -1297,17 +1298,6 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
I830SetupOutputs(pScrn);
SaveHWState(pScrn);
- /* Do an initial detection of the outputs while none are configured on yet.
- * This will give us some likely legitimate response for later if both
- * pipes are already allocated and we're asked to do a detect.
- */
- for (i = 0; i < xf86_config->num_output; i++)
- {
- xf86OutputPtr output = xf86_config->output[i];
-
- output->status = (*output->funcs->detect) (output);
- }
-
if (!xf86InitialConfiguration (pScrn, FALSE))
{
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
@@ -1424,13 +1414,6 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
pI830->SWCursor = TRUE;
}
- if (!xf86RandR12PreInit (pScrn))
- {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "RandR initialization failure\n");
- PreInitCleanup(pScrn);
- return FALSE;
- }
-
if (pScrn->modes == NULL) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No modes.\n");
PreInitCleanup(pScrn);
@@ -1477,7 +1460,7 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
memset(&req, 0, sizeof(req));
req.majorversion = 2;
- req.minorversion = 0;
+ req.minorversion = 1;
if (!LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL, &req,
&errmaj, &errmin)) {
LoaderErrorMsg(NULL, "exa", errmaj, errmin);
@@ -1521,29 +1504,6 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
}
#endif
- /* rotation requires the newer libshadow */
- if (I830IsPrimary(pScrn)) {
- int errmaj, errmin;
- pI830->shadowReq.majorversion = 1;
- pI830->shadowReq.minorversion = 1;
-
- if (!LoadSubModule(pScrn->module, "shadow", NULL, NULL, NULL,
- &pI830->shadowReq, &errmaj, &errmin)) {
- pI830->shadowReq.minorversion = 0;
- if (!LoadSubModule(pScrn->module, "shadow", NULL, NULL, NULL,
- &pI830->shadowReq, &errmaj, &errmin)) {
- LoaderErrorMsg(NULL, "shadow", errmaj, errmin);
- return FALSE;
- }
- }
- } else {
- I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1);
- pI830->shadowReq.majorversion = pI8301->shadowReq.majorversion;
- pI830->shadowReq.minorversion = pI8301->shadowReq.minorversion;
- pI830->shadowReq.patchlevel = pI8301->shadowReq.patchlevel;
- }
- xf86LoaderReqSymLists(I810shadowSymbols, NULL);
-
pI830->preinit = FALSE;
return TRUE;
@@ -1925,18 +1885,6 @@ RestoreHWState(ScrnInfoPtr pScrn)
}
static void
-InitRegisterRec(ScrnInfoPtr pScrn)
-{
- I830Ptr pI830 = I830PTR(pScrn);
- int i;
-
- if (!I830IsPrimary(pScrn)) return;
-
- for (i = 0; i < 8; i++)
- pI830->fence[i] = 0;
-}
-
-static void
I830PointerMoved(int index, int x, int y)
{
ScrnInfoPtr pScrn = xf86Screens[index];
@@ -1964,22 +1912,6 @@ I830PointerMoved(int index, int x, int y)
}
static Bool
-I830CreateScreenResources (ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- I830Ptr pI830 = I830PTR(pScrn);
-
- pScreen->CreateScreenResources = pI830->CreateScreenResources;
- if (!(*pScreen->CreateScreenResources)(pScreen))
- return FALSE;
-
- if (!xf86RandR12CreateScreenResources (pScreen))
- return FALSE;
-
- return TRUE;
-}
-
-static Bool
I830InitFBManager(
ScreenPtr pScreen,
BoxPtr FullBox
@@ -2361,7 +2293,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* For this allocation, switch to a smaller DRI memory manager
* size.
*/
- pI830->mmSize = I830_MM_MINPAGES * GTT_PAGE_SIZE;
+ pI830->mmSize = I830_MM_MINPAGES * GTT_PAGE_SIZE / KB(1);
} else {
pI830->mmSize = savedMMSize;
}
@@ -2521,8 +2453,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
#endif
- InitRegisterRec(pScrn);
-
#ifdef XF86DRI
/*
* pI830->directRenderingDisabled is set once in PreInit. Reinitialise
@@ -2716,38 +2646,12 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pI830->CloseScreen = pScreen->CloseScreen;
pScreen->CloseScreen = I830CloseScreen;
- if (pI830->shadowReq.minorversion >= 1) {
- /* Rotation */
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "RandR enabled, ignore the following RandR disabled message.\n");
- xf86DisableRandR(); /* Disable built-in RandR extension */
- shadowSetup(pScreen);
- /* support all rotations */
- xf86RandR12Init (pScreen);
- if (pI830->useEXA) {
-#ifdef I830_USE_EXA
- if (pI830->EXADriverPtr->exa_minor >= 1) {
- xf86RandR12SetRotations (pScreen, RR_Rotate_0 | RR_Rotate_90 |
- RR_Rotate_180 | RR_Rotate_270);
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- "EXA version %d.%d too old to support rotation\n",
- pI830->EXADriverPtr->exa_major,
- pI830->EXADriverPtr->exa_minor);
- xf86RandR12SetRotations (pScreen, RR_Rotate_0);
- }
-#endif /* I830_USE_EXA */
- } else {
- xf86RandR12SetRotations (pScreen, RR_Rotate_0 | RR_Rotate_90 |
- RR_Rotate_180 | RR_Rotate_270);
- }
- pI830->PointerMoved = pScrn->PointerMoved;
- pScrn->PointerMoved = I830PointerMoved;
- pI830->CreateScreenResources = pScreen->CreateScreenResources;
- pScreen->CreateScreenResources = I830CreateScreenResources;
- } else {
- /* Rotation */
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "libshadow is version %d.%d.%d, required 1.1.0 or greater for rotation.\n",pI830->shadowReq.majorversion,pI830->shadowReq.minorversion,pI830->shadowReq.patchlevel);
- }
+ if (!xf86CrtcScreenInit (pScreen))
+ return FALSE;
+
+ /* Wrap pointer motion to flip touch screen around */
+ pI830->PointerMoved = pScrn->PointerMoved;
+ pScrn->PointerMoved = I830PointerMoved;
if (serverGeneration == 1)
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
diff --git a/src/i830_memory.c b/src/i830_memory.c
index 54cd6beb..d6338ec5 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -1126,8 +1126,8 @@ i830_allocate_depthbuffer(ScrnInfoPtr pScrn)
pI830->depth_buffer =
i830_allocate_memory_tiled(pScrn, "depth buffer", size, pitch,
GTT_PAGE_SIZE, ALIGN_BOTH_ENDS,
- TILING_YMAJOR);
- pI830->depth_tiled = FENCE_YMAJOR;
+ TILING_XMAJOR);
+ pI830->depth_tiled = FENCE_XMAJOR;
}
/* Otherwise, allocate it linear. */
@@ -1386,7 +1386,9 @@ i830_set_fence(ScrnInfoPtr pScrn, int nr, unsigned int offset,
}
}
- if (IS_I9XX(pI830))
+ if ((IS_I945G(pI830) || IS_I945GM(pI830)) && tile_format == TILING_YMAJOR)
+ fence_pitch = pitch / 128;
+ else if (IS_I9XX(pI830))
fence_pitch = pitch / 512;
else
fence_pitch = pitch / 128;