On Sat, Apr 13, 2019 at 11:13:27AM +0000, Simon Ser wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > This adds basic immutable support for the zpos property. The zpos increases > from bottom to top: primary, sprites, cursor. I was thinking a bit about how we might go about testing this. We probably want a basic test that just checks that if any plane has a zpos prop then all planes should have it. A functional test would stack the planes up in some way and compare against a software rendered reference. IIRC there was a zpos test case floating around but that depended on alpha blending which we don't necessarily have. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > [contact@xxxxxxxxxxx: adapted for latest drm-tip] > Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> > --- > > Maarten, could your review this patch? > > Changes from v2 to v3: add the zpos property in skl_universal_plane_create too. > > drivers/gpu/drm/i915/intel_display.c | 10 ++++++++-- > drivers/gpu/drm/i915/intel_sprite.c | 7 ++++++- > 2 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 8576a7f799..f0a85a75bd 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -14323,7 +14323,7 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe) > const u64 *modifiers; > const u32 *formats; > int num_formats; > - int ret; > + int ret, zpos; > > if (INTEL_GEN(dev_priv) >= 9) > return skl_universal_plane_create(dev_priv, pipe, > @@ -14412,6 +14412,9 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe) > DRM_MODE_ROTATE_0, > supported_rotations); > > + zpos = 0; > + drm_plane_create_zpos_immutable_property(&plane->base, zpos); > + > drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs); > > return plane; > @@ -14428,7 +14431,7 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv, > { > unsigned int possible_crtcs; > struct intel_plane *cursor; > - int ret; > + int ret, zpos; > > cursor = intel_plane_alloc(); > if (IS_ERR(cursor)) > @@ -14477,6 +14480,9 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv, > DRM_MODE_ROTATE_0 | > DRM_MODE_ROTATE_180); > > + zpos = RUNTIME_INFO(dev_priv)->num_sprites[pipe] + 1; > + drm_plane_create_zpos_immutable_property(&cursor->base, zpos); > + > drm_plane_helper_add(&cursor->base, &intel_plane_helper_funcs); > > return cursor; > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c > index 65de7387bf..40b7bcd720 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -2333,6 +2333,8 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv, > BIT(DRM_MODE_BLEND_PREMULTI) | > BIT(DRM_MODE_BLEND_COVERAGE)); > > + drm_plane_create_zpos_immutable_property(&plane->base, plane_id); > + > drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs); > > return plane; > @@ -2354,7 +2356,7 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv, > const u64 *modifiers; > const u32 *formats; > int num_formats; > - int ret; > + int ret, zpos; > > if (INTEL_GEN(dev_priv) >= 9) > return skl_universal_plane_create(dev_priv, pipe, > @@ -2444,6 +2446,9 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv, > DRM_COLOR_YCBCR_BT709, > DRM_COLOR_YCBCR_LIMITED_RANGE); > > + zpos = sprite + 1; > + drm_plane_create_zpos_immutable_property(&plane->base, zpos); > + > drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs); > > return plane; > -- > 2.21.0 > -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx