On Thu, 17 Oct 2013 22:53:13 +0300
ville.syrj...@linux.intel.com wrote:

> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> When color keying is used, the primary may not be invisible even though
> the sprite fully covers it. So check for color keying before deciding to
> disable the primary plane.
> 
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_sprite.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
> b/drivers/gpu/drm/i915/intel_sprite.c
> index 07b13dc..74f6bd4 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -643,6 +643,15 @@ format_is_yuv(uint32_t format)
>       }
>  }
>  
> +static bool colorkey_enabled(struct intel_plane *intel_plane)
> +{
> +     struct drm_intel_sprite_colorkey key;
> +
> +     intel_plane->get_colorkey(&intel_plane->base, &key);
> +
> +     return key.flags != I915_SET_COLORKEY_NONE;
> +}
> +
>  static int
>  intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
>                  struct drm_framebuffer *fb, int crtc_x, int crtc_y,
> @@ -828,7 +837,7 @@ intel_update_plane(struct drm_plane *plane, struct 
> drm_crtc *crtc,
>        * If the sprite is completely covering the primary plane,
>        * we can disable the primary and save power.
>        */
> -     disable_primary = drm_rect_equals(&dst, &clip);
> +     disable_primary = drm_rect_equals(&dst, &clip) && 
> !colorkey_enabled(intel_plane);
>       WARN_ON(disable_primary && !visible && intel_crtc->active);
>  
>       mutex_lock(&dev->struct_mutex);

Reviewed-by: Jesse Barnes <jbar...@virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to