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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED]> +Date: Thu May 31 10:17:26 2007 +0800 + + Add pci ids for 945GME + +commit 88ee25ebad78e54d243d728b775a69365359b5fb +Author: Wang Zhenyu <[EMAIL PROTECTED]> +Date: Thu May 31 10:13:30 2007 +0800 + + Add pci ids for 965GME/GLE chip + +commit 92e4deb50e049cc83cbde4995ba0b901feceb15a +Author: Keith Packard <[EMAIL PROTECTED]> +Date: Wed May 30 11:49:07 2007 -0600 + + Extend XV_PIPE range to include new -1 value + +commit 888a4a5f469bf955e3ee3e184b628808ae8a4498 +Author: Wang Zhenyu <[EMAIL PROTECTED]> +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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> Sun, 03 Jun 2007 21:35:57 +0200 + [ Drew Parsons ] + * Pull in latest upstream git (probably contains final Xv fix). + Closes: #417860. + + -- Drew Parsons <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 */ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]