Implement buffer pre-rotation (SurfaceControl.Transaction::setBufferTransform / wl_surface::set_buffer_transform)
Categories
(Core :: Graphics: WebRender, enhancement)
Tracking
()
People
(Reporter: rmader, Unassigned)
References
(Blocks 3 open bugs)
Details
Both Android and Wayland support the concept of pre-rotating buffers according to the output rotation[1][2][3] in order to reduce compositor passes if there is no dedicated hardware to do rotations efficiently (90/270 tend to be more problematic than e.g. 180 degree or x/y flips). Doing so can reduce GPU bandwidth usage considerably in affected cases.
This should be relatively easy to implement in the non-os-compositor, as only the buffer dimensions have to be adapted and a simple rotation matrix be applied when blitting to the output buffer.
1: https://developer.android.com/reference/android/view/SurfaceControl.Transaction#setBufferTransform(android.view.SurfaceControl,%20int)
2: https://developer.android.com/games/optimize/vulkan-prerotation
3: https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_output-enum-transform / https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface -> set_buffer_transform
Updated•10 months ago
|
Description
•