EGL_KHR_swap_buffers_with_damage#
Supported Hardware#
Series6, Series6XE, Series6XT
Valid APIs#
EGL 1.4
Description#
This extension provides a means to issue a swap buffers request to display the contents of the current back buffer and also specify a list of damage rectangles that can be passed to a system compositor so it can minimize how much it has to recompose.
This should be used in situations where an application is only animating a small portion of a surface since it enables the compositor to avoid wasting time recomposing parts of the surface that haven’t changed.
Note#
Requires EGL 1.4 This extension is written against the wording of the EGL 1.4 Specification. Different with EGL_KHR_partial_update. EGL_KHR_swap_buffers_with_damage concerns the area of the surface that changes between frames for that surface. It concerns the differences between two buffers - the current back buffer and the current front buffer. It is useful only to the consumer.
Surface Damage Example#
The surface damage for frame n is the difference between frame n and frame (n-1) and represents the area that a compositor must recompose.
Frame 0 Frame 1 Frame 2 Frame 3 Frame 4
+---------+ +---------+ +---------+ +---------+ +---------+
| | |#########| |#########| |#########| |#########|
| | | | |#########| |#########| |#########| Final surface
| | | | | | |#########| |#########| content
| | | | | | | | |#########|
+---------+ +---------+ +---------+ +---------+ +---------+
+---------+ +---------+ +---------+ +---------+ +---------+
|@@@@@@@@@| |@@@@@@@@@| | | | | | |
|@@@@@@@@@| | | |@@@@@@@@@| | | | | Surface damage
|@@@@@@@@@| | | | | |@@@@@@@@@| | |
|@@@@@@@@@| | | | | | | |@@@@@@@@@|
+---------+ +---------+ +---------+ +---------+ +---------+
Registry Link#
https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt
Example#
//As an alternative to eglSwapBuffers
eglSwapBuffersWithDamageKHR(eglDisplay, eglSurface, rects, n_rects);