xf86-video-intel: src/i830_dri.c src/i830_driver.c src/i830.h src/Makefile.am

Alan Hourihane alanh at kemper.freedesktop.org
Mon Jun 19 13:35:55 EEST 2006


 src/Makefile.am   |    6 +++++-
 src/i830.h        |    2 +-
 src/i830_dri.c    |   11 +++++++++--
 src/i830_driver.c |    9 ++++++---
 4 files changed, 21 insertions(+), 7 deletions(-)

New commits:
diff-tree a73ab7f0e6e3b0462e05c0031ffd602ed3e2bcd4 (from 1fe3dd38eb613475d62140850e64767defed7d34)
Author: Alan Hourihane <alanh at fairlite.demon.co.uk>
Date:   Mon Jun 19 11:35:42 2006 +0100

    additions for rotation fixes

diff --git a/src/Makefile.am b/src/Makefile.am
index c64c203..2745e8c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -54,7 +54,11 @@ i810_drv_la_SOURCES = \
          i830_modes.c \
          i830_video.c \
          i830_rotate.c \
-	 i830_randr.c
+	 i830_randr.c \
+	 i830_3d.c \
+	 i830_reg.h \
+	 i915_3d.c \
+	 i915_reg.h
 
 if DRI
 i810_drv_la_SOURCES += \
diff --git a/src/i830.h b/src/i830.h
index d227662..4fa3328 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -394,7 +394,7 @@ extern void I830PrintErrorState(ScrnInfo
 extern void I830Sync(ScrnInfoPtr pScrn);
 extern void I830InitHWCursor(ScrnInfoPtr pScrn);
 extern Bool I830CursorInit(ScreenPtr pScreen);
-extern void I830EmitInvarientState(ScrnInfoPtr pScrn);
+extern void IntelEmitInvarientState(ScrnInfoPtr pScrn);
 extern void I830SelectBuffer(ScrnInfoPtr pScrn, int buffer);
 
 extern void I830RefreshRing(ScrnInfoPtr pScrn);
diff --git a/src/i830_dri.c b/src/i830_dri.c
index 13d2cfd..ed5e685 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -1182,14 +1182,16 @@ I830DRIMoveBuffers(WindowPtr pParent, DD
    pI830->AccelInfoRec->NeedToSync = TRUE;
 }
 
+extern I830EmitInvarientState(ScrnInfoPtr pScrn);
+extern I915EmitInvarientState(ScrnInfoPtr pScrn);
+
 /* Initialize the first context */
 void
-I830EmitInvarientState(ScrnInfoPtr pScrn)
+IntelEmitInvarientState(ScrnInfoPtr pScrn)
 {
    I830Ptr pI830 = I830PTR(pScrn);
    CARD32 ctx_addr;
 
-
    ctx_addr = pI830->ContextMem.Start;
    /* Align to a 2k boundry */
    ctx_addr = ((ctx_addr + 2048 - 1) / 2048) * 2048;
@@ -1202,6 +1204,11 @@ I830EmitInvarientState(ScrnInfoPtr pScrn
 	       CTXT_PALETTE_SAVE_DISABLE | CTXT_PALETTE_RESTORE_DISABLE);
       ADVANCE_LP_RING();
    }
+
+   if (IS_I9XX(pI830))
+      I915EmitInvarientState(pScrn);
+   else
+      I830EmitInvarientState(pScrn);
 }
 
 /* Use callbacks from dri.c to support pageflipping mode for a single
diff --git a/src/i830_driver.c b/src/i830_driver.c
index e43e355..a4b891b 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -5107,12 +5107,13 @@ I830BIOSScreenInit(int scrnIndex, Screen
    }
 #endif
 
+   /* Setup 3D engine, needed for rotation too */
+   IntelEmitInvarientState(pScrn);
+
 #ifdef XF86DRI
    if (pI830->directRenderingEnabled) {
       pI830->directRenderingOpen = TRUE;
       xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Enabled\n");
-      /* Setup 3D engine */
-      I830EmitInvarientState(pScrn);
    } else {
       if (driDisabled)
 	 xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n");
@@ -5622,7 +5623,6 @@ I830BIOSEnterVT(int scrnIndex, int flags
       if (!pI830->starting) {
 	 I830DRIResume(screenInfo.screens[scrnIndex]);
       
-	 I830EmitInvarientState(pScrn);
 	 I830RefreshRing(pScrn);
 	 I830Sync(pScrn);
 	 DO_RING_IDLE();
@@ -5634,6 +5634,9 @@ I830BIOSEnterVT(int scrnIndex, int flags
    }
 #endif
 
+   /* Needed for rotation */
+   IntelEmitInvarientState(pScrn);
+
    if (pI830->checkDevices)
       pI830->devicesTimer = TimerSet(NULL, 0, 1000, I830CheckDevicesTimer, pScrn);
 



More information about the xorg-commit mailing list