[Intel-gfx] [PATCH 1/7] drm/i915: Don't disable primary when color keying is used

Ville Syrjälä ville.syrjala at linux.intel.com
Fri Dec 13 09:41:31 CET 2013


On Thu, Dec 12, 2013 at 09:58:25PM +0100, Daniel Vetter wrote:
> On Thu, Dec 12, 2013 at 9:56 PM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> > On Thu, 17 Oct 2013 22:53:13 +0300
> > ville.syrjala at linux.intel.com wrote:
> >
> >> From: Ville Syrjälä <ville.syrjala at 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.syrjala at 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 <jbarnes at virtuousgeek.org>
> 
> Ready your canisters with gallons full of sore acid and raw hatred,
> maintainer party-crasher coming in: Where's the igt?
> 
> Should be fairly simple to exercise with those fancy CRCs we have ...

Whoever ends up writing the basic plane crc tests gets to add some
colorkey tests too. But this fixes a real bug, so my preference
would to to apply it asap, test or no test.

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list