[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-intel: Changes to 'debian-experimental'



 ChangeLog         |   46 +++++++++++++++++
 debian/changelog  |    9 ++-
 src/common.h      |    8 +--
 src/i810_driver.c |    6 ++
 src/i830_driver.c |   10 +++
 src/i830_video.c  |  143 +++++++++++++++++++++++-------------------------------
 src/i830_video.h  |    1 
 src/i965_render.c |    4 -
 8 files changed, 138 insertions(+), 89 deletions(-)

New commits:
commit 424e052c2d28791fd9836e09c28805a3daa56ca0
Author: Drew Parsons <dparsons@debian.org>
Date:   Tue Jun 5 18:37:38 2007 +1000

    Upload to experimental.
    
    Pull in latest upstream git (probably contains final Xv fix).
    Closes: #417860.

diff --git a/ChangeLog b/ChangeLog
index 9b5351a..0d11e7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+commit 8a19e7d57bc23dd163b45e0ab7deca4f074c934d
+Author: Keith Packard <keithp@dulcimer.keithp.com>
+Date:   Tue Jun 5 00:09:57 2007 -0700
+
+    Always ensure the pipe A is lit when activating overlay on pipe B.
+    
+    Ok, so moving video from pipe A to pipe B still requires that pipe A be
+    active during the transition. Instead of trying to be fancy, just ensure
+    that pipe A is running on each transition to pipe B.
+
+commit e986f6cb62f8644c5fa835bd7dfb7b014c2677c5
+Author: Keith Packard <keithp@dulcimer.keithp.com>
+Date:   Mon Jun 4 23:52:23 2007 -0700
+
+    Automatically switch overlay when crtcs are reconfigured.
+    
+    As crtcs are disabled and enabled, make sure the automatic crtc selection
+    mechanism drives overlay configuration at each request to display an image.
+
+commit 0984c1fc0963f1ebab31f5b8fce5ad4c387fbd2c
+Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
+Date:   Thu May 31 10:17:26 2007 +0800
+
+    Add pci ids for 945GME
+
+commit 88ee25ebad78e54d243d728b775a69365359b5fb
+Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
+Date:   Thu May 31 10:13:30 2007 +0800
+
+    Add pci ids for 965GME/GLE chip
+
+commit 92e4deb50e049cc83cbde4995ba0b901feceb15a
+Author: Keith Packard <keithp@neko.keithp.com>
+Date:   Wed May 30 11:49:07 2007 -0600
+
+    Extend XV_PIPE range to include new -1 value
+
+commit 888a4a5f469bf955e3ee3e184b628808ae8a4498
+Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
+Date:   Wed May 30 14:42:35 2007 +0800
+
+    Fix i965 render's draw clip rectangle
+    
+    Use scrn's virtual size is not correct in rotation rendering.
+    This fixes initial rotation problem on i965.
+
 commit 516fb73ffee0aea7cf892e6703d37f8ecf52b812
 Author: Eric Anholt <eric@anholt.net>
 Date:   Tue May 29 10:22:25 2007 -0700
diff --git a/debian/changelog b/debian/changelog
index 844c2fe..4be662a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,13 @@
-xserver-xorg-video-intel (2:2.0.0-4) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.0.0-4) experimental; urgency=low
 
+  [ Julien Cristau ]
   * Update watch file (s/i810/intel/).
 
- -- Julien Cristau <jcristau@debian.org>  Sun, 03 Jun 2007 21:35:57 +0200
+  [ Drew Parsons ]
+  * Pull in latest upstream git (probably contains final Xv fix).
+    Closes: #417860.
+
+ -- Drew Parsons <dparsons@debian.org>  Tue, 05 Jun 2007 18:35:50 +1000
 
 xserver-xorg-video-intel (2:2.0.0-3) experimental; urgency=low
 

commit 8a19e7d57bc23dd163b45e0ab7deca4f074c934d
Author: Keith Packard <keithp@dulcimer.keithp.com>
Date:   Tue Jun 5 00:09:57 2007 -0700

    Always ensure the pipe A is lit when activating overlay on pipe B.
    
    Ok, so moving video from pipe A to pipe B still requires that pipe A be
    active during the transition. Instead of trying to be fancy, just ensure
    that pipe A is running on each transition to pipe B.

diff --git a/src/i830_video.c b/src/i830_video.c
index 382b1eb..b8726a8 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -416,18 +416,12 @@ i830_overlay_on(ScrnInfoPtr pScrn)
 	return;
 
     /*
-     * On I830, if pipe A is off the first time the overlay
-     * is enabled, it will fail to turn and blank the entire 
-     * screen. Light up pipe A in this case to provide a clock
-     * for the overlay hardware
+     * On I830, if pipe A is off when the overlayis enabled, it will fail to
+     * turn on and blank the entire screen or lock up the ring. Light up pipe
+     * A in this case to provide a clock for the overlay hardware
      */
-    if (pPriv->current_crtc && 
-	i830_crtc_pipe (pPriv->current_crtc) != 0 &&
-	!pPriv->started_video)
-    {
-	pPriv->started_video = TRUE;
+    if (pPriv->current_crtc && i830_crtc_pipe (pPriv->current_crtc) != 0)
 	deactivate = i830_pipe_a_require_activate (pScrn);
-    }
 
     overlay->OCMD &= ~OVERLAY_ENABLE;
     BEGIN_LP_RING(6);
diff --git a/src/i830_video.h b/src/i830_video.h
index 88a7bd9..7e2d149 100644
--- a/src/i830_video.h
+++ b/src/i830_video.h
@@ -77,7 +77,6 @@ typedef struct {
    int oneLineMode;
    int scaleRatio;
    Bool textured;
-   Bool started_video;
 } I830PortPrivRec, *I830PortPrivPtr;
 
 #define GET_PORT_PRIVATE(pScrn) \

commit e986f6cb62f8644c5fa835bd7dfb7b014c2677c5
Author: Keith Packard <keithp@dulcimer.keithp.com>
Date:   Mon Jun 4 23:52:23 2007 -0700

    Automatically switch overlay when crtcs are reconfigured.
    
    As crtcs are disabled and enabled, make sure the automatic crtc selection
    mechanism drives overlay configuration at each request to display an image.

diff --git a/src/i830_video.c b/src/i830_video.c
index 155bcc1..382b1eb 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -345,27 +345,55 @@ CompareOverlay(I830Ptr pI830, CARD32 * overlay, int size)
 }
 #endif
 
-static int
-I830CrtcPipe (xf86CrtcPtr crtc)
-{
-    if (crtc == NULL)
-	return 0;
-    return ((I830CrtcPrivatePtr) crtc->driver_private)->pipe;
-}
+static void
+I830SetOneLineModeRatio(ScrnInfoPtr pScrn);
 
-static xf86CrtcPtr
-I830CrtcForPipe (ScrnInfoPtr pScrn, int pipe)
+static void
+i830_overlay_switch_to_crtc (ScrnInfoPtr pScrn, xf86CrtcPtr crtc)
 {
-    xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
-    int			c;
+    I830Ptr		pI830 = I830PTR(pScrn);
+    I830PortPrivPtr	pPriv = GET_PORT_PRIVATE(pScrn);
+    I830CrtcPrivatePtr  intel_crtc = crtc->driver_private;
+    int			pipeconf_reg = intel_crtc->pipe == 0 ? PIPEACONF : PIPEBCONF;
 
-    for (c = 0; c < xf86_config->num_crtc; c++)
+    if (INREG(pipeconf_reg) & PIPEACONF_DOUBLE_WIDE)
+	pPriv->overlayOK = FALSE;
+    else
+	pPriv->overlayOK = TRUE;
+    
+    if (!pPriv->overlayOK)
+	return;
+
+    /* Check we have an LFP connected */
+    if (i830PipeHasType(crtc, I830_OUTPUT_LVDS)) 
     {
-	xf86CrtcPtr crtc = xf86_config->crtc[c];
-	if (I830CrtcPipe (crtc) == pipe)
-	    return crtc;
+
+	int	vtotal_reg = intel_crtc->pipe ? VTOTAL_A : VTOTAL_B;
+	CARD32	size = intel_crtc->pipe ? INREG(PIPEBSRC) : INREG(PIPEASRC);
+	CARD32	active;
+	CARD32	hsize, vsize;
+
+	hsize = (size >> 16) & 0x7FF;
+	vsize = size & 0x7FF;
+	active = INREG(vtotal_reg) & 0x7FF;
+
+	if (vsize < active && hsize > 1024)
+	    I830SetOneLineModeRatio(pScrn);
+
+	if (pPriv->scaleRatio & 0xFFFE0000) 
+	{
+	    /* Possible bogus ratio, using in-accurate fallback */
+	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		       "Bogus panel fit register, Xvideo positioning may not "
+		       "be accurate.\n");
+	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		       "Using fallback ratio - was 0x%x, now 0x%x\n",
+		       pPriv->scaleRatio,
+		       (int)(((float)active * 65536)/(float)vsize));
+
+	    pPriv->scaleRatio = (int)(((float)active * 65536) / (float)vsize);
+	}
     }
-    return NULL;
 }
 
 /*
@@ -383,7 +411,6 @@ i830_overlay_on(ScrnInfoPtr pScrn)
     I830OverlayRegPtr	overlay = I830OVERLAYREG(pI830);
     I830PortPrivPtr	pPriv = pI830->adaptor->pPortPrivates[0].ptr;
     Bool		deactivate = FALSE;
-    xf86CrtcPtr		crtc0 = NULL;
     
     if (*pI830->overlayOn)
 	return;
@@ -633,7 +660,7 @@ I830ResetVideo(ScrnInfoPtr pScrn)
      * Select which pipe the overlay is enabled on.
      */
     overlay->OCONFIG &= ~OVERLAY_PIPE_MASK;
-    if (I830CrtcPipe (pPriv->current_crtc) == 0)
+    if (i830_crtc_pipe (pPriv->current_crtc) == 0)
 	overlay->OCONFIG |= OVERLAY_PIPE_A;
     else 
 	overlay->OCONFIG |= OVERLAY_PIPE_B;
@@ -1717,9 +1744,6 @@ i830_display_video(ScrnInfoPtr pScrn, xf86CrtcPtr crtc,
     OVERLAY_DEBUG("I830DisplayVideo: %dx%d (pitch %d)\n", width, height,
 		  dstPitch);
 
-    if (!pPriv->overlayOK)
-	return;
-
 #if VIDEO_DEBUG
     CompareOverlay(pI830, (CARD32 *) overlay, 0x100);
 #endif
@@ -1737,9 +1761,14 @@ i830_display_video(ScrnInfoPtr pScrn, xf86CrtcPtr crtc,
     if (crtc != pPriv->current_crtc)
     {
         pPriv->current_crtc = crtc;
-        I830ResetVideo (pScrn);
+	i830_overlay_switch_to_crtc (pScrn, crtc);
+	if (pPriv->overlayOK)
+	    I830ResetVideo (pScrn);
     }
 
+    if (!pPriv->overlayOK)
+	return;
+
     switch (crtc->rotation & 0xf) {
     case RR_Rotate_0:
 	dstBox->x1 -= crtc->x;
@@ -2271,7 +2300,7 @@ I830PutImage(ScrnInfoPtr pScrn,
 
     if (pI830->entityPrivate) {
 	if (pI830->entityPrivate->XvInUse != -1 &&
-	    pI830->entityPrivate->XvInUse != I830CrtcPipe (pPriv->current_crtc)) {
+	    pI830->entityPrivate->XvInUse != i830_crtc_pipe (pPriv->current_crtc)) {
 #ifdef PANORAMIX
 	    if (!noPanoramiXExtension) {
 		return Success; /* faked for trying to share it */
@@ -2282,7 +2311,7 @@ I830PutImage(ScrnInfoPtr pScrn,
 	    }
 	}
 
-	pI830->entityPrivate->XvInUse = I830CrtcPipe (pPriv->current_crtc);;
+	pI830->entityPrivate->XvInUse = i830_crtc_pipe (pPriv->current_crtc);;
     }
 
     /* overlay limits */
@@ -2766,7 +2795,7 @@ I830DisplaySurface(XF86SurfacePtr surface,
 
     if (pI830->entityPrivate) {
 	if (pI830->entityPrivate->XvInUse != -1 &&
-	    pI830->entityPrivate->XvInUse != I830CrtcPipe (pI830Priv->current_crtc)) {
+	    pI830->entityPrivate->XvInUse != i830_crtc_pipe (pI830Priv->current_crtc)) {
 #ifdef PANORAMIX
 	    if (!noPanoramiXExtension) {
 		return Success; /* faked for trying to share it */
@@ -2777,7 +2806,7 @@ I830DisplaySurface(XF86SurfacePtr surface,
 	    }
 	}
 
-	pI830->entityPrivate->XvInUse = I830CrtcPipe (pI830Priv->current_crtc);
+	pI830->entityPrivate->XvInUse = i830_crtc_pipe (pI830Priv->current_crtc);
     }
 
     x1 = src_x;
@@ -2861,7 +2890,6 @@ i830_crtc_dpms_video(xf86CrtcPtr crtc, Bool on)
     ScrnInfoPtr pScrn = crtc->scrn;
     I830Ptr pI830 = I830PTR(pScrn);
     I830PortPrivPtr pPriv;
-    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
 
     if (pI830->adaptor == NULL)
 	return;
@@ -2872,53 +2900,12 @@ i830_crtc_dpms_video(xf86CrtcPtr crtc, Bool on)
 
     pPriv = GET_PORT_PRIVATE(pScrn);
 
-    /* Check if it's the crtc the overlay is on */
     if (crtc != pPriv->current_crtc)
 	return;
 
+    /* Check if it's the crtc the overlay is on */
     if (on) {
-	int size, hsize, vsize, active;
-	int pipeconf_reg = intel_crtc->pipe == 0 ? PIPEACONF : PIPEBCONF;
-	char pipename = intel_crtc->pipe == 0 ? 'A' : 'B';
-
-	pPriv->overlayOK = TRUE;
-
-	if (INREG(pipeconf_reg) & PIPEACONF_DOUBLE_WIDE) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-		       "Disabling XVideo output because Pipe %c is in "
-		       "double-wide mode.\n", pipename);
-	    pPriv->overlayOK = FALSE;
-	} else if (!pPriv->overlayOK) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-		       "Re-enabling XVideo output because Pipe %c is now in "
-		       "single-wide mode.\n", pipename);
-	    pPriv->overlayOK = TRUE;
-	}
-
-	/* Check we have an LFP connected */
-	if (i830PipeHasType(crtc, I830_OUTPUT_LVDS)) {
-	    int vtotal_reg = intel_crtc->pipe ? VTOTAL_A : VTOTAL_B;
-	    size = intel_crtc->pipe ? INREG(PIPEBSRC) : INREG(PIPEASRC);
-	    hsize = (size >> 16) & 0x7FF;
-	    vsize = size & 0x7FF;
-	    active = INREG(vtotal_reg) & 0x7FF;
-
-	    if (vsize < active && hsize > 1024)
-		I830SetOneLineModeRatio(pScrn);
-
-	    if (pPriv->scaleRatio & 0xFFFE0000) {
-		/* Possible bogus ratio, using in-accurate fallback */
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Bogus panel fit register, Xvideo positioning may not "
-			   "be accurate.\n");
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Using fallback ratio - was 0x%x, now 0x%x\n",
-			   pPriv->scaleRatio,
-			   (int)(((float)active * 65536)/(float)vsize));
-
-		pPriv->scaleRatio = (int)(((float)active * 65536) / (float)vsize);
-	    }
-	}
+	i830_overlay_switch_to_crtc (pScrn, crtc);
     } else {
 	/* We stop the video when mode switching, so we don't lock up
 	 * the engine. The overlayOK will determine whether we can re-enable

commit 0984c1fc0963f1ebab31f5b8fce5ad4c387fbd2c
Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
Date:   Thu May 31 10:17:26 2007 +0800

    Add pci ids for 945GME

diff --git a/src/common.h b/src/common.h
index 6aa0412..c879333 100644
--- a/src/common.h
+++ b/src/common.h
@@ -331,6 +331,7 @@ extern int I810_DEBUG;
 
 #ifndef PCI_CHIP_I945_GM
 #define PCI_CHIP_I945_GM        0x27A2
+#define PCI_CHIP_I945_GME	0x27AE
 #define PCI_CHIP_I945_GM_BRIDGE 0x27A0
 #endif
 
@@ -374,7 +375,7 @@ extern int I810_DEBUG;
 #define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G || pI810->PciInfo->chipType == PCI_CHIP_E7221_G)
 #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
 #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G)
-#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM)
+#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM || pI810->PciInfo->chipType == PCI_CHIP_I945_GME)
 #define IS_I965GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_GM || pI810->PciInfo->chipType == PCI_CHIP_I965_GME)
 #define IS_I965G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_G || pI810->PciInfo->chipType == PCI_CHIP_I965_G_1 || pI810->PciInfo->chipType == PCI_CHIP_I965_Q || pI810->PciInfo->chipType == PCI_CHIP_I946_GZ || pI810->PciInfo->chipType == PCI_CHIP_I965_GM || pI810->PciInfo->chipType == PCI_CHIP_I965_GME)
 #define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810))
diff --git a/src/i810_driver.c b/src/i810_driver.c
index 6b6dd25..5b04a47 100644
--- a/src/i810_driver.c
+++ b/src/i810_driver.c
@@ -140,6 +140,7 @@ static SymTabRec I810Chipsets[] = {
    {PCI_CHIP_I915_GM,		"915GM"},
    {PCI_CHIP_I945_G,		"945G"},
    {PCI_CHIP_I945_GM,		"945GM"},
+   {PCI_CHIP_I945_GME,		"945GME"},
    {PCI_CHIP_I965_G,		"965G"},
    {PCI_CHIP_I965_G_1,		"965G"},
    {PCI_CHIP_I965_Q,		"965Q"},
@@ -165,6 +166,7 @@ static PciChipsets I810PciChipsets[] = {
    {PCI_CHIP_I915_GM,		PCI_CHIP_I915_GM,	RES_SHARED_VGA},
    {PCI_CHIP_I945_G,		PCI_CHIP_I945_G,	RES_SHARED_VGA},
    {PCI_CHIP_I945_GM,		PCI_CHIP_I945_GM,	RES_SHARED_VGA},
+   {PCI_CHIP_I945_GME,		PCI_CHIP_I945_GME,	RES_SHARED_VGA},
    {PCI_CHIP_I965_G,		PCI_CHIP_I965_G,	RES_SHARED_VGA},
    {PCI_CHIP_I965_G_1,		PCI_CHIP_I965_G_1,	RES_SHARED_VGA},
    {PCI_CHIP_I965_Q,		PCI_CHIP_I965_Q,	RES_SHARED_VGA},
@@ -611,6 +613,7 @@ I810Probe(DriverPtr drv, int flags)
 	    case PCI_CHIP_I915_GM:
 	    case PCI_CHIP_I945_G:
 	    case PCI_CHIP_I945_GM:
+	    case PCI_CHIP_I945_GME:
 	    case PCI_CHIP_I965_G:
 	    case PCI_CHIP_I965_G_1:
 	    case PCI_CHIP_I965_Q:
diff --git a/src/i830_driver.c b/src/i830_driver.c
index f5c9d32..1290d6d 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -229,6 +229,7 @@ static SymTabRec I830Chipsets[] = {
    {PCI_CHIP_I915_GM,		"915GM"},
    {PCI_CHIP_I945_G,		"945G"},
    {PCI_CHIP_I945_GM,		"945GM"},
+   {PCI_CHIP_I945_GME,		"945GME"},
    {PCI_CHIP_I965_G,		"965G"},
    {PCI_CHIP_I965_G_1,		"965G"},
    {PCI_CHIP_I965_Q,		"965Q"},
@@ -248,6 +249,7 @@ static PciChipsets I830PciChipsets[] = {
    {PCI_CHIP_I915_GM,		PCI_CHIP_I915_GM,	RES_SHARED_VGA},
    {PCI_CHIP_I945_G,		PCI_CHIP_I945_G,	RES_SHARED_VGA},
    {PCI_CHIP_I945_GM,		PCI_CHIP_I945_GM,	RES_SHARED_VGA},
+   {PCI_CHIP_I945_GME,		PCI_CHIP_I945_GME,	RES_SHARED_VGA},
    {PCI_CHIP_I965_G,		PCI_CHIP_I965_G,	RES_SHARED_VGA},
    {PCI_CHIP_I965_G_1,		PCI_CHIP_I965_G_1,	RES_SHARED_VGA},
    {PCI_CHIP_I965_Q,		PCI_CHIP_I965_Q,	RES_SHARED_VGA},
@@ -1055,6 +1057,9 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
    case PCI_CHIP_I945_GM:
       chipname = "945GM";
       break;
+   case PCI_CHIP_I945_GME:
+      chipname = "945GME";
+      break;
    case PCI_CHIP_I965_G:
    case PCI_CHIP_I965_G_1:
       chipname = "965G";

commit 88ee25ebad78e54d243d728b775a69365359b5fb
Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
Date:   Thu May 31 10:13:30 2007 +0800

    Add pci ids for 965GME/GLE chip

diff --git a/src/common.h b/src/common.h
index f45fc8e..6aa0412 100644
--- a/src/common.h
+++ b/src/common.h
@@ -356,6 +356,7 @@ extern int I810_DEBUG;
 
 #ifndef PCI_CHIP_I965_GM
 #define PCI_CHIP_I965_GM        0x2A02
+#define PCI_CHIP_I965_GME	0x2A12
 #define PCI_CHIP_I965_GM_BRIDGE 0x2A00
 #endif
 
@@ -374,8 +375,8 @@ extern int I810_DEBUG;
 #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
 #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G)
 #define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM)
-#define IS_I965GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_GM)
-#define IS_I965G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_G || pI810->PciInfo->chipType == PCI_CHIP_I965_G_1 || pI810->PciInfo->chipType == PCI_CHIP_I965_Q || pI810->PciInfo->chipType == PCI_CHIP_I946_GZ || pI810->PciInfo->chipType == PCI_CHIP_I965_GM)
+#define IS_I965GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_GM || pI810->PciInfo->chipType == PCI_CHIP_I965_GME)
+#define IS_I965G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I965_G || pI810->PciInfo->chipType == PCI_CHIP_I965_G_1 || pI810->PciInfo->chipType == PCI_CHIP_I965_Q || pI810->PciInfo->chipType == PCI_CHIP_I946_GZ || pI810->PciInfo->chipType == PCI_CHIP_I965_GM || pI810->PciInfo->chipType == PCI_CHIP_I965_GME)
 #define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810))
 
 #define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810))
diff --git a/src/i810_driver.c b/src/i810_driver.c
index baca21c..6b6dd25 100644
--- a/src/i810_driver.c
+++ b/src/i810_driver.c
@@ -145,6 +145,7 @@ static SymTabRec I810Chipsets[] = {
    {PCI_CHIP_I965_Q,		"965Q"},
    {PCI_CHIP_I946_GZ,		"946GZ"},
    {PCI_CHIP_I965_GM,		"965GM"},
+   {PCI_CHIP_I965_GME,		"965GME/GLE"},
    {-1,				NULL}
 };
 
@@ -169,6 +170,7 @@ static PciChipsets I810PciChipsets[] = {
    {PCI_CHIP_I965_Q,		PCI_CHIP_I965_Q,	RES_SHARED_VGA},
    {PCI_CHIP_I946_GZ,		PCI_CHIP_I946_GZ,	RES_SHARED_VGA},
    {PCI_CHIP_I965_GM,		PCI_CHIP_I965_GM,	RES_SHARED_VGA},
+   {PCI_CHIP_I965_GME,		PCI_CHIP_I965_GME,	RES_SHARED_VGA},
    {-1,				-1, RES_UNDEFINED }
 };
 
@@ -614,6 +616,7 @@ I810Probe(DriverPtr drv, int flags)
 	    case PCI_CHIP_I965_Q:
 	    case PCI_CHIP_I946_GZ:
 	    case PCI_CHIP_I965_GM:
+	    case PCI_CHIP_I965_GME:
     	       xf86SetEntitySharable(usedChips[i]);
 
     	       /* Allocate an entity private if necessary */		
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 8e74903..f5c9d32 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -234,6 +234,7 @@ static SymTabRec I830Chipsets[] = {
    {PCI_CHIP_I965_Q,		"965Q"},
    {PCI_CHIP_I946_GZ,		"946GZ"},
    {PCI_CHIP_I965_GM,		"965GM"},
+   {PCI_CHIP_I965_GME,		"965GME/GLE"},
    {-1,				NULL}
 };
 
@@ -252,6 +253,7 @@ static PciChipsets I830PciChipsets[] = {
    {PCI_CHIP_I965_Q,		PCI_CHIP_I965_Q,	RES_SHARED_VGA},
    {PCI_CHIP_I946_GZ,		PCI_CHIP_I946_GZ,	RES_SHARED_VGA},
    {PCI_CHIP_I965_GM,		PCI_CHIP_I965_GM,	RES_SHARED_VGA},
+   {PCI_CHIP_I965_GME,		PCI_CHIP_I965_GME,	RES_SHARED_VGA},
    {-1,				-1,			RES_UNDEFINED}
 };
 
@@ -1066,6 +1068,9 @@ I830PreInit(ScrnInfoPtr pScrn, int flags)
    case PCI_CHIP_I965_GM:
       chipname = "965GM";
       break;
+   case PCI_CHIP_I965_GME:
+      chipname = "965GME/GLE";
+      break;
    default:
       chipname = "unknown chipset";
       break;

commit 92e4deb50e049cc83cbde4995ba0b901feceb15a
Author: Keith Packard <keithp@neko.keithp.com>
Date:   Wed May 30 11:49:07 2007 -0600

    Extend XV_PIPE range to include new -1 value

diff --git a/src/i830_video.c b/src/i830_video.c
index 4517975..155bcc1 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -229,7 +229,7 @@ static XF86VideoFormatRec Formats[NUM_FORMATS] = {
 
 #define CLONE_ATTRIBUTES 1
 static XF86AttributeRec CloneAttributes[CLONE_ATTRIBUTES] = {
-    {XvSettable | XvGettable, 0, 1, "XV_PIPE"}
+    {XvSettable | XvGettable, -1, 1, "XV_PIPE"}
 };
 
 #define NUM_ATTRIBUTES 5

commit 888a4a5f469bf955e3ee3e184b628808ae8a4498
Author: Wang Zhenyu <zhenyu.z.wang@intel.com>
Date:   Wed May 30 14:42:35 2007 +0800

    Fix i965 render's draw clip rectangle
    
    Use scrn's virtual size is not correct in rotation rendering.
    This fixes initial rotation problem on i965.

diff --git a/src/i965_render.c b/src/i965_render.c
index 848774e..956baf3 100644
--- a/src/i965_render.c
+++ b/src/i965_render.c
@@ -945,8 +945,8 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture,
 	 */
    	OUT_RING(BRW_3DSTATE_DRAWING_RECTANGLE | 2); /* XXX 3 for BLC or CTG */
    	OUT_RING(0x00000000);	/* ymin, xmin */
-   	OUT_RING((pScrn->virtualX - 1) |
- 	         (pScrn->virtualY - 1) << 16); /* ymax, xmax */
+	OUT_RING(DRAW_YMAX(pDst->drawable.height - 1) |
+		 DRAW_XMAX(pDst->drawable.width - 1)); /* ymax, xmax */
    	OUT_RING(0x00000000);	/* yorigin, xorigin */
 
 	/* skip the depth buffer */



Reply to: