From: Thierry Reding <tred...@nvidia.com>

As of commit 4dc55525b095 ("drm: plane: Verify that no or all planes
have a zpos property") a warning is emitted if there's a mix of planes
with and without a zpos property.

On Tegra, cursor planes are always composited on top of all other
planes, which is why they never had a zpos property attached to them.
However, since the composition order is fixed, this is trivial to
remedy by simply attaching an immutable zpos property to them.

Changes in v2:
- hardcode cursor plane zpos to 255 instead of 0 (Ville)

Reported-by: Jonathan Hunter <jonath...@nvidia.com>
Signed-off-by: Thierry Reding <tred...@nvidia.com>
---
 drivers/gpu/drm/tegra/dc.c  | 9 +++++++--
 drivers/gpu/drm/tegra/hub.c | 2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
index 83f31c6e891c..85408eed4685 100644
--- a/drivers/gpu/drm/tegra/dc.c
+++ b/drivers/gpu/drm/tegra/dc.c
@@ -787,7 +787,7 @@ static struct drm_plane *tegra_primary_plane_create(struct 
drm_device *drm,
        }
 
        drm_plane_helper_add(&plane->base, &tegra_plane_helper_funcs);
-       drm_plane_create_zpos_property(&plane->base, plane->index, 0, 255);
+       drm_plane_create_zpos_property(&plane->base, plane->index, 0, 254);
 
        err = drm_plane_create_rotation_property(&plane->base,
                                                 DRM_MODE_ROTATE_0,
@@ -957,6 +957,7 @@ static struct drm_plane 
*tegra_dc_cursor_plane_create(struct drm_device *drm,
        }
 
        drm_plane_helper_add(&plane->base, &tegra_cursor_plane_helper_funcs);
+       drm_plane_create_zpos_immutable_property(&plane->base, 255);
 
        return &plane->base;
 }
@@ -1074,7 +1075,11 @@ static struct drm_plane 
*tegra_dc_overlay_plane_create(struct drm_device *drm,
        }
 
        drm_plane_helper_add(&plane->base, &tegra_plane_helper_funcs);
-       drm_plane_create_zpos_property(&plane->base, plane->index, 0, 255);
+
+       if (!cursor)
+               drm_plane_create_zpos_property(&plane->base, plane->index, 0, 
254);
+       else
+               drm_plane_create_zpos_immutable_property(&plane->base, 255);
 
        err = drm_plane_create_rotation_property(&plane->base,
                                                 DRM_MODE_ROTATE_0,
diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index 22a03f7ffdc1..f8afc05bceb3 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -590,7 +590,7 @@ struct drm_plane *tegra_shared_plane_create(struct 
drm_device *drm,
        }
 
        drm_plane_helper_add(p, &tegra_shared_plane_helper_funcs);
-       drm_plane_create_zpos_property(p, 0, 0, 255);
+       drm_plane_create_zpos_property(p, index, 0, 254);
 
        return p;
 }
-- 
2.24.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to