diff --git a/Mesa-drivers.changes b/Mesa-drivers.changes index c7f1aa6..3301d64 100644 --- a/Mesa-drivers.changes +++ b/Mesa-drivers.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Dec 4 11:20:05 UTC 2018 - bjorn.lie@gmail.com + +- Add u_wayland_egl-Ensure-EGL-surface.patch: wayland/egl: Ensure + EGL surface is resized on DRI update_buffers(). Patch is sent + upstream already. + ------------------------------------------------------------------- Thu Nov 29 13:12:15 UTC 2018 - sndirsch@suse.com diff --git a/Mesa-drivers.spec b/Mesa-drivers.spec index ea49369..5e878f1 100644 --- a/Mesa-drivers.spec +++ b/Mesa-drivers.spec @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -138,6 +138,7 @@ Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch Patch55: u_constify-struct-drisw_loader_funcs.patch Patch56: u_drisw-use-separate-drisw_loader_funcs-for-shm.patch +Patch57: u_wayland_egl-Ensure-EGL-surface.patch BuildRequires: autoconf >= 2.60 BuildRequires: automake @@ -215,7 +216,7 @@ BuildRequires: pkgconfig(wayland-protocols) >= 1.8 BuildRequires: pkgconfig(wayland-server) >= 1.11 %endif %if 0%{with_llvm} -BuildRequires: llvm-devel >= 3.9.0 +BuildRequires: llvm-devel >= 6.0.0 %endif %if 0%{with_opencl} @@ -738,6 +739,7 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch54 -p1 %patch55 -p1 %patch56 -p1 +%patch57 -p1 # Remove requires to libglvnd/libglvnd-devel from baselibs.conf when # disabling libglvnd build; ugly ... diff --git a/Mesa.changes b/Mesa.changes index c7f1aa6..3301d64 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Dec 4 11:20:05 UTC 2018 - bjorn.lie@gmail.com + +- Add u_wayland_egl-Ensure-EGL-surface.patch: wayland/egl: Ensure + EGL surface is resized on DRI update_buffers(). Patch is sent + upstream already. + ------------------------------------------------------------------- Thu Nov 29 13:12:15 UTC 2018 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 148d274..5998756 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -137,6 +137,7 @@ Patch31: archlinux_0001-Fix-linkage-against-shared-glapi.patch Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch Patch55: u_constify-struct-drisw_loader_funcs.patch Patch56: u_drisw-use-separate-drisw_loader_funcs-for-shm.patch +Patch57: u_wayland_egl-Ensure-EGL-surface.patch BuildRequires: autoconf >= 2.60 BuildRequires: automake @@ -214,7 +215,7 @@ BuildRequires: pkgconfig(wayland-protocols) >= 1.8 BuildRequires: pkgconfig(wayland-server) >= 1.11 %endif %if 0%{with_llvm} -BuildRequires: llvm-devel >= 3.9.0 +BuildRequires: llvm-devel >= 6.0.0 %endif %if 0%{with_opencl} @@ -737,6 +738,7 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch54 -p1 %patch55 -p1 %patch56 -p1 +%patch57 -p1 # Remove requires to libglvnd/libglvnd-devel from baselibs.conf when # disabling libglvnd build; ugly ... diff --git a/u_wayland_egl-Ensure-EGL-surface.patch b/u_wayland_egl-Ensure-EGL-surface.patch new file mode 100644 index 0000000..0c9b08f --- /dev/null +++ b/u_wayland_egl-Ensure-EGL-surface.patch @@ -0,0 +1,61 @@ +From 15ad1cb4502f00df6cec88e3cc9090449146a347 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 8122c81128..d9e484eaed 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.19.1 +