diff --git a/src/i830_display.c b/src/i830_display.c index 92e52ed..4132da2 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -519,6 +519,23 @@ i830_display_tiled(xf86CrtcPtr crtc) } static Bool +i830_display_cloned(xf86CrtcPtr crtc) +{ + ScrnInfoPtr pScrn = crtc->scrn; + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + I830Ptr pI830 = I830PTR(pScrn); + int i, crtc_count = 0; + + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + if (output->crtc == crtc) + crtc_count++; + } + + return crtc_count > 1 ? TRUE : FALSE; +} + +static Bool i830_use_fb_compression(xf86CrtcPtr crtc) { ScrnInfoPtr pScrn = crtc->scrn; @@ -532,6 +549,9 @@ i830_use_fb_compression(xf86CrtcPtr crtc) if (!i830_display_tiled(crtc)) return FALSE; + if (i830_display_cloned(crtc)) + return FALSE; + /* Pre-965 only supports plane A */ if (!IS_I965GM(pI830) && plane != FBC_CTL_PLANEA) return FALSE;