Backport F40 changes

Resolves: RHEL-30252
This commit is contained in:
Florian Müllner 2024-02-11 20:11:00 +01:00 committed by Florian Müllner
parent f50a176d62
commit a6f46c185c
No known key found for this signature in database
9 changed files with 78 additions and 224 deletions

3
.gitignore vendored
View File

@ -216,3 +216,6 @@ mutter-2.31.5.tar.bz2
/mutter-45.1.tar.xz
/mutter-45.2.tar.xz
/mutter-46.alpha.tar.xz
/mutter-46.beta.tar.xz
/mutter-46.rc.tar.xz
/mutter-46.0.tar.xz

View File

@ -1,4 +1,4 @@
From 299a0480fc04b7befcb768eeb98d187cf12487d1 Mon Sep 17 00:00:00 2001
From 1d5c47f8970c2027de5f6fa49b84de73d55b419b Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 5 Oct 2023 13:09:46 -0700
Subject: [PATCH] Revert "x11: Use input region from frame window for decorated
@ -15,10 +15,10 @@ Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
2 files changed, 10 insertions(+), 26 deletions(-)
diff --git a/src/core/frame.c b/src/core/frame.c
index 6b97306a1c..0f2eb349d1 100644
index 145f0b7bd7..1c90ce4231 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -34,7 +34,6 @@
@@ -35,7 +35,6 @@
#include "x11/window-props.h"
#include <X11/Xatom.h>
@ -26,7 +26,7 @@ index 6b97306a1c..0f2eb349d1 100644
#define EVENT_MASK (SubstructureRedirectMask | \
StructureNotifyMask | SubstructureNotifyMask | \
@@ -108,9 +107,6 @@ meta_window_set_frame_xwindow (MetaWindow *window,
@@ -109,9 +108,6 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window,
XChangeWindowAttributes (x11_display->xdisplay,
frame->xwindow, CWEventMask, &attrs);
@ -36,7 +36,7 @@ index 6b97306a1c..0f2eb349d1 100644
meta_x11_display_register_x_window (x11_display, &frame->xwindow, window);
if (window->mapped)
@@ -219,9 +215,6 @@ meta_window_destroy_frame (MetaWindow *window)
@@ -220,9 +216,6 @@ meta_window_destroy_frame (MetaWindow *window)
window->reparents_pending += 1;
}
@ -44,15 +44,15 @@ index 6b97306a1c..0f2eb349d1 100644
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, NoEventMask);
-
XDeleteProperty (x11_display->xdisplay,
window->xwindow,
meta_window_x11_get_xwindow (window),
x11_display->atom__MUTTER_NEEDS_FRAME);
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index ce6dcf968b..7574948aed 100644
index 745c45db18..8edff883c9 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2027,10 +2027,6 @@ meta_window_x11_constructed (GObject *object)
window->hidden = FALSE;
priv->border_width = attrs.border_width;
@@ -2082,10 +2082,6 @@ meta_window_x11_constructed (GObject *object)
priv->keys_grabbed = FALSE;
priv->grab_on_frame = FALSE;
- g_signal_connect (window, "notify::decorated",
- G_CALLBACK (meta_window_x11_update_input_region),
@ -61,7 +61,7 @@ index ce6dcf968b..7574948aed 100644
G_OBJECT_CLASS (meta_window_x11_parent_class)->constructed (object);
}
@@ -2314,21 +2310,16 @@ meta_window_x11_update_input_region (MetaWindow *window)
@@ -2400,21 +2396,16 @@ meta_window_x11_update_input_region (MetaWindow *window)
g_autoptr (MtkRegion) region = NULL;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
@ -75,7 +75,7 @@ index ce6dcf968b..7574948aed 100644
{
- if (!window->frame)
- {
- if (window->input_region)
- if (priv->input_region)
- meta_window_set_input_region (window, NULL);
- return;
- }
@ -83,23 +83,23 @@ index ce6dcf968b..7574948aed 100644
- }
- else
- {
- xwindow = window->xwindow;
+ if (window->input_region)
- xwindow = priv->xwindow;
+ if (priv->input_region)
+ meta_window_set_input_region (window, NULL);
+ return;
}
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
@@ -2340,7 +2331,7 @@ meta_window_x11_update_input_region (MetaWindow *window)
@@ -2426,7 +2417,7 @@ meta_window_x11_update_input_region (MetaWindow *window)
meta_x11_error_trap_push (x11_display);
mtk_x11_error_trap_push (x11_display->xdisplay);
rects = XShapeGetRectangles (x11_display->xdisplay,
- xwindow,
+ window->xwindow,
+ priv->xwindow,
ShapeInput,
&n_rects,
&ordering);
@@ -2394,8 +2385,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
@@ -2480,8 +2471,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
client_area.x = 0;
client_area.y = 0;
@ -111,5 +111,5 @@ index ce6dcf968b..7574948aed 100644
/* The shape we get back from the client may have coordinates
* outside of the frame. The X SHAPE Extension requires that
--
2.43.0
2.43.2

View File

@ -1,29 +0,0 @@
From 4a82121b6c90df48b474bce31ca16e15f55368dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 4 Sep 2023 10:22:49 +0200
Subject: [PATCH] gschema: Enable 'scale-monitor-framebuffer' experimental
feature
Enabling this by default was the consensus in a previous meeting[1].
[1] https://pagure.io/fedora-workstation/issue/357#comment-848857
---
data/org.gnome.mutter.gschema.xml.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in
index 5d56ae2d37..8052032c51 100644
--- a/data/org.gnome.mutter.gschema.xml.in
+++ b/data/org.gnome.mutter.gschema.xml.in
@@ -103,7 +103,7 @@
<key name="experimental-features"
flags='org.gnome.mutter.MetaExperimentalFeature'>
- <default>[]</default>
+ <default>["scale-monitor-framebuffer"]</default>
<summary>Enable experimental features</summary>
<description>
To enable experimental features, add the feature keyword to the list.
--
2.41.0

View File

@ -1,58 +0,0 @@
From af0ca0cdc2a15036ca7f0a90be374e1436c660cf Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 22 Jan 2024 12:45:37 +0100
Subject: [PATCH] kms/cursor-manager: Create CrtcStateImpls for all active
CRTCs
even if they don't have a cursor plane. This way we can just use the
object. Updating the cursor plane then just looks at the cursor_plane
field to skips updates when there is none.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3254
Fixes: cc7bca073 ("crtc/kms: Dynamically assign primary and cursor planes")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3539>
---
src/backends/native/meta-kms-cursor-manager.c | 6 ++++--
src/backends/native/meta-renderer-native.c | 2 --
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/backends/native/meta-kms-cursor-manager.c b/src/backends/native/meta-kms-cursor-manager.c
index 646084877..6873000dc 100644
--- a/src/backends/native/meta-kms-cursor-manager.c
+++ b/src/backends/native/meta-kms-cursor-manager.c
@@ -333,6 +333,10 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl,
crtc_state_impl = find_crtc_state (cursor_manager_impl, crtc);
g_return_val_if_fail (crtc_state_impl, update);
+ cursor_plane = crtc_state_impl->cursor_plane;
+ if (!cursor_plane)
+ return update;
+
if (!crtc_state_impl->cursor_invalidated)
return update;
@@ -368,8 +372,6 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl,
meta_kms_update_realize (update, impl_device);
}
- cursor_plane = crtc_state_impl->cursor_plane;
-
if (should_have_cursor)
{
int width, height;
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 78bde68ff..dc08824c1 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -1128,8 +1128,6 @@ meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native)
crtc_kms = META_CRTC_KMS (crtc);
kms_plane = meta_crtc_kms_get_assigned_cursor_plane (crtc_kms);
- if (!kms_plane)
- continue;
kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms);
clutter_stage_view_get_layout (stage_view, &view_layout);
--
2.43.0

View File

@ -1,4 +1,4 @@
From 9efcc35102b4c41265e93461b35a1193b3d5822d Mon Sep 17 00:00:00 2001
From b3b5aa01c63aee1df079e0394b0e6372df1838d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 12 May 2017 13:40:31 +0200
Subject: [PATCH] window-actor: Special-case shaped Java windows
@ -9,13 +9,15 @@ but now their compliance tests are broken. Make them happy again
by special-casing shaped Java windows.
---
src/compositor/meta-window-actor-x11.c | 8 ++++++++
1 file changed, 8 insertions(+)
src/x11/window-x11-private.h | 2 ++
src/x11/window-x11.c | 9 +++++++++
3 files changed, 19 insertions(+)
diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c
index b7032e0ba..b05d5e158 100644
index 19827af331..7d5e46ac75 100644
--- a/src/compositor/meta-window-actor-x11.c
+++ b/src/compositor/meta-window-actor-x11.c
@@ -528,6 +528,14 @@ has_shadow (MetaWindowActorX11 *actor_x11)
@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x11)
*/
if (window->has_custom_frame_extents)
return FALSE;
@ -25,11 +27,44 @@ index b7032e0ba..b05d5e158 100644
+ * shadows; make its compliance tests happy to give it what it wants ...
+ */
+ if (g_strcmp0 (window->res_name, "sun-awt-X11-XWindowPeer") == 0 &&
+ window->shape_region != NULL)
+ meta_window_x11_is_shaped (window))
+ return FALSE;
/*
* Generate shadows for all other windows.
diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h
index c947744ee5..cb862f0d72 100644
--- a/src/x11/window-x11-private.h
+++ b/src/x11/window-x11-private.h
@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (MetaWindow *window);
gboolean meta_window_x11_same_application (MetaWindow *window,
MetaWindow *other_window);
+gboolean meta_window_x11_is_shaped (MetaWindow *window);
+
void meta_window_x11_shutdown_group (MetaWindow *window);
META_EXPORT
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 745c45db18..83cdd2e420 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2585,6 +2585,15 @@ meta_window_x11_update_shape_region (MetaWindow *window)
meta_window_set_shape_region (window, region);
}
+gboolean
+meta_window_x11_is_shaped (MetaWindow *window)
+{
+ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
+ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
+
+ return priv->shape_region != NULL;
+}
+
/* Generally meta_window_x11_same_application() is a better idea
* of "sameness", since it handles the case where multiple apps
* want to look like the same app or the same app wants to look
--
2.23.0
2.43.2

View File

@ -1,90 +0,0 @@
From cf685defcd0c0026fce7ef1fc3fb79a1f1a1edaa Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 8 Jan 2024 15:52:09 +0100
Subject: [PATCH 1/2] cogl/half-float: Include SSE intrinsics
The intel intrinsics (including SSE) are only included in the header if
the arch is x86_64 which made the i686 build fail.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3234
Fixes: 568506ecb ("cogl: Add half float implementation")
---
cogl/cogl/cogl-half-float.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/cogl/cogl/cogl-half-float.c b/cogl/cogl/cogl-half-float.c
index be2c48b815..ae0af0a6a2 100644
--- a/cogl/cogl/cogl-half-float.c
+++ b/cogl/cogl/cogl-half-float.c
@@ -31,6 +31,13 @@
#include <math.h>
+#if defined(__SSE__) || \
+ (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || \
+ (defined(_M_X64) && !defined(_M_ARM64EC))
+#include <xmmintrin.h>
+#include <emmintrin.h>
+#endif
+
#include "cogl/cogl-half-float.h"
#include "cogl/cogl-soft-float.h"
@@ -262,3 +269,4 @@ uint16_t cogl_uint16_div_64k_to_half (uint16_t v)
return (e << 10) | m;
}
+
--
2.43.0
From 0096860d715e1842d755b1229b43e848c26fb0cb Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 8 Jan 2024 16:08:37 +0100
Subject: [PATCH 2/2] cogl/bitmap-conversion: Don't break strict-aliasing for
flt_pack/unpack
Simply reinterpreting the bytes differently is a strict-aliasing
violation if the type of the object isn't char or the target type of the
reinterpretation. None of that is the case here, so we have to resort to
a memcpy.
Fixes: 60c082caa ("cogl/bitmap-conversion: Support packing fp16 formats")
---
cogl/cogl/cogl-bitmap-conversion.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/cogl/cogl/cogl-bitmap-conversion.c b/cogl/cogl/cogl-bitmap-conversion.c
index 76efbb9bb9..08ecce6a4d 100644
--- a/cogl/cogl/cogl-bitmap-conversion.c
+++ b/cogl/cogl/cogl-bitmap-conversion.c
@@ -45,16 +45,23 @@ typedef enum
MEDIUM_TYPE_FLOAT,
} MediumType;
+_Static_assert (sizeof (uint32_t) == sizeof (GLfloat),
+ "GLfloat doesn't have a size of 4 bytes");
+
inline static uint32_t
pack_flt (GLfloat b)
{
- return *(uint32_t *) &b;
+ uint32_t ret;
+ memcpy (&ret, &b, sizeof (uint32_t));
+ return ret;
}
inline static GLfloat
unpack_flt (uint32_t b)
{
- return *(GLfloat *) &b;
+ GLfloat ret;
+ memcpy (&ret, &b, sizeof (GLfloat));
+ return ret;
}
#define CLAMP_NORM(b) (MAX (MIN ((b), 1.0), 0.0))
--
2.43.0

View File

@ -1,25 +1,25 @@
From 2184adca1e510361fd1c425d88ac9a3d458eb76a Mon Sep 17 00:00:00 2001
From: David King <amigadave@amigadave.com>
Date: Fri, 14 Jan 2022 18:18:03 +0000
Subject: [PATCH] Disable KMS on tegra
From a5c67e0debaa89f7a73452560664cdc5c581ab95 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Tue, 9 Mar 2021 17:21:59 -0800
Subject: [PATCH] Test: deny atomic KMS for "tegra" (RHBZ #1936991)
Based on commit 77a40614f08ef10044409f689b9efc3d5f65ff0c.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
src/backends/native/meta-kms-impl-device-atomic.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/backends/native/meta-kms-impl-device-atomic.c b/src/backends/native/meta-kms-impl-device-atomic.c
index bcb41e8ad..bafbc7b8f 100644
index 35837f7429..ffff7b8e23 100644
--- a/src/backends/native/meta-kms-impl-device-atomic.c
+++ b/src/backends/native/meta-kms-impl-device-atomic.c
@@ -1216,6 +1216,7 @@ is_atomic_allowed (const char *driver_name)
"vboxvideo",
"virtio_gpu",
@@ -1352,6 +1352,7 @@ is_atomic_allowed (const char *driver_name)
{
const char *atomic_driver_deny_list[] = {
"xlnx",
+ "tegra",
NULL,
};
--
2.34.1
2.43.0

View File

@ -13,7 +13,7 @@
%global tarball_version %%(echo %{version} | tr '~' '.')
Name: mutter
Version: 46~alpha
Version: 46.0
Release: %autorelease
Summary: Window and compositing manager based on Clutter
@ -30,8 +30,6 @@ Patch: mutter-42.alpha-disable-tegra.patch
# https://pagure.io/fedora-workstation/issue/79
Patch: 0001-place-Always-center-initial-setup-fedora-welcome.patch
Patch: 0001-gschema-Enable-scale-monitor-framebuffer-experimenta.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2239128
# https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
# not upstreamed because for upstream we'd really want to find a way
@ -44,13 +42,6 @@ Patch: 0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch
# which solves the problems reported with #3329 alone
Patch: 0001-modified-3329.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2261842
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3539
# fixes failure to show anything on virtio-vga without 3D acceleration
Patch: 0001-kms-cursor-manager-Create-CrtcStateImpls-for-all-act.patch
Patch: fix-i686-build.patch
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(libwacom)
@ -106,6 +97,8 @@ BuildRequires: pkgconfig(json-glib-1.0) >= %{json_glib_version}
BuildRequires: pkgconfig(libinput) >= %{libinput_version}
BuildRequires: pkgconfig(xwayland)
BuildRequires: python3-dbusmock
Requires: control-center-filesystem
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
Requires: gnome-settings-daemon
@ -178,7 +171,7 @@ the functionality of the installed %{name} package.
%autosetup -S git -n %{name}-%{tarball_version}
%build
%meson -Degl_device=true -Dwayland_eglstream=true
%meson -Degl_device=true -Dwayland_eglstream=true -Dlibdisplay_info=disabled
%meson_build
%install

View File

@ -1 +1 @@
SHA512 (mutter-46.alpha.tar.xz) = 69e48eda7e93dfbd6ea96271eeeadc9c702b8db2b450aa5b5adcfed8321b36650c27b7f1e72ad74967c33f1c7236749c3f63c441d8e3053c8ac46437753445a2
SHA512 (mutter-46.0.tar.xz) = 0314183f763b609105f42233f19507eed14f9a8fab4b0985e966ab208d03a22b600e7a4ab3f6a190a5704abcea663ae1a0cf2394eb42a6c076b7a558ef51eacc