From b133108f508294e35b1639985eb8f2ce0463ddcc Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Tue, 4 Dec 2018 12:17:16 +0100 Subject: [PATCH] Backport patch to fix totem Signed-off-by: Igor Gnatenko --- ...re-EGL-surface-is-resized-on-DRI-upd.patch | 61 +++++++++++++++++++ mesa.spec | 9 ++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch diff --git a/0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch b/0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch new file mode 100644 index 0000000..e257006 --- /dev/null +++ b/0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch @@ -0,0 +1,61 @@ +From 0f0d7cd2ecf20d0f74df6c6ec7d04bb3b7156c30 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Tue, 20 Nov 2018 18:06:38 +0100 +Subject: [PATCH] wayland/egl: Ensure EGL surface is resized on DRI + update_buffers() + +Fullscreening and unfullscreening a totem window while playing a video +sometimes results in the video subsurface not changing size along. This +is also reproducible with epiphany. + +If a surface gets resized while we have an active back buffer for it, the +resized dimensions won't get neither immediately applied on the resize +callback, nor correctly synchronized on update_buffers(), as the +(now stale) surface size and currently attached buffer size still do match. + +There's actually 2 things to synchronize here, first the surface query +size might not be updated yet to the wl_egl_window's (i.e. resize_callback +happened while there is a back buffer), and second the wayland buffers +would need dropping if new surface size differs with the currently attached +buffer. These are done in separate steps now. + +https://bugzilla.redhat.com/show_bug.cgi?id=1650929 + +Signed-off-by: Carlos Garnacho +Tested-by: Bastien Nocera +--- + src/egl/drivers/dri2/platform_wayland.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c +index 34e09d7ec1..474a13316b 100644 +--- a/src/egl/drivers/dri2/platform_wayland.c ++++ b/src/egl/drivers/dri2/platform_wayland.c +@@ -597,10 +597,8 @@ update_buffers(struct dri2_egl_surface *dri2_surf) + struct dri2_egl_display *dri2_dpy = + dri2_egl_display(dri2_surf->base.Resource.Display); + +- if (dri2_surf->base.Width != dri2_surf->wl_win->attached_width || +- dri2_surf->base.Height != dri2_surf->wl_win->attached_height) { +- +- dri2_wl_release_buffers(dri2_surf); ++ if (dri2_surf->base.Width != dri2_surf->wl_win->width || ++ dri2_surf->base.Height != dri2_surf->wl_win->height) { + + dri2_surf->base.Width = dri2_surf->wl_win->width; + dri2_surf->base.Height = dri2_surf->wl_win->height; +@@ -608,6 +606,11 @@ update_buffers(struct dri2_egl_surface *dri2_surf) + dri2_surf->dy = dri2_surf->wl_win->dy; + } + ++ if (dri2_surf->base.Width != dri2_surf->wl_win->attached_width || ++ dri2_surf->base.Height != dri2_surf->wl_win->attached_height) { ++ dri2_wl_release_buffers(dri2_surf); ++ } ++ + if (get_back_bo(dri2_surf) < 0) { + _eglError(EGL_BAD_ALLOC, "failed to allocate color buffer"); + return -1; +-- +2.20.0.rc2 + diff --git a/mesa.spec b/mesa.spec index 27b8dd6..7768a4e 100644 --- a/mesa.spec +++ b/mesa.spec @@ -43,7 +43,7 @@ Name: mesa Summary: Mesa graphics libraries %global ver 18.3.0-rc5 Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} -Release: 1%{?dist} +Release: 2%{?dist} License: MIT URL: http://www.mesa3d.org @@ -64,6 +64,10 @@ Patch3: 0003-evergreen-big-endian.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1560481 #Patch7: 0001-gallium-Disable-rgb10-configs-by-default.patch +# https://lists.freedesktop.org/archives/mesa-dev/2018-November/210797.html +# https://bugzilla.redhat.com/show_bug.cgi?id=1650929 +Patch10: 0001-wayland-egl-Ensure-EGL-surface-is-resized-on-DRI-upd.patch + BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: automake @@ -625,6 +629,9 @@ popd %{_includedir}/vulkan/ %changelog +* Tue Dec 04 2018 Igor Gnatenko - 18.3.0~rc5-2 +- Backport patch to fix totem + * Tue Dec 4 2018 Peter Robinson 18.3.0~rc5-1 - Update to 18.3.0~rc5