summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCoprDistGit <copr-devel@lists.fedorahosted.org>2020-10-28 08:24:21 +0000
committerCoprDistGit <copr-devel@lists.fedorahosted.org>2020-10-28 08:24:21 +0000
commit6f61919e9df7f6ffd2753acad81f1bc67277bb33 (patch)
treea93f3855f25015e15add576856073d856a5f6374
parent0c9cc37e384796597d167df5366acf7dbad1eb73 (diff)
automatic import of mutter
-rw-r--r--.gitignore1
-rw-r--r--1441.patch95
-rw-r--r--mutter-backends-force-enable-modifers-on-tagged-devices.patch228
-rw-r--r--mutter.spec11
-rw-r--r--sources2
5 files changed, 68 insertions, 269 deletions
diff --git a/.gitignore b/.gitignore
index 785c0ab..24a881c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/mutter-3.38.0.tar.xz
+/mutter-3.38.1.tar.xz
diff --git a/1441.patch b/1441.patch
index f83febe..cd53728 100644
--- a/1441.patch
+++ b/1441.patch
@@ -1,4 +1,4 @@
-From e1a2d13bb5ecceaff5e4f5636ba3dbb37d164fdb Mon Sep 17 00:00:00 2001
+From 27cb7ee158ad4f6d583a26851ff09cf6f7dfe638 Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Wed, 15 Jul 2020 17:03:27 +0800
Subject: [PATCH 1/4] clutter-frame-clock: Remember the refresh interval
@@ -7,13 +7,13 @@ Instead of recalculating it every time we need it. The performance
gain is not important; this is more because it will be needed in
multiple functions soon.
-https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1381
+https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
---
- clutter/clutter/clutter-frame-clock.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+ clutter/clutter/clutter-frame-clock.c | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
-index 1fea057bd2..6f7b822c58 100644
+index 3f3b9d9d83..42c1e66d03 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -63,6 +63,7 @@ struct _ClutterFrameClock
@@ -24,7 +24,32 @@ index 1fea057bd2..6f7b822c58 100644
ClutterFrameListener listener;
GSource *source;
-@@ -219,7 +220,6 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+@@ -92,6 +93,15 @@ clutter_frame_clock_get_refresh_rate (ClutterFrameClock *frame_clock)
+ return frame_clock->refresh_rate;
+ }
+
++static void
++clutter_frame_clock_set_refresh_rate (ClutterFrameClock *frame_clock,
++ float refresh_rate)
++{
++ frame_clock->refresh_rate = refresh_rate;
++ frame_clock->refresh_interval_us =
++ (int64_t) (0.5 + G_USEC_PER_SEC / refresh_rate);
++}
++
+ void
+ clutter_frame_clock_add_timeline (ClutterFrameClock *frame_clock,
+ ClutterTimeline *timeline)
+@@ -197,7 +207,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
+ frame_clock->last_presentation_time_us = g_get_monotonic_time ();
+ }
+
+- frame_clock->refresh_rate = frame_info->refresh_rate;
++ clutter_frame_clock_set_refresh_rate (frame_clock, frame_info->refresh_rate);
+
+ switch (frame_clock->state)
+ {
+@@ -221,7 +231,6 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
{
int64_t last_presentation_time_us;
int64_t now_us;
@@ -32,7 +57,7 @@ index 1fea057bd2..6f7b822c58 100644
int64_t refresh_interval_us;
int64_t min_render_time_allowed_us;
int64_t max_render_time_allowed_us;
-@@ -230,8 +230,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
+@@ -232,8 +241,7 @@ calculate_next_update_time_us (ClutterFrameClock *frame_clock,
now_us = g_get_monotonic_time ();
@@ -42,12 +67,12 @@ index 1fea057bd2..6f7b822c58 100644
min_render_time_allowed_us = refresh_interval_us / 2;
max_render_time_allowed_us = refresh_interval_us - SYNC_DELAY_US;
-@@ -500,6 +499,8 @@ clutter_frame_clock_new (float refresh_rate,
+@@ -501,7 +509,7 @@ clutter_frame_clock_new (float refresh_rate,
+
init_frame_clock_source (frame_clock);
- frame_clock->refresh_rate = refresh_rate;
-+ frame_clock->refresh_interval_us =
-+ (int64_t) (0.5 + G_USEC_PER_SEC / refresh_rate);
+- frame_clock->refresh_rate = refresh_rate;
++ clutter_frame_clock_set_refresh_rate (frame_clock, refresh_rate);
return frame_clock;
}
@@ -55,7 +80,7 @@ index 1fea057bd2..6f7b822c58 100644
GitLab
-From e9434313ee262ec9f8e7db86c38ef8e897b8b559 Mon Sep 17 00:00:00 2001
+From 07d84d58bcbe8cea069de94b30a6c3f6a33e0afd Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Fri, 24 Jul 2020 14:13:11 +0800
Subject: [PATCH 2/4] clutter-frame-clock: Merge states DISPATCHING and
@@ -75,7 +100,7 @@ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
-index 6f7b822c58..b9ccf33769 100644
+index 42c1e66d03..875db6a21c 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -54,8 +54,7 @@ typedef enum _ClutterFrameClockState
@@ -88,7 +113,7 @@ index 6f7b822c58..b9ccf33769 100644
} ClutterFrameClockState;
struct _ClutterFrameClock
-@@ -205,8 +204,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
+@@ -216,8 +215,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
g_warn_if_reached ();
break;
@@ -98,7 +123,7 @@ index 6f7b822c58..b9ccf33769 100644
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
maybe_reschedule_update (frame_clock);
break;
-@@ -291,8 +289,7 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
+@@ -302,8 +300,7 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
frame_clock->pending_reschedule = TRUE;
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
break;
@@ -108,7 +133,7 @@ index 6f7b822c58..b9ccf33769 100644
break;
}
-@@ -331,8 +328,7 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -342,8 +339,7 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
break;
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
return;
@@ -118,7 +143,7 @@ index 6f7b822c58..b9ccf33769 100644
frame_clock->pending_reschedule = TRUE;
frame_clock->pending_reschedule_now = TRUE;
return;
-@@ -369,8 +365,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -380,8 +376,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
break;
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
return;
@@ -128,7 +153,7 @@ index 6f7b822c58..b9ccf33769 100644
frame_clock->pending_reschedule = TRUE;
return;
}
-@@ -392,7 +387,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -403,7 +398,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
g_source_set_ready_time (frame_clock->source, -1);
@@ -137,7 +162,7 @@ index 6f7b822c58..b9ccf33769 100644
frame_count = frame_clock->frame_count++;
-@@ -419,19 +414,19 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -430,19 +425,19 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
switch (frame_clock->state)
{
case CLUTTER_FRAME_CLOCK_STATE_INIT:
@@ -164,7 +189,7 @@ index 6f7b822c58..b9ccf33769 100644
GitLab
-From 813d09f91083f6e8d87e71834ad96c9beb46e5b8 Mon Sep 17 00:00:00 2001
+From f7fe3e755f234e3638f5411da1dfb6d628791d5e Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu, 10 Sep 2020 16:34:53 +0800
Subject: [PATCH 3/4] clutter-frame-clock: Add triple buffering support
@@ -178,7 +203,7 @@ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
1 file changed, 70 insertions(+), 20 deletions(-)
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
-index b9ccf33769..c3c307a7cb 100644
+index 875db6a21c..a1daf566bb 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -54,7 +54,9 @@ typedef enum _ClutterFrameClockState
@@ -192,7 +217,7 @@ index b9ccf33769..c3c307a7cb 100644
} ClutterFrameClockState;
struct _ClutterFrameClock
-@@ -204,10 +206,18 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
+@@ -215,10 +217,18 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
g_warn_if_reached ();
break;
@@ -212,7 +237,7 @@ index b9ccf33769..c3c307a7cb 100644
}
}
-@@ -289,7 +299,12 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
+@@ -300,7 +310,12 @@ clutter_frame_clock_inhibit (ClutterFrameClock *frame_clock)
frame_clock->pending_reschedule = TRUE;
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
break;
@@ -226,7 +251,7 @@ index b9ccf33769..c3c307a7cb 100644
break;
}
-@@ -325,10 +340,17 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -336,10 +351,17 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
case CLUTTER_FRAME_CLOCK_STATE_INIT:
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
next_update_time_us = g_get_monotonic_time ();
@@ -245,7 +270,7 @@ index b9ccf33769..c3c307a7cb 100644
frame_clock->pending_reschedule = TRUE;
frame_clock->pending_reschedule_now = TRUE;
return;
-@@ -337,7 +359,6 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -348,7 +370,6 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
g_warn_if_fail (next_update_time_us != -1);
g_source_set_ready_time (frame_clock->source, next_update_time_us);
@@ -253,7 +278,7 @@ index b9ccf33769..c3c307a7cb 100644
frame_clock->is_next_presentation_time_valid = FALSE;
}
-@@ -356,16 +377,26 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -367,16 +388,26 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
{
case CLUTTER_FRAME_CLOCK_STATE_INIT:
next_update_time_us = g_get_monotonic_time ();
@@ -281,7 +306,7 @@ index b9ccf33769..c3c307a7cb 100644
frame_clock->pending_reschedule = TRUE;
return;
}
-@@ -373,7 +404,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -384,7 +415,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
g_warn_if_fail (next_update_time_us != -1);
g_source_set_ready_time (frame_clock->source, next_update_time_us);
@@ -289,7 +314,7 @@ index b9ccf33769..c3c307a7cb 100644
}
static void
-@@ -387,7 +417,21 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -398,7 +428,21 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
g_source_set_ready_time (frame_clock->source, -1);
@@ -312,7 +337,7 @@ index b9ccf33769..c3c307a7cb 100644
frame_count = frame_clock->frame_count++;
-@@ -411,25 +455,31 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
+@@ -422,25 +466,31 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
frame_clock->listener.user_data);
COGL_TRACE_END (ClutterFrameClockFrame);
@@ -360,7 +385,7 @@ index b9ccf33769..c3c307a7cb 100644
GitLab
-From ec05f5a543efc89cb22de71941dfceb0edd90fa2 Mon Sep 17 00:00:00 2001
+From c583ee53b10fbb33e5c0725b02291e49a7fee93a Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Fri, 11 Sep 2020 18:15:55 +0800
Subject: [PATCH 4/4] clutter-frame-clock: Schedule triple-buffering without
@@ -384,7 +409,7 @@ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
-index c3c307a7cb..08ebc0b042 100644
+index a1daf566bb..5169ff3bba 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -72,6 +72,7 @@ struct _ClutterFrameClock
@@ -395,7 +420,7 @@ index c3c307a7cb..08ebc0b042 100644
int64_t last_presentation_time_us;
gboolean is_next_presentation_time_valid;
-@@ -211,8 +212,13 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
+@@ -222,8 +223,13 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
maybe_reschedule_update (frame_clock);
break;
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED:
@@ -411,7 +436,7 @@ index c3c307a7cb..08ebc0b042 100644
break;
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE;
-@@ -359,6 +365,7 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
+@@ -370,6 +376,7 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
g_warn_if_fail (next_update_time_us != -1);
g_source_set_ready_time (frame_clock->source, next_update_time_us);
@@ -419,7 +444,7 @@ index c3c307a7cb..08ebc0b042 100644
frame_clock->is_next_presentation_time_valid = FALSE;
}
-@@ -390,10 +397,10 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -401,10 +408,10 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED:
return;
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE:
@@ -434,7 +459,7 @@ index c3c307a7cb..08ebc0b042 100644
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED;
break;
case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
-@@ -404,6 +411,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
+@@ -415,6 +422,7 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
g_warn_if_fail (next_update_time_us != -1);
g_source_set_ready_time (frame_clock->source, next_update_time_us);
diff --git a/mutter-backends-force-enable-modifers-on-tagged-devices.patch b/mutter-backends-force-enable-modifers-on-tagged-devices.patch
deleted file mode 100644
index 4dd295e..0000000
--- a/mutter-backends-force-enable-modifers-on-tagged-devices.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 9b9b912765f49553849e8c8aca7d2a75692ca9cc Mon Sep 17 00:00:00 2001
-From: Karol Herbst <kherbst@redhat.com>
-Date: Mon, 14 Sep 2020 20:36:17 +0200
-Subject: [PATCH] backends: force enable modifiers on tagged devices
-
-Some devices can't scanout to linear buffers directly as the hw is not
-capable of eg rendering into a linear depth buffer.
-
-Add code to force kms-modifiers on udev taged devices.
-
-Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1408
-
-https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443
----
- data/61-mutter.rules | 1 +
- data/meson.build | 6 ++++++
- meson.build | 2 ++
- src/backends/native/meta-backend-native.c | 3 +++
- src/backends/native/meta-gpu-kms.c | 9 +++++++++
- src/backends/native/meta-gpu-kms.h | 1 +
- src/backends/native/meta-kms-types.h | 1 +
- src/backends/native/meta-renderer-native.c | 9 +++++++++
- src/backends/native/meta-renderer-native.h | 2 ++
- src/backends/native/meta-udev.c | 21 +++++++++++++++++++++
- src/backends/native/meta-udev.h | 2 ++
- src/wayland/meta-wayland-dma-buf.c | 9 +++++++++
- 12 files changed, 66 insertions(+)
- create mode 100644 data/61-mutter.rules
-
-diff --git a/data/61-mutter.rules b/data/61-mutter.rules
-new file mode 100644
-index 0000000000..59cc00007c
---- /dev/null
-+++ b/data/61-mutter.rules
-@@ -0,0 +1 @@
-+DRIVER=="tegra-host1x", SUBSYSTEM=="platform", TAG+="mutter-device-requires-kms-modifiers"
-diff --git a/data/meson.build b/data/meson.build
-index 3ac94cff26..bf5c409d70 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -58,3 +58,9 @@ configure_file(
- install_data(['mutter-schemas.convert'],
- install_dir: join_paths(datadir, 'GConf/gsettings'),
- )
-+
-+if have_libgudev
-+ install_data(['61-mutter.rules'],
-+ install_dir: join_paths(udevdir, 'rules.d'),
-+ )
-+endif
-diff --git a/meson.build b/meson.build
-index 85ac8f791a..940bcb9992 100644
---- a/meson.build
-+++ b/meson.build
-@@ -182,6 +182,8 @@ have_libgudev = get_option('udev')
- if have_libgudev
- libudev_dep = dependency('libudev', version: udev_req)
- gudev_dep = dependency('gudev-1.0', version: gudev_req)
-+ udev_dep = dependency('udev')
-+ udevdir = udev_dep.get_pkgconfig_variable('udevdir')
- endif
-
- have_native_backend = get_option('native_backend')
-diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c
-index 73723ace92..38ff601ce6 100644
---- a/src/backends/native/meta-backend-native.c
-+++ b/src/backends/native/meta-backend-native.c
-@@ -571,6 +571,9 @@ create_gpu_from_udev_device (MetaBackendNative *native,
- if (meta_is_udev_device_boot_vga (device))
- flags |= META_KMS_DEVICE_FLAG_BOOT_VGA;
-
-+ if (meta_is_udev_device_requires_modifiers (device))
-+ flags |= META_KMS_DEVICE_FLAG_REQUIRES_MODIFIERS;
-+
- device_path = g_udev_device_get_device_file (device);
-
- kms_device = meta_kms_create_device (native->kms, device_path, flags,
-diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
-index 65eece375a..819bd2c9a3 100644
---- a/src/backends/native/meta-gpu-kms.c
-+++ b/src/backends/native/meta-gpu-kms.c
-@@ -266,6 +266,15 @@ meta_gpu_kms_is_platform_device (MetaGpuKms *gpu_kms)
- return !!(flags & META_KMS_DEVICE_FLAG_PLATFORM_DEVICE);
- }
-
-+gboolean
-+meta_gpu_kms_requires_modifiers (MetaGpuKms *gpu_kms)
-+{
-+ MetaKmsDeviceFlag flags;
-+
-+ flags = meta_kms_device_get_flags (gpu_kms->kms_device);
-+ return !!(flags & META_KMS_DEVICE_FLAG_REQUIRES_MODIFIERS);
-+}
-+
- static int
- compare_outputs (gconstpointer one,
- gconstpointer two)
-diff --git a/src/backends/native/meta-gpu-kms.h b/src/backends/native/meta-gpu-kms.h
-index 5ddf31a7ca..9ca4d254a2 100644
---- a/src/backends/native/meta-gpu-kms.h
-+++ b/src/backends/native/meta-gpu-kms.h
-@@ -47,6 +47,7 @@ gboolean meta_gpu_kms_is_crtc_active (MetaGpuKms *gpu_kms,
-
- gboolean meta_gpu_kms_is_boot_vga (MetaGpuKms *gpu_kms);
- gboolean meta_gpu_kms_is_platform_device (MetaGpuKms *gpu_kms);
-+gboolean meta_gpu_kms_requires_modifiers (MetaGpuKms *gpu_kms);
-
- MetaKmsDevice * meta_gpu_kms_get_kms_device (MetaGpuKms *gpu_kms);
-
-diff --git a/src/backends/native/meta-kms-types.h b/src/backends/native/meta-kms-types.h
-index ec36d226a0..1fed7e332c 100644
---- a/src/backends/native/meta-kms-types.h
-+++ b/src/backends/native/meta-kms-types.h
-@@ -56,6 +56,7 @@ typedef enum _MetaKmsDeviceFlag
- META_KMS_DEVICE_FLAG_NONE = 0,
- META_KMS_DEVICE_FLAG_BOOT_VGA = 1 << 0,
- META_KMS_DEVICE_FLAG_PLATFORM_DEVICE = 1 << 1,
-+ META_KMS_DEVICE_FLAG_REQUIRES_MODIFIERS = 1 << 2,
- } MetaKmsDeviceFlag;
-
- typedef enum _MetaKmsPlaneType MetaKmsPlaneType;
-diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
-index b183cbf0e5..eb11be9a51 100644
---- a/src/backends/native/meta-renderer-native.c
-+++ b/src/backends/native/meta-renderer-native.c
-@@ -320,6 +320,12 @@ meta_renderer_native_get_egl (MetaRendererNative *renderer_native)
- return meta_backend_get_egl (meta_renderer_get_backend (renderer));
- }
-
-+gboolean
-+meta_renderer_native_use_modifiers (MetaRendererNative *renderer_native)
-+{
-+ return renderer_native->use_modifiers;
-+}
-+
- static MetaEgl *
- meta_onscreen_native_get_egl (MetaOnscreenNative *onscreen_native)
- {
-@@ -3804,6 +3810,9 @@ meta_renderer_native_initable_init (GInitable *initable,
- if (!renderer_native->primary_gpu_kms)
- return FALSE;
-
-+ if (meta_gpu_kms_requires_modifiers (renderer_native->primary_gpu_kms))
-+ renderer_native->use_modifiers = TRUE;
-+
- return TRUE;
- }
-
-diff --git a/src/backends/native/meta-renderer-native.h b/src/backends/native/meta-renderer-native.h
-index 91afca766e..c0357a7d86 100644
---- a/src/backends/native/meta-renderer-native.h
-+++ b/src/backends/native/meta-renderer-native.h
-@@ -55,6 +55,8 @@ MetaGpuKms * meta_renderer_native_get_primary_gpu (MetaRendererNative *renderer_
-
- void meta_renderer_native_finish_frame (MetaRendererNative *renderer_native);
-
-+gboolean meta_renderer_native_use_modifiers (MetaRendererNative *renderer_native);
-+
- gboolean meta_onscreen_native_is_buffer_scanout_compatible (CoglOnscreen *onscreen,
- uint32_t drm_format,
- uint64_t drm_modifier,
-diff --git a/src/backends/native/meta-udev.c b/src/backends/native/meta-udev.c
-index 4cf9e379f6..41c686c887 100644
---- a/src/backends/native/meta-udev.c
-+++ b/src/backends/native/meta-udev.c
-@@ -74,6 +74,27 @@ meta_is_udev_device_boot_vga (GUdevDevice *device)
- return g_udev_device_get_sysfs_attr_as_int (pci_device, "boot_vga") == 1;
- }
-
-+gboolean
-+meta_is_udev_device_requires_modifiers (GUdevDevice *device)
-+{
-+ g_autoptr (GUdevDevice) platform_device = NULL;
-+ const char * const * tags;
-+
-+ platform_device = g_udev_device_get_parent_with_subsystem (device,
-+ "platform",
-+ NULL);
-+
-+ if (!platform_device)
-+ return FALSE;
-+
-+ tags = g_udev_device_get_tags (platform_device);
-+
-+ if (!tags)
-+ return FALSE;
-+
-+ return g_strv_contains (tags, "mutter-device-requires-kms-modifiers");
-+}
-+
- gboolean
- meta_udev_is_drm_device (MetaUdev *udev,
- GUdevDevice *device)
-diff --git a/src/backends/native/meta-udev.h b/src/backends/native/meta-udev.h
-index cf72acd1bd..eb90abb093 100644
---- a/src/backends/native/meta-udev.h
-+++ b/src/backends/native/meta-udev.h
-@@ -32,6 +32,8 @@ gboolean meta_is_udev_device_platform_device (GUdevDevice *device);
-
- gboolean meta_is_udev_device_boot_vga (GUdevDevice *device);
-
-+gboolean meta_is_udev_device_requires_modifiers (GUdevDevice *device);
-+
- gboolean meta_udev_is_drm_device (MetaUdev *udev,
- GUdevDevice *device);
-
-diff --git a/src/wayland/meta-wayland-dma-buf.c b/src/wayland/meta-wayland-dma-buf.c
-index 3c0321ce02..2f9794a5d6 100644
---- a/src/wayland/meta-wayland-dma-buf.c
-+++ b/src/wayland/meta-wayland-dma-buf.c
-@@ -594,6 +594,15 @@ should_send_modifiers (MetaBackend *backend)
- {
- MetaSettings *settings = meta_backend_get_settings (backend);
-
-+#ifdef HAVE_NATIVE_BACKEND
-+ if (META_IS_BACKEND_NATIVE (backend))
-+ {
-+ MetaRenderer *renderer = meta_backend_get_renderer (backend);
-+ MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
-+ return meta_renderer_native_use_modifiers (renderer_native);
-+ }
-+#endif
-+
- return meta_settings_is_experimental_feature_enabled (
- settings, META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS);
- }
---
-GitLab
diff --git a/mutter.spec b/mutter.spec
index 686432f..c93db41 100644
--- a/mutter.spec
+++ b/mutter.spec
@@ -7,8 +7,8 @@
%global mutter_api_version 7
Name: mutter
-Version: 3.38.0
-Release: 2.1.performance%{?dist}
+Version: 3.38.1
+Release: 1.1.performance%{?dist}
Summary: Window and compositing manager based on Clutter
License: GPLv2+
@@ -18,11 +18,9 @@ Source0: http://download.gnome.org/sources/%{name}/3.38/%{name}-%{version}
# Work-around for OpenJDK's compliance test
Patch0: 0001-window-actor-Special-case-shaped-Java-windows.patch
-# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443
-Patch1: mutter-backends-force-enable-modifers-on-tagged-devices.patch
# WIP: clutter-frame-clock: Triple buffering support (v4)
-Patch2: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441.patch
+Patch1: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441.patch
BuildRequires: chrpath
BuildRequires: pango-devel
@@ -169,6 +167,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
%{_datadir}/mutter-%{mutter_api_version}/tests
%changelog
+* Mon Oct 05 2020 Florian Müllner <fmuellner@redhat.com> - 3.38.1-1
+- Update to 3.38.1
+
* Mon Sep 28 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 3.38.0-2
- Upstream fix for NVidia Jetson devices
diff --git a/sources b/sources
index 783f990..e166032 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-5279ee0acb488f2be2806f25a2003ef4 mutter-3.38.0.tar.xz
+df053c03ed2264e7b6dfd453ed5103ea mutter-3.38.1.tar.xz