34 lines
1.5 KiB
Diff
34 lines
1.5 KiB
Diff
From 3d5b7866ca7900e3361ef33467c2f6ebb6834344 Mon Sep 17 00:00:00 2001
|
|
From: Imagination Technologies <powervr@imgtec.com>
|
|
Date: Wed, 8 Nov 2017 15:15:20 +0000
|
|
Subject: [PATCH 014/168] egl/wayland: post maximum damage when blitting
|
|
|
|
When blitting, as part of the "is_different_gpu" case when swapping
|
|
buffers, the blit is done using the full surface dimensions, ignoring
|
|
the damage region. This results in corruption of the non damaged region
|
|
on screen. Workaround this by posting maximum damage when blitting.
|
|
|
|
A better fix would be to limit the blit to the damaged region, at least
|
|
when the number of damage rectangles is 1.
|
|
---
|
|
src/egl/drivers/dri2/platform_wayland.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
|
|
index 850a197d952..73a443b4b40 100644
|
|
--- a/src/egl/drivers/dri2/platform_wayland.c
|
|
+++ b/src/egl/drivers/dri2/platform_wayland.c
|
|
@@ -1593,7 +1593,8 @@ dri2_wl_swap_buffers_with_damage(_EGLDisplay *disp,
|
|
/* If the compositor doesn't support damage_buffer, we deliberately
|
|
* ignore the damage region and post maximum damage, due to
|
|
* https://bugs.freedesktop.org/78190 */
|
|
- if (!n_rects || !try_damage_buffer(dri2_surf, rects, n_rects))
|
|
+ if (dri2_dpy->is_different_gpu ||
|
|
+ !n_rects || !try_damage_buffer(dri2_surf, rects, n_rects))
|
|
wl_surface_damage(dri2_surf->wl_surface_wrapper,
|
|
0, 0, INT32_MAX, INT32_MAX);
|
|
|
|
--
|
|
2.17.1
|
|
|