On 10/13/2010 04:35 AM, Ben Hutchings wrote:
> From: Jesse Barnes <[email protected]>
> 
> commit 9c928d168d4030a230a7a5ee1764721d173f1153 upstream.
> 
> We're really supposed to do this to avoid trouble with underflows when
> multiple planes are active.
> 
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=26987.
> 
> Signed-off-by: Jesse Barnes <[email protected]>
> Tested-by: fangxun <[email protected]>
> Signed-off-by: Eric Anholt <[email protected]>
> [bwh: Backport to DRM 2.6.33 - drop debugfs integration.]
> Signed-off-by: Ben Hutchings <[email protected]>

Looks simple enough, the remaining DRM_DEBUG_KMS looks a bit odd in the patch
but cannot do any harm.

ACK
> ---
>  drivers/gpu/drm/i915/intel_display.c |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index 26e7d22..1a671b7 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1160,8 +1160,12 @@ static void intel_update_fbc(struct drm_crtc *crtc,
>       struct drm_framebuffer *fb = crtc->fb;
>       struct intel_framebuffer *intel_fb;
>       struct drm_i915_gem_object *obj_priv;
> +     struct drm_crtc *tmp_crtc;
>       struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>       int plane = intel_crtc->plane;
> +     int crtcs_enabled = 0;
> +
> +     DRM_DEBUG_KMS("\n");
>  
>       if (!i915_powersave)
>               return;
> @@ -1181,10 +1185,20 @@ static void intel_update_fbc(struct drm_crtc *crtc,
>        * If FBC is already on, we just have to verify that we can
>        * keep it that way...
>        * Need to disable if:
> +      *   - more than one pipe is active
>        *   - changing FBC params (stride, fence, mode)
>        *   - new fb is too large to fit in compressed buffer
>        *   - going to an unsupported config (interlace, pixel multiply, etc.)
>        */
> +     list_for_each_entry(tmp_crtc, &dev->mode_config.crtc_list, head) {
> +             if (tmp_crtc->enabled)
> +                     crtcs_enabled++;
> +     }
> +     DRM_DEBUG_KMS("%d pipes active\n", crtcs_enabled);
> +     if (crtcs_enabled > 1) {
> +             DRM_DEBUG_KMS("more than one pipe active, disabling 
> compression\n");
> +             goto out_disable;
> +     }
>       if (intel_fb->obj->size > dev_priv->cfb_size) {
>               DRM_DEBUG_KMS("framebuffer too large, disabling "
>                               "compression\n");


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]

Reply via email to