gl-renderer: Account for offset in output region translation
authorDaniel Stone <daniels@collabora.com>
Mon, 1 Jul 2019 16:44:20 +0000 (17:44 +0100)
committerDaniel Stone <daniel@fooishbar.org>
Fri, 12 Jul 2019 17:00:32 +0000 (17:00 +0000)
commit3ebd870487034e80e33309e580c4e0be0900a6ac
tree0d89af5772731da4b5b365f0d21f8cb696c25746
parent3ea03bb85e4206625897769472f8b5a986789533
gl-renderer: Account for offset in output region translation

In 55bcb93fefd6 ("gl-renderer: Use helper for conversion to EGL rects"),
we extracted and lovingly commented the transformation from global to
output co-ordinate space used for EGL_KHR_swap_buffer_with_damage, into
a new helper function.

The commenting correctly noted the steps we need to perform the
transformation: shifting by the output's offset into global space,
followed by applying the output's scale and rotation transformations.

Unfortunately, the code did not live up to the high standards of the
comment, and forgot to translate by the output's offset. This meant that
for multiple outputs, we would probably end up with wildly out-of-bounds
co-ordinates.

Fix the code to first translate by the output's offset in global space,
ensuring that both our swap_buffers_with_damage, and our partial_update
co-ordinate sets, can spark joy for those blessed with more than one
output.

Signed-off-by: Daniel Stone <daniels@collabora.com>
libweston/renderer-gl/gl-renderer.c