diff options
author | Thomas Hellstrom <[email protected]> | 2017-08-10 16:14:23 +0200 |
---|---|---|
committer | Thomas Hellstrom <[email protected]> | 2017-08-17 07:39:42 +0200 |
commit | 1e83baeb4b6b6d557ae8b9c219347b1b252b27c7 (patch) | |
tree | b907be53bf669f565a8dcdc3810d1a6d65f891d3 /src/glx/glxcmds.c | |
parent | f71e174bb8d01855b56523348e5b8f50a6a5ce78 (diff) |
loader_dri3: Honor the request to preserve back buffer content
EGL uses the force_copy parameter to loader_dri3_swap_buffers_msc() to indicate
that it wants to preserve back buffer contents across a buffer swap.
While the loader then turns off server-side page-flipping there's nothing to
guarantee that a new backbuffer isn't chosen when EGL starts to render again,
and that buffer's content is of course undefined.
So rework the functionality:
If the client supports local blits, allow server-side page flipping and when
a new back is grabbed, if needed, blit the old back's content to the new back.
If the client doesn't support local blits, disallow server-side page-flipping
to avoid a client deadlock and then, when grabbing a new back buffer, sleep
until the old back is idle, which may take a substantial time depending on
swap interval.
Signed-off-by: Thomas Hellstrom <[email protected]>
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/glx/glxcmds.c')
0 files changed, 0 insertions, 0 deletions