On Tue, Jun 05, 2018 at 08:10:36AM +0000, Lisovskiy, Stanislav wrote: > On Tue, 2018-05-29 at 21:28 +0300, Ville Syrjala wrote: > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > On SKL+ the dst colorkey must be configured on the lower > > plane that contains the colorkey. This is in contrast to > > most earlier platforms where the dst colorkey is configured > > on the plane above. > > > > The hardware will peform dst keying only between two immediately > > adjacent (in zorder) planes. Plane 1 will be keyed against plane 0, > > plane 2 againts plane 1, and so on. There is no way to key arbitrary > > planes against plane 0. Thus offering dst color keying on plane 2+ > > is pointless. In fact it can be harmful since enabling dst keying on > > more than one plane on the same pipe leads to only the top-most of > > the planes performing the keying. For any plane lower in zorder the > > dst key enable is simply ignored. > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > > > --- > > drivers/gpu/drm/i915/intel_sprite.c | 63 > > +++++++++++++++++++++++++++++++++++-- > > 1 file changed, 60 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c > > b/drivers/gpu/drm/i915/intel_sprite.c > > index ee23613f9fd4..6164c2ca20c3 100644 > > --- a/drivers/gpu/drm/i915/intel_sprite.c > > +++ b/drivers/gpu/drm/i915/intel_sprite.c > > @@ -1071,6 +1071,36 @@ intel_check_sprite_plane(struct intel_plane > > *plane, > > return 0; > > } > > > > +static bool has_dst_key_in_primary_plane(struct drm_i915_private > > *dev_priv) > > +{ > > + return INTEL_GEN(dev_priv) >= 9; > > +} > > + > > +static void intel_plane_set_ckey(struct intel_plane_state > > *plane_state, > > + const struct > > drm_intel_sprite_colorkey *set) > > +{ > > + struct intel_plane *plane = to_intel_plane(plane_state- > > >base.plane); > > + struct drm_intel_sprite_colorkey *key = &plane_state->ckey; > > + > > + *key = *set; > > + > > + /* > > + * We want src key enabled on the > > + * sprite and not on the primary. > > + */ > > + if (plane->id == PLANE_PRIMARY && > > + set->flags & I915_SET_COLORKEY_SOURCE) > > + key->flags = 0; > > + > > + /* > > + * On SKL+ we want dst key enabled on > > + * the primary and not on the sprite. > > + */ > > + if (plane->id != PLANE_PRIMARY && The 'INTEL_GEN(dev_priv) >= 9' check that was supposed to be here ended up in the wrong patch. I moved it over while applying this to avoid breaking the pre-SKL sprites. Only caught it when glancing at the resulting code before pushing. Might be time to write some real colorkeying igts... Patch pushed to dinq. Thanks for the review. > > + set->flags & I915_SET_COLORKEY_DESTINATION) > > + key->flags = 0; > > +} > > + -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx