Re: [PATCH v2 5/5] drm/tegra: plane: Support 180Â rotation

From: Dmitry Osipenko
Date: Wed Jun 17 2020 - 14:50:50 EST


16.06.2020 14:25, Dmitry Osipenko ÐÐÑÐÑ:
> 16.06.2020 00:47, Emil Velikov ÐÐÑÐÑ:
>> Hi all,
>>
>> Perhaps a silly question:
>>
>> On Mon, 15 Jun 2020 at 08:28, Dmitry Osipenko <digetx@xxxxxxxxx> wrote:
>>>
>>> Combining horizontal and vertical reflections gives us 180 degrees of
>>> rotation.
>>>
>>> Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx>
>>> ---
>>> drivers/gpu/drm/tegra/dc.c | 13 ++++++++++++-
>>> 1 file changed, 12 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
>>> index f31bca27cde4..ddd9b88f8fce 100644
>>> --- a/drivers/gpu/drm/tegra/dc.c
>>> +++ b/drivers/gpu/drm/tegra/dc.c
>>
>>> + if (rotation & DRM_MODE_ROTATE_180) {
>>> + plane_state->reflect_x = !plane_state->reflect_x;
>>> + plane_state->reflect_y = !plane_state->reflect_y;
>>> + }
>>> +
>> As mentioned by Ville the above is already handled by
>> drm_rotation_simplify() ... although it makes me wonder:
>>
>>
>>> err = drm_plane_create_rotation_property(&plane->base,
>>> DRM_MODE_ROTATE_0,
>>> DRM_MODE_ROTATE_0 |
>>> + DRM_MODE_ROTATE_180 |
>>> DRM_MODE_REFLECT_X |
>>> DRM_MODE_REFLECT_Y);
>>
>> Would it make sense for drm_plane_create_rotation_property() itself,
>> to add DRM_MODE_ROTATE_180, when both reflections are supported?
>
> Hello Emil,
>
> That's a good point! All DRM_MODE_ROTATE_180 should be removed because
> Tegra can't do 180Â + reflected-x. The DRM core takes care of 180Â
> rotation when both x/y reflections are supported.
>

I just found out that I forgot to drop the WIP patches which added
transparent rotation support while was checking whether these plane
DRM_MODE_ROTATE_180 could be dropped and it's actually need to be set
for the planes, otherwise 180 rotation support is filtered out by the
atomic check.