xf86-video-intel: Branch 'framebuffer-resize' - 6 commits - src/i830_debug.c src/i830_display.c src/i830_display.h src/i830_driver.c src/i830_exa.c src/i830.h src/i830_memory.c src/i830_video.c src/i965_hwmc.c src/xvmc/dual_prime.g4b src/xvmc/dual_prime_igd.g4b

Keith Packard keithp at kemper.freedesktop.org
Fri Dec 12 11:24:24 PST 2008


Rebased ref, commits from common ancestor:
commit 230a1fa38fee7773cb83540c2457719580089c8c
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Dec 12 11:15:13 2008 -0800

    Merge allocate_memory_tiled into allocate_memory.
    
    As allocate_memory would bind objects to the GTT while the server was
    active, any tiled objects allocated at this point would not have their tiled
    status reported to the kernel. Merging the linear and tiled allocators
    together eliminates this confusion.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/src/i830.h b/src/i830.h
index 2ab8893..d5b0e5d 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -148,6 +148,8 @@ enum tile_format {
     TILE_YMAJOR
 };
 
+#define PITCH_NONE 0
+
 /** Record of a linear allocation in the aperture. */
 typedef struct _i830_memory i830_memory;
 struct _i830_memory {
@@ -856,13 +858,9 @@ Bool i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset,
 			 unsigned long size);
 void i830_allocator_fini(ScrnInfoPtr pScrn);
 i830_memory * i830_allocate_memory(ScrnInfoPtr pScrn, const char *name,
-				   unsigned long size, unsigned long alignment,
-				   int flags);
-i830_memory *i830_allocate_memory_tiled(ScrnInfoPtr pScrn, const char *name,
-					unsigned long size,
-					unsigned long pitch,
-					unsigned long alignment, int flags,
-					enum tile_format tile_format);
+				   unsigned long size, unsigned long pitch,
+				   unsigned long alignment, int flags,
+				   enum tile_format tile_format);
 void i830_describe_allocations(ScrnInfoPtr pScrn, int verbosity,
 			       const char *prefix);
 void i830_reset_allocations(ScrnInfoPtr pScrn);
@@ -883,6 +881,13 @@ extern uint32_t i830_create_new_fb(ScrnInfoPtr pScrn, int width, int height,
 				   int *pitch);
 extern Bool I830IsPrimary(ScrnInfoPtr pScrn);
 
+Bool
+i830_tiled_width(I830Ptr i830, int *width, int cpp);
+
+int
+i830_pad_drawable_width(int width, int cpp);
+
+
 extern Bool I830I2CInit(ScrnInfoPtr pScrn, I2CBusPtr *bus_ptr, int i2c_reg,
 			char *name);
 
diff --git a/src/i830_display.c b/src/i830_display.c
index b1ce9e6..a4af8ad 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -387,12 +387,14 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y)
     I830CrtcPrivatePtr	intel_crtc = crtc->driver_private;
     int pipe = intel_crtc->pipe;
     int plane = intel_crtc->plane;
-    unsigned long Start, Offset;
+    unsigned long Start, Offset, Stride;
     int dspbase = (plane == 0 ? DSPABASE : DSPBBASE);
     int dspsurf = (plane == 0 ? DSPASURF : DSPBSURF);
     int dsptileoff = (plane == 0 ? DSPATILEOFF : DSPBTILEOFF);
+    int dspstride = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE;
 
     Offset = ((y * pScrn->displayWidth + x) * pI830->cpp);
+    Stride = pScrn->displayWidth * pI830->cpp;
     if (pI830->front_buffer == NULL) {
 	/* During startup we may be called as part of monitor detection while
 	 * there is no memory allocation done, so just supply a dummy base
@@ -403,6 +405,7 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y)
 	/* offset is done by shadow painting code, not here */
 	Start = (char *)crtc->rotatedData - (char *)pI830->FbBase;
 	Offset = 0;
+	Stride = intel_crtc->rotate_mem->pitch;
     } else if (I830IsPrimary(pScrn)) {
 	Start = pI830->front_buffer->offset;
     } else {
@@ -413,6 +416,7 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y)
     crtc->x = x;
     crtc->y = y;
 
+    OUTREG(dspstride, Stride);
     if (IS_I965G(pI830)) {
         OUTREG(dspbase, Offset);
 	POSTING_READ(dspbase);
@@ -1202,7 +1206,6 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
     int vsync_reg = (pipe == 0) ? VSYNC_A : VSYNC_B;
     int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC;
     int dspcntr_reg = (plane == 0) ? DSPACNTR : DSPBCNTR;
-    int dspstride_reg = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE;
     int dsppos_reg = (plane == 0) ? DSPAPOS : DSPBPOS;
     int dspsize_reg = (plane == 0) ? DSPASIZE : DSPBSIZE;
     int pipestat_reg = (pipe == 0) ? PIPEASTAT : PIPEBSTAT;
@@ -1498,7 +1501,6 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
 	((adjusted_mode->CrtcVBlankEnd - 1) << 16));
     OUTREG(vsync_reg, (adjusted_mode->CrtcVSyncStart - 1) |
 	((adjusted_mode->CrtcVSyncEnd - 1) << 16));
-    OUTREG(dspstride_reg, pScrn->displayWidth * pI830->cpp);
     /* pipesrc and dspsize control the size that is scaled from, which should
      * always be the user's requested size.
      */
@@ -1578,12 +1580,14 @@ i830_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height)
     unsigned long rotate_pitch;
     int align = KB(4), size;
 
-    rotate_pitch = pScrn->displayWidth * pI830->cpp;
+    width = i830_pad_drawable_width(width, pI830->cpp);
+    rotate_pitch = width * pI830->cpp;
     size = rotate_pitch * height;
 
     assert(intel_crtc->rotate_mem == NULL);
     intel_crtc->rotate_mem = i830_allocate_memory(pScrn, "rotated crtc",
-						  size, align, 0);
+						  size, rotate_pitch, align,
+						  0, TILE_NONE);
     if (intel_crtc->rotate_mem == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Couldn't allocate shadow memory for rotated CRTC\n");
@@ -1602,13 +1606,13 @@ i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
 {
     ScrnInfoPtr pScrn = crtc->scrn;
     I830Ptr pI830 = I830PTR(pScrn);
-    unsigned long rotate_pitch;
+    int rotate_pitch;
     PixmapPtr rotate_pixmap;
 
     if (!data)
 	data = i830_crtc_shadow_allocate (crtc, width, height);
     
-    rotate_pitch = pScrn->displayWidth * pI830->cpp;
+    rotate_pitch = i830_pad_drawable_width(width, pI830->cpp) * pI830->cpp;
 
     rotate_pixmap = GetScratchPixmapHeader(pScrn->pScreen,
 					   width, height,
@@ -1656,20 +1660,14 @@ i830_crtc_set_origin(xf86CrtcPtr crtc, int x, int y)
 void
 i830_set_new_crtc_bo(ScrnInfoPtr pScrn)
 {
-    I830Ptr pI830 = I830PTR(pScrn);
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     int			i;
 
     for (i = 0; i < xf86_config->num_crtc; i++) {
 	xf86CrtcPtr crtc = xf86_config->crtc[i];
 
-	if (crtc->enabled) {
-	    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
-	    int plane = intel_crtc->plane;
-	    int dspstride_reg = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE;
-            OUTREG(dspstride_reg, pScrn->displayWidth * pI830->cpp);
+	if (crtc->enabled && !crtc->transform_in_use)
 	    i830PipeSetBase(crtc, crtc->x, crtc->y);
-	}
     }
 }
 
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 6a5c824..358b485 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1089,7 +1089,7 @@ I830IsPrimary(ScrnInfoPtr pScrn)
 /*
  * Adjust *width to allow for tiling if possible
  */
-static Bool
+Bool
 i830_tiled_width(I830Ptr i830, int *width, int cpp)
 {
     Bool    tiled = FALSE;
@@ -1131,8 +1131,8 @@ i830_tiled_width(I830Ptr i830, int *width, int cpp)
 /*
  * Pad to accelerator requirement
  */
-static int
-i830_pad_drawable_width(int width)
+int
+i830_pad_drawable_width(int width, int cpp)
 {
     return (width + 63) & ~63;
 }
@@ -1153,15 +1153,17 @@ i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
 #ifdef DRI2
     if (i830->can_resize && i830->front_buffer)
     {
-	i830_memory *new_front;
+	i830_memory *new_front, *old_front;
 	BoxRec	    mem_box;
 	Bool	    tiled;
 	ScreenPtr   screen = screenInfo.screens[scrn->scrnIndex];
 
-	scrn->displayWidth = i830_pad_drawable_width(width);
+	scrn->displayWidth = i830_pad_drawable_width(width, i830->cpp);
 	tiled = i830_tiled_width(i830, &scrn->displayWidth, i830->cpp);
 	xf86DrvMsg(scrn->scrnIndex, X_INFO, "Allocate new frame buffer %dx%d stride %d\n",
 		   width, height, scrn->displayWidth);
+	I830Sync(scrn);
+	i830WaitForVblank(scrn);
 	new_front = i830_allocate_framebuffer(scrn, i830, &mem_box, FALSE);
 	if (!new_front) {
 	    scrn->virtualX = old_x;
@@ -1169,7 +1171,7 @@ i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
 	    scrn->displayWidth = old_width;
 	    return FALSE;
 	}
-	i830_free_memory(scrn, i830->front_buffer);
+	old_front = i830->front_buffer;
 	i830->front_buffer = new_front;
 	i830_set_pixmap_bo(screen->GetScreenPixmap(screen),
 			   new_front->bo);
@@ -1180,6 +1182,9 @@ i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
 	xf86DrvMsg(scrn->scrnIndex, X_INFO, "New front buffer at 0x%lx\n",
 		   i830->front_buffer->offset);
 	i830_set_new_crtc_bo(scrn);
+	I830Sync(scrn);
+	i830WaitForVblank(scrn);
+	i830_free_memory(scrn, old_front);
     }
 #endif
     return TRUE;
@@ -3097,7 +3102,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
    if (!pI830->use_drm_mode)
        hwp = VGAHWPTR(pScrn);
 
-   pScrn->displayWidth = i830_pad_drawable_width(pScrn->virtualX);
+   pScrn->displayWidth = i830_pad_drawable_width(pScrn->virtualX, pI830->cpp);
 
    /*
     * The "VideoRam" config file parameter specifies the maximum amount of
diff --git a/src/i830_exa.c b/src/i830_exa.c
index ced31a8..d10e72e 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -262,6 +262,26 @@ I830EXADoneSolid(PixmapPtr pPixmap)
 #endif
 }
 
+static void
+check_tiling(PixmapPtr pixmap)
+{
+    ScreenPtr screen = pixmap->drawable.pScreen;
+    ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+    I830Ptr i830 = I830PTR(scrn);
+    dri_bo *bo = i830_get_pixmap_bo(pixmap);
+    uint32_t tiling_mode = 0, swizzle_mode = 0;
+
+    if (!bo)
+	return;
+    drm_intel_bo_get_tiling(bo, &tiling_mode, &swizzle_mode);
+    if (tiling_mode != I915_TILING_NONE && bo != i830->front_buffer->bo) {
+	xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+		   "non-front buffer is tiled pixmap 0x%x bo 0x%lx\n",
+		   (unsigned int) pixmap->drawable.id,
+		   bo->offset);
+    }
+}
+
 /**
  * TODO:
  *   - support planemask using FULL_BLT_CMD?
@@ -273,6 +293,8 @@ I830EXAPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
     ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum];
     I830Ptr pI830 = I830PTR(pScrn);
 
+    check_tiling(pSrcPixmap);
+    check_tiling(pDstPixmap);
     if (!EXA_PM_IS_SOLID(&pSrcPixmap->drawable, planemask))
 	I830FALLBACK("planemask is not solid");
 
@@ -768,15 +790,19 @@ i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo)
     if (old_bo)
 	dri_bo_unreference (old_bo);
 #if I830_USE_UXA
-    if (i830->accel == ACCEL_UXA)
+    if (i830->accel == ACCEL_UXA) {
+	dri_bo_reference(bo);
 	dixSetPrivate(&pixmap->devPrivates, &uxa_pixmap_index, bo);
+    }
 #endif
 #ifdef XF86DRM_MODE
     if (i830->accel == ACCEL_EXA) {
 	struct i830_exa_pixmap_priv *driver_priv =
 	    exaGetPixmapDriverPrivate(pixmap);
-	if (driver_priv)
+	if (driver_priv) {
+	    dri_bo_reference(bo);
 	    driver_priv->bo = bo;
+	}
     }
 #endif
 }
@@ -915,6 +941,7 @@ void i830_uxa_create_screen_resources(ScreenPtr pScreen)
     if (bo != NULL) {
 	PixmapPtr   pixmap = pScreen->GetScreenPixmap(pScreen);
 	i830_uxa_set_pixmap_bo (pixmap, bo);
+	dri_bo_reference(bo);
     }
 }
 
diff --git a/src/i830_memory.c b/src/i830_memory.c
index 132642f..a6eff14 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -120,7 +120,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 static i830_memory *
 i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name,
-		       long size, unsigned long alignment, int flags);
+		       unsigned long size, unsigned long pitch,
+		       unsigned long alignment, int flags,
+		       enum tile_format tile_format);
 
 static int i830_set_tiling(ScrnInfoPtr pScrn, unsigned int offset,
 			   unsigned int pitch, unsigned int size,
@@ -269,6 +271,11 @@ i830_free_memory(ScrnInfoPtr pScrn, i830_memory *mem)
 #ifdef XF86DRI
     if (mem->bo != NULL) {
 	I830Ptr pI830 = I830PTR(pScrn);
+	if (mem->tiling != TILE_NONE) {
+	    uint32_t bo_tiling_mode = I915_TILING_NONE;
+	    dri_bo_set_tiling(mem->bo, &bo_tiling_mode);
+	}
+
 	dri_bo_unreference (mem->bo);
 	if (pI830->bo_list == mem) {
 	    pI830->bo_list = mem->next;
@@ -494,8 +501,9 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size)
 	/* Create the aperture allocation */
 	pI830->memory_manager =
 	    i830_allocate_aperture(pScrn, "DRI memory manager",
-				   mmsize, GTT_PAGE_SIZE,
-				   ALIGN_BOTH_ENDS | NEED_NON_STOLEN);
+				   mmsize, 0, GTT_PAGE_SIZE,
+				   ALIGN_BOTH_ENDS | NEED_NON_STOLEN,
+				   TILE_NONE);
 
 	if (pI830->memory_manager != NULL) {
 	    if (!pI830->use_drm_mode) {
@@ -638,7 +646,9 @@ i830_get_stolen_physical(ScrnInfoPtr pScrn, unsigned long offset,
  */
 static i830_memory *
 i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name,
-		       long size, unsigned long alignment, int flags)
+		       unsigned long size, unsigned long pitch,
+		       unsigned long alignment, int flags,
+		       enum tile_format tile_format)
 {
     I830Ptr pI830 = I830PTR(pScrn);
     i830_memory *mem, *scan;
@@ -660,6 +670,9 @@ i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name,
     mem->size = size;
     mem->allocated_size = size;
     mem->alignment = alignment;
+    mem->tiling = tile_format;
+    mem->pitch = pitch;
+    mem->fence_nr = -1;
 
     if (alignment < GTT_PAGE_SIZE)
 	alignment = GTT_PAGE_SIZE;
@@ -754,10 +767,14 @@ i830_allocate_agp_memory(ScrnInfoPtr pScrn, i830_memory *mem, int flags)
 #ifdef XF86DRI
 static i830_memory *
 i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name,
-			unsigned long size, unsigned long align, int flags)
+			unsigned long size, unsigned long pitch,
+			unsigned long align, int flags,
+			enum tile_format tile_format)
 {
     I830Ptr pI830 = I830PTR(pScrn);
     i830_memory *mem;
+    uint32_t bo_tiling_mode = I915_TILING_NONE;
+    int	    ret;
 
     assert((flags & NEED_PHYSICAL_ADDR) == 0);
 
@@ -789,9 +806,33 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name,
     mem->size = size;
     mem->allocated_size = size;
     mem->alignment = align;
+    mem->tiling = tile_format;
+    mem->pitch = pitch;
+    mem->fence_nr = -1;
     if (flags & NEED_LIFETIME_FIXED)
 	mem->lifetime_fixed_offset = TRUE;
 
+    switch (tile_format) {
+    case TILE_XMAJOR:
+	bo_tiling_mode = I915_TILING_X;
+	break;
+    case TILE_YMAJOR:
+	bo_tiling_mode = I915_TILING_Y;
+	break;
+    case TILE_NONE:
+    default:
+	bo_tiling_mode = I915_TILING_NONE;
+	break;
+    }
+
+    ret = dri_bo_set_tiling(mem->bo, &bo_tiling_mode);
+    if (ret != 0 || (bo_tiling_mode == I915_TILING_NONE && tile_format != TILE_NONE)) {
+	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+		   "Failed to set tiling on %s: %s\n",
+		   mem->name,
+		   ret == 0 ? "rejected by kernel" : strerror(errno));
+	mem->tiling = TILE_NONE;
+    }
     /* Bind it if we currently control the VT */
     if (pScrn->vtSema || pI830->use_drm_mode) {
 	if (!i830_bind_memory(pScrn, mem)) {
@@ -813,7 +854,7 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name,
 }
 #endif /* XF86DRI */
 
-/* Allocates video memory at the given size and alignment.
+/* Allocates video memory at the given size, pitch, alignment and tile format.
  *
  * The memory will be bound automatically when the driver is in control of the
  * VT.  When the kernel memory manager is available and compatible with flags
@@ -833,22 +874,51 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name,
  */
 i830_memory *
 i830_allocate_memory(ScrnInfoPtr pScrn, const char *name,
-		     unsigned long size, unsigned long alignment, int flags)
+		     unsigned long size, unsigned long pitch,
+		     unsigned long alignment, int flags,
+		     enum tile_format tile_format)
 {
     i830_memory *mem;
-
 #ifdef XF86DRI
     I830Ptr pI830 = I830PTR(pScrn);
+#endif
+
+    /* Manage tile alignment and size constraints */
+    if (tile_format != TILE_NONE) {
+	/* Only allocate page-sized increments. */
+	size = ALIGN(size, GTT_PAGE_SIZE);
 
+	/* Check for maximum tiled region size */
+	if (IS_I9XX(pI830)) {
+	    if (size > MB(128))
+		return NULL;
+	} else {
+	    if (size > MB(64))
+		return NULL;
+	}
+
+	/* round to size necessary for the fence register to work */
+	size = i830_get_fence_size(pScrn, size);
+	if (IS_I965G(pI830)) {
+	    if (alignment < GTT_PAGE_SIZE)
+		alignment = GTT_PAGE_SIZE;
+	} else {
+	    /* The offset has to be aligned to at least the size of the fence
+	     * region.
+	     */
+	    alignment = size;
+	}
+    }
+#ifdef XF86DRI
     if (pI830->use_drm_mode || (pI830->memory_manager &&
 				!(flags & NEED_PHYSICAL_ADDR) &&
 				!(flags & NEED_LIFETIME_FIXED)))
     {
-	return i830_allocate_memory_bo(pScrn, name, size, alignment, flags);
+	return i830_allocate_memory_bo(pScrn, name, size, pitch, alignment, flags, tile_format);
     } else
 #endif /* XF86DRI */
     {
-	mem = i830_allocate_aperture(pScrn, name, size, alignment, flags);
+	mem = i830_allocate_aperture(pScrn, name, size, pitch, alignment, flags, tile_format);
 	if (mem == NULL)
 	    return NULL;
 
@@ -868,91 +938,6 @@ i830_allocate_memory(ScrnInfoPtr pScrn, const char *name,
     return mem;
 }
 
-/* Allocate a tiled region with the given size and pitch.
- *
- * As is, we might miss out on tiling some allocations on older hardware with
- * large framebuffer size and a small aperture size, where the first
- * allocations use a large alignment even though we've got fences to spare, and
- * the later allocations can't find enough aperture space left.  We could do
- * some search across all allocation options to fix this, probably, but that
- * would be another rewrite.
- */
-i830_memory *
-i830_allocate_memory_tiled(ScrnInfoPtr pScrn, const char *name,
-			   unsigned long size, unsigned long pitch,
-			   unsigned long alignment, int flags,
-			   enum tile_format tile_format)
-{
-    I830Ptr pI830 = I830PTR(pScrn);
-    unsigned long aper_size;
-    unsigned long aper_align;
-    i830_memory *mem;
-
-    if (tile_format == TILE_NONE)
-	return i830_allocate_memory(pScrn, name, size, alignment, flags);
-
-    /* Only allocate page-sized increments. */
-    size = ALIGN(size, GTT_PAGE_SIZE);
-
-    /* Check for maximum tiled region size */
-    if (IS_I9XX(pI830)) {
-	if (size > MB(128))
-	    return NULL;
-    } else {
-	if (size > MB(64))
-	    return NULL;
-    }
-
-    aper_size = i830_get_fence_size(pScrn, size);
-    if (IS_I965G(pI830)) {
-	aper_align = GTT_PAGE_SIZE;
-    } else {
-	/* The offset has to be aligned to at least the size of the fence
-	 * region.
-	 */
-	aper_align = aper_size;
-    }
-    if (aper_align < alignment)
-	aper_align = alignment;
-
-    mem = i830_allocate_memory(pScrn, name, aper_size, aper_align, flags);
-    if (mem == NULL)
-	return NULL;
-    i830_unbind_memory(pScrn, mem);
-    mem->size = size;
-    mem->tiling = tile_format;
-    mem->pitch = pitch;
-    mem->fence_nr = -1;
-    if (pScrn->vtSema || pI830->use_drm_mode)
-	i830_bind_memory(pScrn, mem);
-
-#ifdef XF86DRI
-    if (mem->bo != 0) {
-	uint32_t    tiling_mode = I915_TILING_NONE;
-	int	    ret;
-
-	if (tile_format == TILE_XMAJOR)
-	    tiling_mode = I915_TILING_X;
-	else
-	    tiling_mode = I915_TILING_Y;
-
-	ret = dri_bo_set_tiling(mem->bo, &tiling_mode);
-	if (ret != 0 || tiling_mode == I915_TILING_NONE) {
-		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-			   "Failed to set tiling on %s: %s\n",
-			   mem->name,
-			   ret == 0 ? "rejected by kernel" : strerror(errno));
-		i830_free_memory(pScrn, mem);
-		return i830_allocate_memory(pScrn, name, size, alignment,
-					    flags);
-	    return FALSE;
-	}
-    }
-#endif
-
-    return mem;
-}
-
 void
 i830_describe_allocations(ScrnInfoPtr pScrn, int verbosity, const char *prefix)
 {
@@ -1046,9 +1031,9 @@ i830_allocate_ringbuffer(ScrnInfoPtr pScrn)
      * the ringbuffer since init time, so allocate it fixed for its lifetime.
      */
     pI830->LpRing->mem = i830_allocate_memory(pScrn, "ring buffer",
-					      PRIMARY_RINGBUFFER_SIZE,
+					      PRIMARY_RINGBUFFER_SIZE, PITCH_NONE,
 					      GTT_PAGE_SIZE,
-					      NEED_LIFETIME_FIXED);
+					      NEED_LIFETIME_FIXED, TILE_NONE);
     if (pI830->LpRing->mem == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Failed to allocate Ring Buffer space\n");
@@ -1081,8 +1066,8 @@ i830_allocate_overlay(ScrnInfoPtr pScrn)
 	flags |= NEED_PHYSICAL_ADDR;
 
     pI830->overlay_regs = i830_allocate_memory(pScrn, "overlay registers",
-					       OVERLAY_SIZE, GTT_PAGE_SIZE,
-					       flags);
+					       OVERLAY_SIZE, PITCH_NONE, GTT_PAGE_SIZE,
+					       flags, TILE_NONE);
     if (pI830->overlay_regs == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		   "Failed to allocate Overlay register space.\n");
@@ -1160,7 +1145,7 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox,
     char *name;
     int flags;
     i830_memory *front_buffer = NULL;
-    Bool tiling;
+    enum tile_format tile_format = TILE_NONE;
 
     flags = ALLOW_SHARING;
 
@@ -1238,33 +1223,34 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox,
      * acceleration operations (non-XY COLOR_BLT) can't be done to tiled
      * buffers.
      */
-    if ((pI830->accel <= ACCEL_XAA && IS_I965G(pI830)) || pI830->use_drm_mode)
-	tiling = FALSE;
-    else
-	tiling = pI830->tiling;
+    if (pI830->tiling)
+	tile_format = TILE_XMAJOR;
+    if (pI830->accel == ACCEL_XAA && IS_I965G(pI830))
+	tile_format = TILE_NONE;
+    if (pI830->use_drm_mode)
+	tile_format = TILE_NONE;
+
+    if (!IsTileable(pScrn, pitch))
+	tile_format = TILE_NONE;
 
-    if (!i830_check_display_stride(pScrn, pitch, tiling)) {
+    if (!i830_check_display_stride(pScrn, pitch, tile_format != TILE_NONE)) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Front buffer stride %d kB "
 		"exceed display limit\n", pitch/1024);
 	return NULL;
     }
 
     /* Attempt to allocate it tiled first if we have page flipping on. */
-    if (tiling && IsTileable(pScrn, pitch)) {
+    if (tile_format != TILE_NONE) {
 	/* XXX: probably not the case on 965 */
 	if (IS_I9XX(pI830))
 	    align = MB(1);
 	else
 	    align = KB(512);
-	front_buffer = i830_allocate_memory_tiled(pScrn, name, size,
-						  pitch, align, flags,
-						  TILE_XMAJOR);
-    }
-
-    /* If not, attempt it linear */
-    if (front_buffer == NULL) {
-	front_buffer = i830_allocate_memory(pScrn, name, size, KB(64), flags);
-    }
+    } else
+	align = KB(64);
+    front_buffer = i830_allocate_memory(pScrn, name, size,
+					pitch, align, flags,
+					tile_format);
 
     if (front_buffer == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to allocate "
@@ -1308,8 +1294,8 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn)
     size = xf86_config->num_crtc * (HWCURSOR_SIZE + HWCURSOR_SIZE_ARGB);
 
     pI830->cursor_mem = i830_allocate_memory(pScrn, "HW cursors",
-					     size, GTT_PAGE_SIZE,
-					     flags);
+					     size, PITCH_NONE, GTT_PAGE_SIZE,
+					     flags, TILE_NONE);
     if (pI830->cursor_mem != NULL)
 	return TRUE;
 
@@ -1323,14 +1309,18 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn)
 	pI830->cursor_mem_classic[i] = i830_allocate_memory (pScrn, 
 							     "Core cursor",
 							     HWCURSOR_SIZE,
+							     PITCH_NONE,
 							     GTT_PAGE_SIZE,
-							     flags);
+							     flags,
+							     TILE_NONE);
 	if (!pI830->cursor_mem_classic[i])
 	    return FALSE;
 	pI830->cursor_mem_argb[i] = i830_allocate_memory (pScrn, "ARGB cursor",
 							  HWCURSOR_SIZE_ARGB,
+							  PITCH_NONE,
 							  GTT_PAGE_SIZE,
-							  flags);
+							  flags,
+							  TILE_NONE);
 	if (!pI830->cursor_mem_argb[i])
 	    return FALSE;
 
@@ -1375,7 +1365,9 @@ static void i830_setup_fb_compression(ScrnInfoPtr pScrn)
      */
     pI830->compressed_front_buffer =
 	i830_allocate_memory(pScrn, "compressed frame buffer",
-			     compressed_size, KB(4), NEED_PHYSICAL_ADDR);
+			     compressed_size, PITCH_NONE,
+			     KB(4), NEED_PHYSICAL_ADDR,
+			     TILE_NONE);
 
     if (!pI830->compressed_front_buffer) {
 	pI830->fb_compression = FALSE;
@@ -1385,8 +1377,10 @@ static void i830_setup_fb_compression(ScrnInfoPtr pScrn)
     if (!IS_GM45(pI830)) {
 	pI830->compressed_ll_buffer =
 	    i830_allocate_memory(pScrn, "compressed ll buffer",
-				 FBC_LL_SIZE + FBC_LL_PAD, KB(4),
-				 NEED_PHYSICAL_ADDR);
+				 FBC_LL_SIZE + FBC_LL_PAD,
+				 PITCH_NONE, KB(4),
+				 NEED_PHYSICAL_ADDR,
+				 TILE_NONE);
 	if (!pI830->compressed_ll_buffer) {
 	    i830_free_memory(pScrn, pI830->compressed_front_buffer);
 	    pI830->fb_compression = FALSE;
@@ -1440,7 +1434,8 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 
     /* Space for the X Server's 3D context.  32k is fine for right now. */
     pI830->logical_context = i830_allocate_memory(pScrn, "logical 3D context",
-						  KB(32), GTT_PAGE_SIZE, 0);
+						  KB(32), PITCH_NONE, GTT_PAGE_SIZE, 0,
+						  TILE_NONE);
     if (pI830->logical_context == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		   "Failed to allocate logical context space.\n");
@@ -1449,7 +1444,8 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 
     if (pI830->memory_manager == NULL) {
 	pI830->fake_bufmgr_mem = i830_allocate_memory(pScrn, "fake bufmgr",
-						      MB(1), GTT_PAGE_SIZE, 0);
+						      MB(1), PITCH_NONE, GTT_PAGE_SIZE, 0,
+						      TILE_NONE);
 	if (pI830->fake_bufmgr_mem == NULL) {
 	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		       "Failed to allocate fake bufmgr space.\n");
@@ -1464,7 +1460,8 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 	pI830->gen4_render_state_mem =
 	    i830_allocate_memory(pScrn, "exa G965 state buffer",
 				 gen4_render_state_size(pScrn),
-				 GTT_PAGE_SIZE, 0);
+				 PITCH_NONE,
+				 GTT_PAGE_SIZE, 0, TILE_NONE);
 	if (pI830->gen4_render_state_mem == NULL) {
 	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		    "Failed to allocate exa state buffer for 965.\n");
@@ -1514,7 +1511,8 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 	     */
 	    pI830->exa_offscreen =
 		i830_allocate_memory(pScrn, "exa offscreen",
-				     size, 1, NEED_LIFETIME_FIXED);
+				     size, PITCH_NONE, 1, NEED_LIFETIME_FIXED,
+				     TILE_NONE);
 	    if (pI830->exa_offscreen == NULL) {
 		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 			   "Failed to allocate EXA offscreen memory.\n");
@@ -1531,12 +1529,14 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 	 */
 	pI830->xaa_scratch =
 	    i830_allocate_memory(pScrn, "xaa scratch", MAX_SCRATCH_BUFFER_SIZE,
-				 GTT_PAGE_SIZE, NEED_LIFETIME_FIXED);
+				 PITCH_NONE, GTT_PAGE_SIZE, NEED_LIFETIME_FIXED,
+				 TILE_NONE);
 	if (pI830->xaa_scratch == NULL) {
 	    pI830->xaa_scratch =
 		i830_allocate_memory(pScrn, "xaa scratch",
-				     MIN_SCRATCH_BUFFER_SIZE, GTT_PAGE_SIZE,
-				     NEED_LIFETIME_FIXED);
+				     MIN_SCRATCH_BUFFER_SIZE, PITCH_NONE,
+				     GTT_PAGE_SIZE, NEED_LIFETIME_FIXED,
+				     TILE_NONE);
 	    if (pI830->xaa_scratch == NULL) {
 		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 			   "Failed to allocate scratch buffer space\n");
@@ -1550,13 +1550,15 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn)
 	{
 	    pI830->xaa_scratch_2 =
 		i830_allocate_memory(pScrn, "xaa scratch 2",
-				     MAX_SCRATCH_BUFFER_SIZE, GTT_PAGE_SIZE,
-				     NEED_LIFETIME_FIXED);
+				     MAX_SCRATCH_BUFFER_SIZE, PITCH_NONE,
+				     GTT_PAGE_SIZE, NEED_LIFETIME_FIXED,
+				     TILE_NONE);
 	    if (pI830->xaa_scratch_2 == NULL) {
 		pI830->xaa_scratch_2 =
 		    i830_allocate_memory(pScrn, "xaa scratch 2",
-					 MIN_SCRATCH_BUFFER_SIZE,
-					 GTT_PAGE_SIZE, NEED_LIFETIME_FIXED);
+					 MIN_SCRATCH_BUFFER_SIZE, PITCH_NONE,
+					 GTT_PAGE_SIZE, NEED_LIFETIME_FIXED,
+					 TILE_NONE);
 		if (pI830->xaa_scratch_2 == NULL) {
 		    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 			       "Failed to allocate secondary scratch "
@@ -1591,6 +1593,7 @@ i830_allocate_backbuffer(ScrnInfoPtr pScrn, i830_memory **buffer,
     unsigned int pitch = pScrn->displayWidth * pI830->cpp;
     unsigned long size;
     int height;
+    enum tile_format tile_format = TILE_NONE;;
 
     if (pI830->rotation & (RR_Rotate_0 | RR_Rotate_180))
 	height = pScrn->virtualY;
@@ -1601,22 +1604,18 @@ i830_allocate_backbuffer(ScrnInfoPtr pScrn, i830_memory **buffer,
     if (pI830->tiling && IsTileable(pScrn, pitch))
     {
 	size = ROUND_TO_PAGE(pitch * ALIGN(height, 16));
-	*buffer = i830_allocate_memory_tiled(pScrn, name, size, pitch,
-					     GTT_PAGE_SIZE,
-					     ALIGN_BOTH_ENDS |
-					     ALLOW_SHARING,
-					     TILE_XMAJOR);
+	tile_format = TILE_XMAJOR;
     }
-
-    /* Otherwise, just allocate it linear.  The offset must stay constant
-     * currently because we don't ever update the DRI maps after screen init.
-     */
-    if (*buffer == NULL) {
+    else
+    {
 	size = ROUND_TO_PAGE(pitch * height);
-	*buffer = i830_allocate_memory(pScrn, name, size, GTT_PAGE_SIZE,
-				       ALIGN_BOTH_ENDS |
-				       ALLOW_SHARING);
+	tile_format = TILE_NONE;
     }
+    *buffer = i830_allocate_memory(pScrn, name, size, pitch,
+				   GTT_PAGE_SIZE,
+				   ALIGN_BOTH_ENDS |
+				   ALLOW_SHARING,
+				   tile_format);
 
     if (*buffer == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
@@ -1634,42 +1633,27 @@ i830_allocate_depthbuffer(ScrnInfoPtr pScrn)
     unsigned long size;
     unsigned int pitch = pScrn->displayWidth * pI830->cpp;
     int height;
+    int flags;
+    enum tile_format tile_format = TILE_NONE;
 
-    /* XXX: this rotation stuff is bogus */
-    if (pI830->rotation & (RR_Rotate_0 | RR_Rotate_180))
-	height = pScrn->virtualY;
-    else
-	height = pScrn->virtualX;
+    height = pScrn->virtualY;
 
     /* First try allocating it tiled */
+    flags = ALLOW_SHARING;
     if (pI830->tiling && IsTileable(pScrn, pitch))
     {
-	enum tile_format tile_format;
-
-	size = ROUND_TO_PAGE(pitch * ALIGN(height, 16));
-
 	/* The 965 requires that the depth buffer be in Y Major format, while
 	 * the rest appear to fail when handed that format.
 	 */
 	tile_format = IS_I965G(pI830) ? TILE_YMAJOR: TILE_XMAJOR;
-
-	pI830->depth_buffer =
-	    i830_allocate_memory_tiled(pScrn, "depth buffer", size, pitch,
-				       GTT_PAGE_SIZE,
-				       ALIGN_BOTH_ENDS |
-				       ALLOW_SHARING,
-				       tile_format);
+	height = ALIGN(height, 16);
+	flags |= ALIGN_BOTH_ENDS;
     }
+    size = ROUND_TO_PAGE(pitch * height);
 
-    /* Otherwise, allocate it linear. The offset must stay constant
-     * currently because we don't ever update the DRI maps after screen init.
-     */
-    if (pI830->depth_buffer == NULL) {
-	size = ROUND_TO_PAGE(pitch * height);
-	pI830->depth_buffer =
-	    i830_allocate_memory(pScrn, "depth buffer", size, GTT_PAGE_SIZE,
-				 ALLOW_SHARING);
-    }
+    pI830->depth_buffer =
+	    i830_allocate_memory(pScrn, "depth buffer", size, pitch,
+				 GTT_PAGE_SIZE, flags, tile_format);
 
     if (pI830->depth_buffer == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
@@ -1710,9 +1694,11 @@ i830_allocate_texture_memory(ScrnInfoPtr pScrn)
 	 * made conditional on DRM version.
 	 */
 	pI830->textures = i830_allocate_memory(pScrn, "classic textures", size,
+					       PITCH_NONE,
 					       GTT_PAGE_SIZE,
 					       ALLOW_SHARING |
-					       NEED_LIFETIME_FIXED);
+					       NEED_LIFETIME_FIXED,
+					       TILE_NONE);
 	if (pI830->textures == NULL) {
 	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		       "Failed to allocate texture space.\n");
@@ -1737,7 +1723,8 @@ i830_allocate_hwstatus(ScrnInfoPtr pScrn)
     if (HWS_NEED_NONSTOLEN(pI830))
 	    flags |= NEED_NON_STOLEN;
     pI830->hw_status = i830_allocate_memory(pScrn, "HW status",
-	    HWSTATUS_PAGE_SIZE, GTT_PAGE_SIZE, flags);
+	    HWSTATUS_PAGE_SIZE, PITCH_NONE, GTT_PAGE_SIZE, flags,
+					    TILE_NONE);
     if (pI830->hw_status == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		"Failed to allocate hw status page.\n");
@@ -1752,8 +1739,10 @@ i830_allocate_pwrctx(ScrnInfoPtr pScrn)
     I830Ptr pI830 = I830PTR(pScrn);
 
     pI830->power_context = i830_allocate_memory(pScrn, "power context",
-						PWRCTX_SIZE, GTT_PAGE_SIZE,
-						NEED_LIFETIME_FIXED);
+						PWRCTX_SIZE, PITCH_NONE,
+						GTT_PAGE_SIZE,
+						NEED_LIFETIME_FIXED,
+						TILE_NONE);
     if (!pI830->power_context) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		"Failed to allocate power context.\n");
@@ -1819,6 +1808,11 @@ i830_set_tiling(ScrnInfoPtr pScrn, unsigned int offset,
 
     assert(tile_format != TILE_NONE);
 
+    if (pI830->need_sync) {
+	I830Sync(pScrn);
+	pI830->need_sync = FALSE;
+    }
+
     if (IS_I965G(pI830))
 	max_fence = FENCE_NEW_NR;
     else
@@ -2122,8 +2116,8 @@ Bool i830_allocate_xvmc_buffer(ScrnInfoPtr pScrn, const char *name,
                                i830_memory **buffer, unsigned long size,
                                int flags)
 {
-    *buffer = i830_allocate_memory(pScrn, name, size,
-                                   GTT_PAGE_SIZE, flags);
+    *buffer = i830_allocate_memory(pScrn, name, size, PITCH_NONE,
+                                   GTT_PAGE_SIZE, flags, TILE_NONE);
 
     if (!*buffer) {
         xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -2138,114 +2132,8 @@ Bool i830_allocate_xvmc_buffer(ScrnInfoPtr pScrn, const char *name,
 }
 #endif
 
-#if 0
-static i830_memory *
-i830_allocate_framebuffer_new(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox)
-{
-    unsigned int pitch = pScrn->displayWidth * pI830->cpp;
-    unsigned long minspace, avail;
-    int cacheLines;
-    int align;
-    long size, fb_height;
-    char *name;
-    int flags;
-    i830_memory *front_buffer = NULL;
-    Bool tiling;
-
-    flags = ALLOW_SHARING;
-
-    /* Clear everything first. */
-    memset(FbMemBox, 0, sizeof(*FbMemBox));
-
-    fb_height = pScrn->virtualY;
-
-    FbMemBox->x1 = 0;
-    FbMemBox->x2 = pScrn->displayWidth;
-    FbMemBox->y1 = 0;
-    FbMemBox->y2 = fb_height;
-
-    /* Calculate how much framebuffer memory to allocate.  For the
-     * initial allocation, calculate a reasonable minimum.  This is
-     * enough for the virtual screen size, plus some pixmap cache
-     * space if we're using XAA.
-     */
-    minspace = pitch * pScrn->virtualY;
-    avail = pScrn->videoRam * 1024;
-    cacheLines = 0;
-
-    size = pitch * (fb_height + cacheLines);
-    size = ROUND_TO_PAGE(size);
-
-    name = "front buffer";
-
-    /* Front buffer tiling has to be disabled with G965 XAA because some of the
-     * acceleration operations (non-XY COLOR_BLT) can't be done to tiled
-     * buffers.
-     */
-    if (!(pI830->accel == ACCEL_EXA) && IS_I965G(pI830))
-	tiling = FALSE;
-    else
-	tiling = pI830->tiling;
-
-    if (pI830->use_drm_mode)
-      tiling = FALSE;
-
-    /* Attempt to allocate it tiled first if we have page flipping on. */
-    if (tiling && IsTileable(pScrn, pitch)) {
-	/* XXX: probably not the case on 965 */
-	if (IS_I9XX(pI830))
-	    align = MB(1);
-	else
-	    align = KB(512);
-	front_buffer = i830_allocate_memory_tiled(pScrn, name, size,
-						  pitch, align, flags,
-						  TILE_XMAJOR);
-    }
-
-    /* If not, attempt it linear */
-    if (front_buffer == NULL) {
-	front_buffer = i830_allocate_memory(pScrn, name, size, KB(64), flags);
-    }
-
-    if (front_buffer == NULL) {
-	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to allocate "
-		   "framebuffer. Is your VideoRAM set too low?\n");
-
-	return NULL;
-    }
-
-    return front_buffer;
-}
-#endif
 uint32_t
 i830_create_new_fb(ScrnInfoPtr pScrn, int width, int height, int *pitch)
 {
     return 0;
-
-#if 0
-    I830Ptr pI830 = I830PTR(pScrn);
-    i830_memory *old_buffer;
-
-    pScrn->virtualX = width;
-    pScrn->virtualY = height;
-    pScrn->displayWidth = (pScrn->virtualX + 63) & ~63;
-
-    *pitch = pScrn->displayWidth * pI830->cpp;
-
-    old_buffer = pI830->front_buffer;
-
-    pI830->front_buffer =
-	i830_allocate_framebuffer_new(pScrn, pI830, &pI830->FbMemBox);
-
-    ErrorF("old front size %08lx, new front size %08lx\n",
-	   old_buffer->bo->size, pI830->front_buffer->bo->size);
-    ErrorF("old front offset %08lx, new front offset %08lx\n",
-	   old_buffer->bo->offset, pI830->front_buffer->bo->offset);
-
-    i830_free_memory(pScrn, old_buffer);
-
-    i830_update_front_offset(pScrn);
-
-    return pI830->front_buffer->bo->handle;
-#endif
 }
diff --git a/src/i830_video.c b/src/i830_video.c
index 87fa020..8a3718d 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2389,8 +2389,9 @@ I830PutImage(ScrnInfoPtr pScrn,
     }
 
     if (pPriv->buf == NULL) {
-	pPriv->buf = i830_allocate_memory(pScrn, "xv buffer", alloc_size, 16,
-					  0);
+	pPriv->buf = i830_allocate_memory(pScrn, "xv buffer",
+					  alloc_size, 0, 16,
+					  0, TILE_NONE);
     }
 
     if (pPriv->buf == NULL)
@@ -2724,7 +2725,7 @@ I830AllocateSurface(ScrnInfoPtr pScrn,
     fbpitch = pI830->cpp * pScrn->displayWidth;
     size = pitch * h;
 
-    pPriv->buf = i830_allocate_memory(pScrn, "xv surface buffer", size, 16, 0);
+    pPriv->buf = i830_allocate_memory(pScrn, "xv surface buffer", size, 0, 16, 0, TILE_NONE);
     if (pPriv->buf == NULL) {
 	xfree(surface->pitches);
 	xfree(surface->offsets);
diff --git a/src/i965_hwmc.c b/src/i965_hwmc.c
index 1c293d1..99e86f5 100644
--- a/src/i965_hwmc.c
+++ b/src/i965_hwmc.c
@@ -49,7 +49,7 @@ static int alloc_drm_memory_tiled(ScrnInfoPtr pScrn,
 	char *name, size_t size, unsigned long pitch, unsigned long alignment)
 {
     I830Ptr pI830 = I830PTR(pScrn);
-    if ((mem->buffer = i830_allocate_memory_tiled(pScrn, 
+    if ((mem->buffer = i830_allocate_memory(pScrn,
 	    name, size, pitch,
 	    GTT_PAGE_SIZE, ALIGN_BOTH_ENDS, TILE_XMAJOR)) == NULL) {
 	ErrorF("Fail to alloc \n");
@@ -75,8 +75,8 @@ static int alloc_drm_memory(ScrnInfoPtr pScrn,
 {
     I830Ptr pI830 = I830PTR(pScrn);
     if ((mem->buffer = i830_allocate_memory(pScrn, 
-	    name, size, 
-	    GTT_PAGE_SIZE, ALIGN_BOTH_ENDS)) == NULL) {
+	    name, size, PITCH_NONE, GTT_PAGE_SIZE,
+	    ALIGN_BOTH_ENDS, TILE_NONE)) == NULL) {
 	ErrorF("Fail to alloc \n");
 	return BadAlloc;
     }
commit c0586e7700b1cfcf06521526cb9c686c8dd64f20
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 11 14:24:43 2008 -0800

    Reallocate frame buffer on resize
    
    When running UXA (and not DRI1), we can resize the frame buffer.
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/src/i830.h b/src/i830.h
index 8ad5c69..2ab8893 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -95,6 +95,7 @@ void i830_uxa_block_handler (ScreenPtr pScreen);
 
 #if defined(I830_USE_UXA) || defined(I830_USE_EXA)
 dri_bo *i830_get_pixmap_bo (PixmapPtr pixmap);
+void i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo);
 #endif
 
 #ifdef I830_USE_XAA
@@ -271,6 +272,8 @@ typedef struct _I830CrtcPrivateRec {
     
     int			    dpms_mode;
     
+    int			    x, y;
+
     /* Lookup table values to be set when the CRTC is enabled */
     uint8_t lut_r[256], lut_g[256], lut_b[256];
 
@@ -474,6 +477,8 @@ typedef struct _I830Rec {
    int drmMinor;
    Bool allocate_classic_textures;
 
+   Bool can_resize;
+
    Bool want_vblank_interrupts;
 #ifdef DAMAGE
    DamagePtr pDamage;
@@ -910,6 +915,10 @@ Bool i830_unbind_all_memory(ScrnInfoPtr pScrn);
 Bool I830BindAGPMemory(ScrnInfoPtr pScrn);
 Bool I830UnbindAGPMemory(ScrnInfoPtr pScrn);
 
+i830_memory *
+i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox,
+			  Bool secondary);
+
 /* i830_modes.c */
 DisplayModePtr i830_ddc_get_modes(xf86OutputPtr output);
 
diff --git a/src/i830_display.c b/src/i830_display.c
index 2e5d55a..b1ce9e6 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -410,6 +410,9 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y)
 	Start = pI8301->front_buffer_2->offset;
     }
 
+    crtc->x = x;
+    crtc->y = y;
+
     if (IS_I965G(pI830)) {
         OUTREG(dspbase, Offset);
 	POSTING_READ(dspbase);
@@ -1642,10 +1645,34 @@ i830_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
 static void
 i830_crtc_set_origin(xf86CrtcPtr crtc, int x, int y)
 {
-    i830PipeSetBase(crtc, x, y);
+    if (crtc->enabled)
+	i830PipeSetBase(crtc, x, y);
 }
 #endif
 
+/* The screen bo has changed, reset each active crtc to point at
+ * the same location that it currently points at, but in the new bo
+ */
+void
+i830_set_new_crtc_bo(ScrnInfoPtr pScrn)
+{
+    I830Ptr pI830 = I830PTR(pScrn);
+    xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+    int			i;
+
+    for (i = 0; i < xf86_config->num_crtc; i++) {
+	xf86CrtcPtr crtc = xf86_config->crtc[i];
+
+	if (crtc->enabled) {
+	    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
+	    int plane = intel_crtc->plane;
+	    int dspstride_reg = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE;
+            OUTREG(dspstride_reg, pScrn->displayWidth * pI830->cpp);
+	    i830PipeSetBase(crtc, crtc->x, crtc->y);
+	}
+    }
+}
+
 void
 i830DescribeOutputConfiguration(ScrnInfoPtr pScrn)
 {
diff --git a/src/i830_display.h b/src/i830_display.h
index 1eeb7f1..8d767b1 100644
--- a/src/i830_display.h
+++ b/src/i830_display.h
@@ -31,6 +31,7 @@
 void i830PipeSetBase(xf86CrtcPtr crtc, int x, int y);
 void i830WaitForVblank(ScrnInfoPtr pScrn);
 void i830DescribeOutputConfiguration(ScrnInfoPtr pScrn);
+void i830_set_new_crtc_bo(ScrnInfoPtr pScrn);
 
 xf86CrtcPtr i830GetLoadDetectPipe(xf86OutputPtr output, DisplayModePtr mode, int *dpms_mode);
 void i830ReleaseLoadDetectPipe(xf86OutputPtr output, int dpms_mode);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index d3b539a..6a5c824 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1085,11 +1085,103 @@ I830IsPrimary(ScrnInfoPtr pScrn)
    return TRUE;
 }
 
+
+/*
+ * Adjust *width to allow for tiling if possible
+ */
+static Bool
+i830_tiled_width(I830Ptr i830, int *width, int cpp)
+{
+    Bool    tiled = FALSE;
+
+    /*
+     * Adjust the display width to allow for front buffer tiling if possible
+     */
+    if (i830->tiling) {
+	if (IS_I965G(i830)) {
+	    int tile_pixels = 512 / cpp;
+	    *width = (*width + tile_pixels - 1) &
+		~(tile_pixels - 1);
+	    tiled = TRUE;
+	} else {
+	    /* Good pitches to allow tiling.  Don't care about pitches < 1024
+	     * pixels.
+	     */
+	    static const int pitches[] = {
+		1024,
+		2048,
+		4096,
+		8192,
+		0
+	    };
+	    int i;
+
+	    for (i = 0; pitches[i] != 0; i++) {
+		if (pitches[i] >= *width) {
+		    *width = pitches[i];
+		    tiled = TRUE;
+		    break;
+		}
+	    }
+	}
+    }
+    return tiled;
+}
+
+/*
+ * Pad to accelerator requirement
+ */
+static int
+i830_pad_drawable_width(int width)
+{
+    return (width + 63) & ~63;
+}
+
 static Bool
 i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
 {
+    I830Ptr	i830 = I830PTR(scrn);
+    int		old_x = scrn->virtualX;
+    int		old_y = scrn->virtualY;
+    int		old_width = scrn->displayWidth;
+
+    if (old_x == width && old_y == height)
+	return TRUE;
+
     scrn->virtualX = width;
     scrn->virtualY = height;
+#ifdef DRI2
+    if (i830->can_resize && i830->front_buffer)
+    {
+	i830_memory *new_front;
+	BoxRec	    mem_box;
+	Bool	    tiled;
+	ScreenPtr   screen = screenInfo.screens[scrn->scrnIndex];
+
+	scrn->displayWidth = i830_pad_drawable_width(width);
+	tiled = i830_tiled_width(i830, &scrn->displayWidth, i830->cpp);
+	xf86DrvMsg(scrn->scrnIndex, X_INFO, "Allocate new frame buffer %dx%d stride %d\n",
+		   width, height, scrn->displayWidth);
+	new_front = i830_allocate_framebuffer(scrn, i830, &mem_box, FALSE);
+	if (!new_front) {
+	    scrn->virtualX = old_x;
+	    scrn->virtualY = old_y;
+	    scrn->displayWidth = old_width;
+	    return FALSE;
+	}
+	i830_free_memory(scrn, i830->front_buffer);
+	i830->front_buffer = new_front;
+	i830_set_pixmap_bo(screen->GetScreenPixmap(screen),
+			   new_front->bo);
+	scrn->fbOffset = i830->front_buffer->offset;
+	screen->ModifyPixmapHeader(screen->GetScreenPixmap(screen),
+				   width, height, -1, -1, scrn->displayWidth * i830->cpp,
+				   NULL);
+	xf86DrvMsg(scrn->scrnIndex, X_INFO, "New front buffer at 0x%lx\n",
+		   i830->front_buffer->offset);
+	i830_set_new_crtc_bo(scrn);
+    }
+#endif
     return TRUE;
 }
 
@@ -1487,8 +1579,7 @@ I830PreInitCrtcConfig(ScrnInfoPtr pScrn)
     /* See i830_exa.c comments for why we limit the framebuffer size like this.
      */
     if (IS_I965G(pI830)) {
-	max_width = 8192;
-	max_height = 8192;
+	max_height = max_width = min(16384 / pI830->cpp, 8192);
     } else {
 	max_width = 2048;
 	max_height = 2048;
@@ -1595,7 +1686,16 @@ I830AccelMethodInit(ScrnInfoPtr pScrn)
     I830SetupOutputs(pScrn);
 
     SaveHWState(pScrn);
-    if (!xf86InitialConfiguration (pScrn, FALSE))
+    pI830->can_resize = FALSE;
+    if (pI830->accel == ACCEL_UXA && pI830->directRenderingType != DRI_XF86DRI)
+	pI830->can_resize = TRUE;
+
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+	       "Resizable framebuffer: %s (%d %d)\n",
+	       pI830->can_resize ? "available" : "not available",
+	       pI830->directRenderingType, pI830->accel);
+
+    if (!xf86InitialConfiguration (pScrn, pI830->can_resize))
     {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
 	RestoreHWState(pScrn);
@@ -2760,7 +2860,6 @@ failed:
 	    tiled ? "T" : "Unt");
     return FALSE;
 }
-
 /*
  * Try to allocate memory in several ways:
  *  1) If direct rendering is enabled, try to allocate enough memory for tiled
@@ -2775,39 +2874,9 @@ i830_memory_init(ScrnInfoPtr pScrn)
 {
     I830Ptr pI830 = I830PTR(pScrn);
     int savedDisplayWidth = pScrn->displayWidth;
-    int i;
     Bool tiled = FALSE;
 
-    /*
-     * Adjust the display width to allow for front buffer tiling if possible
-     */
-    if (pI830->tiling) {
-	if (IS_I965G(pI830)) {
-	    int tile_pixels = 512 / pI830->cpp;
-	    pScrn->displayWidth = (pScrn->displayWidth + tile_pixels - 1) &
-		~(tile_pixels - 1);
-	    tiled = TRUE;
-	} else {
-	    /* Good pitches to allow tiling.  Don't care about pitches < 1024
-	     * pixels.
-	     */
-	    static const int pitches[] = {
-		1024,
-		2048,
-		4096,
-		8192,
-		0
-	    };
-
-	    for (i = 0; pitches[i] != 0; i++) {
-		if (pitches[i] >= pScrn->displayWidth) {
-		    pScrn->displayWidth = pitches[i];
-		    tiled = TRUE;
-		    break;
-		}
-	    }
-	}
-    }
+    tiled = i830_tiled_width(pI830, &pScrn->displayWidth, pI830->cpp);
     /* Set up our video memory allocator for the chosen videoRam */
     if (!i830_allocator_init(pScrn, 0, pScrn->videoRam * KB(1))) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -3028,7 +3097,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
    if (!pI830->use_drm_mode)
        hwp = VGAHWPTR(pScrn);
 
-   pScrn->displayWidth = (pScrn->virtualX + 63) & ~63;
+   pScrn->displayWidth = i830_pad_drawable_width(pScrn->virtualX);
 
    /*
     * The "VideoRam" config file parameter specifies the maximum amount of
@@ -3092,8 +3161,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
     */
    if (pI830->directRenderingType == DRI_NONE && pI830->SWCursor)
        pI830->directRenderingType = DRI_DISABLED;
-
-   if (pI830->directRenderingType == DRI_NONE && I830DRIScreenInit(pScreen))
+   if (!pI830->can_resize && pI830->directRenderingType == DRI_NONE && I830DRIScreenInit(pScreen))
        pI830->directRenderingType = DRI_XF86DRI;
 
    if (pI830->directRenderingType == DRI_XF86DRI) {
diff --git a/src/i830_exa.c b/src/i830_exa.c
index 3e3487e..ced31a8 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -758,6 +758,28 @@ i830_get_pixmap_bo(PixmapPtr pixmap)
     return NULL;
 }
 
+void
+i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo)
+{
+    ScrnInfoPtr pScrn = xf86Screens[pixmap->drawable.pScreen->myNum];
+    I830Ptr i830 = I830PTR(pScrn);
+    dri_bo  *old_bo = i830_get_pixmap_bo (pixmap);
+
+    if (old_bo)
+	dri_bo_unreference (old_bo);
+#if I830_USE_UXA
+    if (i830->accel == ACCEL_UXA)
+	dixSetPrivate(&pixmap->devPrivates, &uxa_pixmap_index, bo);
+#endif
+#ifdef XF86DRM_MODE
+    if (i830->accel == ACCEL_EXA) {
+	struct i830_exa_pixmap_priv *driver_priv =
+	    exaGetPixmapDriverPrivate(pixmap);
+	if (driver_priv)
+	    driver_priv->bo = bo;
+    }
+#endif
+}
 #if defined(I830_USE_UXA)
 
 static void
diff --git a/src/i830_memory.c b/src/i830_memory.c
index ca15964..132642f 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -918,10 +918,13 @@ i830_allocate_memory_tiled(ScrnInfoPtr pScrn, const char *name,
     mem = i830_allocate_memory(pScrn, name, aper_size, aper_align, flags);
     if (mem == NULL)
 	return NULL;
+    i830_unbind_memory(pScrn, mem);
     mem->size = size;
     mem->tiling = tile_format;
     mem->pitch = pitch;
     mem->fence_nr = -1;
+    if (pScrn->vtSema || pI830->use_drm_mode)
+	i830_bind_memory(pScrn, mem);
 
 #ifdef XF86DRI
     if (mem->bo != 0) {
@@ -1145,7 +1148,7 @@ IsTileable(ScrnInfoPtr pScrn, int pitch)
  * \param pI830 I830Ptr for the screen being allocated.
  * \param FbMemBox
  */
-static i830_memory *
+i830_memory *
 i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox,
 			  Bool secondary)
 {
@@ -1167,10 +1170,14 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox,
     /* We'll allocate the fb such that the root window will fit regardless of
      * rotation.
      */
-    if (!pI830->use_drm_mode && pScrn->virtualX > pScrn->virtualY)
-	fb_height = pScrn->virtualX;
-    else
-	fb_height = pScrn->virtualY;
+    fb_height = pScrn->virtualY;
+    if (!pI830->can_resize)
+    {
+	if (!pI830->use_drm_mode && pScrn->virtualX > pScrn->virtualY)
+	    fb_height = pScrn->virtualX;
+	else
+	    fb_height = pScrn->virtualY;
+    }
 
     FbMemBox->x1 = 0;
     FbMemBox->x2 = pScrn->displayWidth;
commit 865735d8408ee6b75be8fb1a8ab32b2a53dd3adb
Author: Keith Packard <keithp at keithp.com>
Date:   Fri Dec 12 11:07:20 2008 -0800

    Dump out fence registers by default, add fence end registers as well
    
    In debugging the frame buffer resize code, I needed to see what the server
    was doing to the fence registers, so I added this debug code. Seems useful
    enough to include it.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/src/i830_debug.c b/src/i830_debug.c
index 8ce6ce6..dc3712b 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -492,17 +492,23 @@ DEBUGSTRING(i830_debug_dspclk_gate_d)
 		      OVLUNIT);
 }
 
-#if 0
-DEBUGSTRING(i810_debug_fence_new)
+#if 1
+DEBUGSTRING(i810_debug_fence_start)
 {
-    char *enable = (val & FENCE_VALID) ? "enabled" : "disabled";
+    char *enable = (val & FENCE_VALID) ? " enabled" : "disabled";
     char format = (val & I965_FENCE_Y_MAJOR) ? 'Y' : 'X';
     int pitch = ((val & 0xffc) >> 2) * 128;
     unsigned int offset = val & 0xfffff000;
 
-    return XNFprintf("%s, %c tile walk, %d pitch, 0x%08x offset",
+    return XNFprintf("%s, %c tile walk, %4d pitch, 0x%08x start",
 		     enable, format, pitch, offset);
 }
+DEBUGSTRING(i810_debug_fence_end)
+{
+    unsigned int end = val & 0xfffff000;
+
+    return XNFprintf("                                   0x%08x end", end);
+}
 #endif
 
 #define DEFINEREG(reg) \
@@ -698,23 +704,26 @@ static struct i830SnapshotRec {
     DEFINEREG(DPD_AUX_CH_DATA4),
     DEFINEREG(DPD_AUX_CH_DATA5),
 
-#if 0
-    DEFINEREG2(FENCE_NEW + 0, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 8, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 16, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 24, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 32, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 40, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 48, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 56, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 64, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 72, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 80, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 88, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 96, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 104, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 112, i810_debug_fence_new),
-    DEFINEREG2(FENCE_NEW + 120, i810_debug_fence_new),
+#define DEFINEFENCE(i) \
+	{ FENCE_NEW+i*8, "FENCE START " #i, i810_debug_fence_start, 0 }, \
+	{ FENCE_NEW+i*8+4, "FENCE END " #i, i810_debug_fence_end, 0 }
+#if 1
+    DEFINEFENCE(0),
+    DEFINEFENCE(1),
+    DEFINEFENCE(2),
+    DEFINEFENCE(3),
+    DEFINEFENCE(4),
+    DEFINEFENCE(5),
+    DEFINEFENCE(6),
+    DEFINEFENCE(7),
+    DEFINEFENCE(8),
+    DEFINEFENCE(9),
+    DEFINEFENCE(10),
+    DEFINEFENCE(11),
+    DEFINEFENCE(12),
+    DEFINEFENCE(13),
+    DEFINEFENCE(14),
+    DEFINEFENCE(15),
 #endif
 };
 #undef DEFINEREG
commit f3e59e59b54696667b127c82327e16b14d7bab22
Author: Zou Nan hai <nanhai.zou at intel.com>
Date:   Fri Dec 12 11:18:25 2008 -0800

    Update binary versions of the dual-prime kernels
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/src/xvmc/dual_prime.g4b b/src/xvmc/dual_prime.g4b
index 293d2d3..4a1eb4b 100644
--- a/src/xvmc/dual_prime.g4b
+++ b/src/xvmc/dual_prime.g4b
@@ -1,4 +1,106 @@
    { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 },
+   { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 },
+   { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 },
+   { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x20600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21400169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x20700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21500169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x21600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22400169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x21700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22500169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x00800001, 0x22600169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22800169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23000169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23200169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23400169, 0x00000000, 0x00000000 },
    { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 },
    { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
@@ -6,6 +108,8 @@
    { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 },
    { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 },
@@ -297,14 +401,15 @@
    { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 },
    { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 },
+   { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
    { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
@@ -481,7 +586,7 @@
    { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 },
    { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
    { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
@@ -594,10 +699,12 @@
    { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
    { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 },
    { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 },
@@ -858,14 +965,15 @@
    { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
-   { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
    { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
@@ -1027,7 +1135,7 @@
    { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 },
    { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
    { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
@@ -1123,29 +1231,33 @@
    { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00000001, 0x20280061, 0x00000000, 0x0007000f },
+   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e641c21, 0x00210e64, 0x00000001 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1258,16 +1370,16 @@
    { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1307,22 +1419,22 @@
    { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 },
    { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1363,16 +1475,16 @@
    { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1419,30 +1531,30 @@
    { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 },
    { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 },
-   { 0x03000010, 0x20003dbc, 0x00210034, 0x00000000 },
-   { 0x00010040, 0x203c3dad, 0x0021003c, 0x00050005 },
    { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 },
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1555,16 +1667,16 @@
    { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1607,19 +1719,19 @@
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1660,16 +1772,16 @@
    { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1725,24 +1837,25 @@
    { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 },
    { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
-   { 0x01000005, 0x20002d3c, 0x00210036, 0x00020002 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
    { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
@@ -1853,8 +1966,8 @@
    { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1894,14 +2007,14 @@
    { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 },
    { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1942,8 +2055,8 @@
    { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -1990,23 +2103,25 @@
    { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
    { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 },
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
    { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
@@ -2117,8 +2232,8 @@
    { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -2161,11 +2276,11 @@
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
@@ -2206,8 +2321,8 @@
    { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 },
    { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 },
    { 0x00000020, 0x34001400, 0x00001400, 0x00210058 },
diff --git a/src/xvmc/dual_prime_igd.g4b b/src/xvmc/dual_prime_igd.g4b
index a411432..6477d06 100644
--- a/src/xvmc/dual_prime_igd.g4b
+++ b/src/xvmc/dual_prime_igd.g4b
@@ -1,4 +1,106 @@
    { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 },
+   { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 },
+   { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 },
+   { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 },
+   { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 },
+   { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x20600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21400169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x20700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21500169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x21600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22400169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00600001, 0x21700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x22500169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x00800001, 0x22600169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22800169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23000169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23200169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x23400169, 0x00000000, 0x00000000 },
    { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 },
    { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
@@ -6,6 +108,8 @@
    { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
    { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 },
@@ -129,14 +233,15 @@
    { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 },
    { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 },
+   { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
    { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
@@ -205,7 +310,7 @@
    { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 },
    { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
    { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
@@ -258,10 +363,12 @@
    { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
    { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 },
    { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 },
@@ -354,14 +461,15 @@
    { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
-   { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
    { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
@@ -415,7 +523,7 @@
    { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 },
    { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c },
-   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
    { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
@@ -451,29 +559,33 @@
    { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00000001, 0x20280061, 0x00000000, 0x0007000f },
+   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e641c21, 0x00210e64, 0x00000001 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 },
    { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 },
    { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 },
@@ -508,16 +620,16 @@
    { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 },
    { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 },
    { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 },
@@ -527,22 +639,22 @@
    { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 },
    { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 },
    { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 },
    { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 },
@@ -553,16 +665,16 @@
    { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 },
    { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 },
    { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 },
@@ -579,30 +691,30 @@
    { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 },
    { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 },
    { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 },
-   { 0x03000010, 0x20003dbc, 0x00210034, 0x00000000 },
-   { 0x00010040, 0x203c3dad, 0x0021003c, 0x00050005 },
    { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 },
-   { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e },
+   { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 },
+   { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 },
    { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 },
    { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 },
@@ -637,16 +749,16 @@
    { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 },
    { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 },
    { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 },
@@ -659,19 +771,19 @@
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 },
    { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 },
    { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 },
    { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 },
@@ -682,16 +794,16 @@
    { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
-   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
-   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
-   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 },
    { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 },
    { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 },
    { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 },
@@ -717,22 +829,23 @@
    { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 },
    { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
-   { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
-   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000001 },
-   { 0x01000005, 0x20002d3c, 0x00210036, 0x00020002 },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
    { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 },
@@ -767,8 +880,8 @@
    { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 },
    { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 },
    { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 },
@@ -778,14 +891,14 @@
    { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 },
    { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c },
-   { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 },
+   { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
    { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 },
@@ -796,8 +909,8 @@
    { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 },
    { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 },
    { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 },
@@ -814,21 +927,23 @@
    { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 },
    { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 },
    { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 },
-   { 0x0020000c, 0x2e600c21, 0x00210e80, 0x00000001 },
    { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 },
-   { 0x00200040, 0x2e603421, 0x00450e60, 0x00450e6e },
+   { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 },
+   { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e },
    { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
    { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 },
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
    { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
    { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 },
@@ -863,8 +978,8 @@
    { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 },
    { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 },
    { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 },
@@ -877,11 +992,11 @@
    { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 },
    { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
-   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 },
-   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 },
+   { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 },
+   { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 },
    { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 },
    { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 },
    { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 },
@@ -892,8 +1007,8 @@
    { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 },
    { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
    { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
-   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 },
-   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 },
    { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 },
    { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 },
    { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 },
commit 80d588e9c49719ec494e705edfc14c78908bbc3f
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date:   Fri Dec 12 18:27:29 2008 +0800

    Don't warn on ring enabled in GEM

diff --git a/src/i830_debug.c b/src/i830_debug.c
index 17ee40f..8ce6ce6 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -1762,7 +1762,7 @@ i830_check_error_state(ScrnInfoPtr pScrn)
 	errors++;
     }
     temp = INREG(LP_RING + RING_LEN);
-    if (temp & 1) {
+    if (!pI830->memory_manager && (temp & 1)) {
 	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
 		   "PRB0_CTL (0x%08lx) indicates ring buffer enabled\n", temp);
 	errors++;
commit 60c4ee9ece8ea57e61b1590dfeb69d08555e465c
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date:   Fri Dec 12 18:00:09 2008 +0800

    Fix directRenderingType check
    
    Don't miss classic texture memory allocation in DRI.

diff --git a/src/i830_driver.c b/src/i830_driver.c
index 7590257..d3b539a 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -1557,21 +1557,14 @@ I830AccelMethodInit(ScrnInfoPtr pScrn)
 	pI830->directRenderingType = DRI_DISABLED;
 
 #ifdef XF86DRI
-    if (pI830->directRenderingType == DRI_XF86DRI) {
-	if ((pI830->accel == ACCEL_NONE) || pI830->SWCursor) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
-		       "needs HW cursor and 2D acceleration.\n");
-	    pI830->directRenderingType = DRI_DISABLED;
-	} else if (pScrn->depth != 16 && pScrn->depth != 24) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
-		       "runs only at depths 16 and 24.\n");
-	    pI830->directRenderingType = DRI_DISABLED;
-	}
-
-	if (pI830->directRenderingType == DRI_XF86DRI) {
-	   pI830->allocate_classic_textures =
-	      xf86ReturnOptValBool(pI830->Options, OPTION_LEGACY3D, TRUE);
-	}
+    if (pI830->accel == ACCEL_NONE) {
+	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
+		"needs 2D acceleration.\n");
+	pI830->directRenderingType = DRI_DISABLED;
+    } else if (pScrn->depth != 16 && pScrn->depth != 24) {
+	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it "
+		"runs only at depths 16 and 24.\n");
+	pI830->directRenderingType = DRI_DISABLED;
     }
 #endif /* XF86DRI */
 
@@ -1691,14 +1684,6 @@ I830XvInit(ScrnInfoPtr pScrn)
     xf86DrvMsg(pScrn->scrnIndex, from, "video overlay key set to 0x%x\n",
 	       pI830->colorKey);
 #endif
-#ifdef INTEL_XVMC
-    pI830->XvMCEnabled = FALSE;
-    from =  (pI830->directRenderingType != DRI_DISABLED &&
-	     xf86GetOptValBool(pI830->Options, OPTION_XVMC,
-			       &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT;
-    xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n",
-	       pI830->XvMCEnabled ? "en" : "dis");
-#endif
 }
 
 static void
@@ -3105,8 +3090,16 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
    /* If DRI hasn't been explicitly disabled, try to initialize it.
     * It will be used by the memory allocator.
     */
+   if (pI830->directRenderingType == DRI_NONE && pI830->SWCursor)
+       pI830->directRenderingType = DRI_DISABLED;
+
    if (pI830->directRenderingType == DRI_NONE && I830DRIScreenInit(pScreen))
        pI830->directRenderingType = DRI_XF86DRI;
+
+   if (pI830->directRenderingType == DRI_XF86DRI) {
+       pI830->allocate_classic_textures =
+	   xf86ReturnOptValBool(pI830->Options, OPTION_LEGACY3D, TRUE);
+   }
 #endif
 
    /* Enable tiling by default */
@@ -3262,7 +3255,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
     * is called.   fbScreenInit will eventually call into the drivers
     * InitGLXVisuals call back.
     */
-
    if (pI830->directRenderingType == DRI_XF86DRI) {
       if (pI830->accel == ACCEL_NONE || pI830->SWCursor || (pI830->StolenOnly && I830IsPrimary(pScrn))) {
 	 xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "DRI is disabled because it "
@@ -3426,6 +3418,14 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
    xf86DPMSInit(pScreen, xf86DPMSSet, 0);
 
 #ifdef I830_XV
+#ifdef INTEL_XVMC
+    pI830->XvMCEnabled = FALSE;
+    from =  (pI830->directRenderingType == DRI_XF86DRI &&
+	     xf86GetOptValBool(pI830->Options, OPTION_XVMC,
+			       &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT;
+    xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n",
+	       pI830->XvMCEnabled ? "en" : "dis");
+#endif
    /* Init video */
    if (pI830->XvEnabled && !pI830->use_drm_mode)
       I830InitVideo(pScreen);


More information about the xorg-commit mailing list