[PATCH] drm/modes: Support video parameters with only reflect option

Maxime Ripard mripard at kernel.org
Tue Dec 10 10:20:46 UTC 2019


Hi,

On Mon, Dec 09, 2019 at 07:32:54PM +0100, Stephan Gerhold wrote:
> At the moment, video mode parameters like video=540x960,reflect_x,
> (without rotation set) are silently ignored.
>
> One of the reasons for this is that the calculation that
> combines the panel_orientation with cmdline->rotation_reflection
> does not handle the case when cmdline->rotation_reflection does
> not have any rotation set.
> (i.e. cmdline->rotation_reflection & DRM_MODE_ROTATE_MASK == 0)
>
> Example:
>   *rotation = DRM_MODE_ROTATE_0 (no panel_orientation)
>   cmdline->rotation_reflection = DRM_MODE_REFLECT_X (video=MODE,reflect_x)
>
> The current code does:
>   panel_rot = ilog2(*rotation & DRM_MODE_ROTATE_MASK);
>   cmdline_rot = ilog2(cmdline->rotation_reflection & DRM_MODE_ROTATE_MASK);
>   sum_rot = (panel_rot + cmdline_rot) % 4;
>
> and therefore:
>   panel_rot = ilog2(DRM_MODE_ROTATE_0) = ilog2(1) = 0
>   cmdline_rot = ilog2(0) = -1
>   sum_rot = (0 + -1) % 4 = -1 % 4 = 3
>    ...
>   *rotation = DRM_MODE_ROTATE_270 | DRM_MODE_REFLECT_X
>
> So we incorrectly generate DRM_MODE_ROTATE_270 in this case.
> To prevent cmdline_rot from becoming -1, we need to treat
> the rotation as DRM_MODE_ROTATE_0.
>
> On the other hand, there is no need to go through that calculation
> at all if no rotation is set in rotation_reflection.
> A simple XOR is enough to combine the reflections.
>
> Finally, also allow DRM_MODE_ROTATE_0 in the if statement below.
> DRM_MODE_ROTATE_0 means "no rotation" and should therefore not
> require any special handling (e.g. specific tiling format).
>
> This makes video parameters with only reflect option work correctly.
>
> Signed-off-by: Stephan Gerhold <stephan at gerhold.net>

Thanks for that commit message.

Can you also add a selftest to make sure we don't get a regression in
the future?

Thanks!
Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20191210/323d84a3/attachment.sig>


More information about the dri-devel mailing list