Open Bug 1775266 Opened 3 months ago Updated 3 months ago

Implement buffer pre-rotation (SurfaceControl.Transaction::setBufferTransform / wl_surface::set_buffer_transform)

Categories

(Core :: Graphics: WebRender, enhancement)

enhancement

Tracking

()

People

(Reporter: rmader, Unassigned)

References

(Blocks 2 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

You need to log in before you can comment on or make changes to this bug.