summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--configure.ac2
-rw-r--r--src/i810.h2
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_dri.h2
-rw-r--r--src/i830_driver.c53
-rw-r--r--src/i830_video.c4
7 files changed, 57 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index e9418252..432a3d9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-03-03 Alan Hourihane <alanh@fairlite.demon.co.uk>
+
+ * configure.ac:
+ * src/i810.h:
+ * src/i830.h:
+ * src/i830_dri.h:
+ * src/i830_driver.c: (I830BIOSPreInit), (I830BIOSScreenInit),
+ (I830BIOSCloseScreen):
+ * src/i830_video.c:
+ Check the version of shadow being used and turn off rotation if
+ it isn't the right one.
+ Bump the Xvideo resolution support from 1920x1080 to 1920x1088.
+
2006-02-20 Alan Hourihane <alanh@fairlite.demon.co.uk>
* src/i830_rotate.c: (I915UpdateRotate), (I830UpdateRotate):
diff --git a/configure.ac b/configure.ac
index 665b76a7..55c8c793 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-i810],
- 1.5.0.0,
+ 1.5.2.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-i810)
diff --git a/src/i810.h b/src/i810.h
index a1ed9f27..35143166 100644
--- a/src/i810.h
+++ b/src/i810.h
@@ -67,7 +67,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define I810_DRIVER_NAME "i810"
#define I810_MAJOR_VERSION 1
#define I810_MINOR_VERSION 5
-#define I810_PATCHLEVEL 0
+#define I810_PATCHLEVEL 1
/* HWMC Surfaces */
diff --git a/src/i830.h b/src/i830.h
index 11695a20..660cba60 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -221,6 +221,7 @@ typedef struct _I830Rec {
#endif
unsigned int LinearAlloc;
+ XF86ModReqInfo shadowReq; /* to test for later libshadow */
I830MemRange RotatedMem;
I830MemRange RotatedMem2;
Rotation rotation;
diff --git a/src/i830_dri.h b/src/i830_dri.h
index b1cb5887..e511ac7f 100644
--- a/src/i830_dri.h
+++ b/src/i830_dri.h
@@ -10,7 +10,7 @@
#define I830_MAJOR_VERSION 1
#define I830_MINOR_VERSION 5
-#define I830_PATCHLEVEL 0
+#define I830_PATCHLEVEL 1
#define I830_REG_SIZE 0x80000
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 622565c8..fb748752 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3516,9 +3516,26 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
}
#endif
- if (!xf86LoadSubModule(pScrn, "shadow")) {
- PreInitCleanup(pScrn);
- return FALSE;
+ /* 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);
@@ -5104,17 +5121,21 @@ I830BIOSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pI830->CloseScreen = pScreen->CloseScreen;
pScreen->CloseScreen = I830BIOSCloseScreen;
- /* 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 */
- I830RandRInit(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;
+ 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 */
+ I830RandRInit(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 (serverGeneration == 1)
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
@@ -5827,7 +5848,9 @@ I830BIOSCloseScreen(int scrnIndex, ScreenPtr pScreen)
pI830->used3D = NULL;
}
- pScrn->PointerMoved = pI830->PointerMoved;
+ if (pI830->shadowReq.minorversion >= 1)
+ pScrn->PointerMoved = pI830->PointerMoved;
+
pScrn->vtSema = FALSE;
pI830->closing = FALSE;
pScreen->CloseScreen = pI830->CloseScreen;
diff --git a/src/i830_video.c b/src/i830_video.c
index 28e95be9..b655280d 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -118,9 +118,9 @@ static Atom xvBrightness, xvContrast, xvColorKey, xvPipe, xvDoubleBuffer;
static Atom xvGamma0, xvGamma1, xvGamma2, xvGamma3, xvGamma4, xvGamma5;
#define IMAGE_MAX_WIDTH 1920
-#define IMAGE_MAX_HEIGHT 1080
+#define IMAGE_MAX_HEIGHT 1088
#define IMAGE_MAX_WIDTH_LEGACY 1024
-#define IMAGE_MAX_HEIGHT_LEGACY 1080
+#define IMAGE_MAX_HEIGHT_LEGACY 1088
#if !VIDEO_DEBUG
#define ErrorF Edummy