Why is this patch marked as rejected in patchwork? Something like this seems required for a Wayland compositor to use the HW cursor with rotated primary/overlay planes. On 3/10/21 15:50, Simon Ser wrote: > The commit 1347385fe187 ("drm/amd/display: don't expose rotation > prop for cursor plane") removed the rotation property for the > cursor plane, assuming the cursor would always be displayed without > any rotation. However the rotation is inherited from the underlying > plane. > > As a result, if the primary plane is rotated, then the cursor plane > will incorrectly be rotated as well even though it doesn't have a > rotation property. > > To fix this, re-introduce the cursor rotation property, and check > that its value matches the underlying plane's. > > Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: Harry Wentland <hwentlan@xxxxxxx> > Cc: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx> > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index b4f6e2985b8a..36ee52104007 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -6897,8 +6897,7 @@ static int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm, > DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 | > DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270; > > - if (dm->adev->asic_type >= CHIP_BONAIRE && > - plane->type != DRM_PLANE_TYPE_CURSOR) > + if (dm->adev->asic_type >= CHIP_BONAIRE) > drm_plane_create_rotation_property(plane, DRM_MODE_ROTATE_0, > supported_rotations); > > @@ -9494,6 +9493,11 @@ static int dm_check_crtc_cursor(struct drm_atomic_state *state, > return -EINVAL; > } > > + if (new_underlying_state->rotation != new_cursor_state->rotation) { > + drm_dbg_atomic(crtc->dev, "Cursor plane rotation doesn't match underlying plane\n"); > + return -EINVAL; > + } > + > /* In theory we could probably support YUV cursors when the underlying > * plane uses a YUV format, but there's no use-case for it yet. */ > if (new_underlying_state->fb->format->is_yuv) { -- Earthling Michel Dänzer | https://redhat.com Libre software enthusiast | Mesa and Xwayland developer