--- radeon_driver.c.orig 2005-01-05 10:03:39.660423035 -0500 +++ radeon_driver.c 2005-01-05 10:07:11.867000308 -0500 @@ -7536,13 +7536,16 @@ pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); - if (clone || info->IsSecondary) { - pSAREAPriv->crtc2_base = Base; - } - if (pSAREAPriv->pfCurrentPage == 1) { Base += info->backOffset; } + + if (clone || info->IsSecondary) { + pSAREAPriv->crtc2_base = Base; + } else { + pSAREAPriv->crtc1_base = Base; + } + } #endif --- radeon_drm.h.orig 2005-01-05 10:03:51.709730361 -0500 +++ radeon_drm.h 2005-01-05 10:09:08.057034243 -0500 @@ -359,6 +359,7 @@ int pfState; /* number of 3d windows (0,1,2ormore) */ int pfCurrentPage; /* which buffer is being displayed? */ int crtc2_base; /* CRTC2 frame offset */ + int crtc1_base; } drm_radeon_sarea_t; /* WARNING: If you change any of these defines, make sure to change the --- radeon_sarea.h.orig 2005-01-05 10:04:05.904558219 -0500 +++ radeon_sarea.h 2005-01-05 10:08:01.756851008 -0500 @@ -226,6 +226,7 @@ int pfAllowPageFlip; /* set by the 2d driver, read by the client */ int pfCurrentPage; /* set by kernel, read by others */ int crtc2_base; /* for pageflipping with CloneMode */ + int crtc1_base; } RADEONSAREAPriv, *RADEONSAREAPrivPtr; #endif --- radeon_state.c.orig 2005-01-05 10:04:17.660930998 -0500 +++ radeon_state.c 2005-01-05 10:10:31.661350159 -0500 @@ -1330,9 +1330,7 @@ BEGIN_RING(6); RADEON_WAIT_UNTIL_3D_IDLE(); - OUT_RING_REG(RADEON_CRTC_OFFSET, - ((sarea->frame.y * dev_priv->front_pitch + - sarea->frame.x * (dev_priv->color_fmt - 2)) & ~7) + OUT_RING_REG(RADEON_CRTC_OFFSET, dev_priv->sarea_priv->crtc1_base + offset); OUT_RING_REG(RADEON_CRTC2_OFFSET, dev_priv->sarea_priv->crtc2_base + offset);