disabling rotation for a particular display area

Ivan Drobyshevskyi drobyshevskyi at gmail.com
Fri Sep 20 14:54:27 UTC 2024


Hi all,

Is there any way to make weston not rotate a particular window? Any
kind of ugly workaround will do.

Larger context around it -- high resolution video on an embedded board
becomes super jerky when the display is rotated, and plays smoothly
when it's not. So one idea is to pre-rotate the video.

Full details below:

There's an i.MX6DL embedded board, running community flavor of Yocto
BSP (meta-freescale) with weston (8.0.0) and gstreamer 1.16. DRM
backend is used, with etnaviv driver.

FullHD LVDS display is connected, natively in landscape mode, but must
be used in portrait mode, so it's rotated in weston.ini
(transform=270).

Now the problem: higher resolution video (about half of FullHD,
occupying half of the screen) is very teared/jerky.
FPS by itself is not an issue, reported around 30 by fpsdisplaysink.
Now if display rotation is disabled (transform=0), video is smooth!
Video is played via gst-launch-1.0 with waylandsink.

I've backported "rotate-method" waylandsink support, which effectively
calls wl_surface_set_buffer_transform(), among other things.
The idea was to match weston display rotation and video rotation so
that they cancel out.
The commit didn't apply cleanly, but I think I've figured it out and
ported properly.
Video is indeed rotated, but still teared/jerky, no improvement at all
(tried both CW and CCW just in case).

Thanks,
Ivan


More information about the wayland-devel mailing list