diff options
author | CoprDistGit <copr-devel@lists.fedorahosted.org> | 2020-10-28 08:24:21 +0000 |
---|---|---|
committer | CoprDistGit <copr-devel@lists.fedorahosted.org> | 2020-10-28 08:24:21 +0000 |
commit | 6f61919e9df7f6ffd2753acad81f1bc67277bb33 (patch) | |
tree | a93f3855f25015e15add576856073d856a5f6374 | |
parent | 0c9cc37e384796597d167df5366acf7dbad1eb73 (diff) |
automatic import of mutter
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | 1441.patch | 95 | ||||
-rw-r--r-- | mutter-backends-force-enable-modifers-on-tagged-devices.patch | 228 | ||||
-rw-r--r-- | mutter.spec | 11 | ||||
-rw-r--r-- | sources | 2 |
5 files changed, 68 insertions, 269 deletions
@@ -1 +1,2 @@ /mutter-3.38.0.tar.xz +/mutter-3.38.1.tar.xz @@ -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 @@ -1 +1 @@ -5279ee0acb488f2be2806f25a2003ef4 mutter-3.38.0.tar.xz +df053c03ed2264e7b6dfd453ed5103ea mutter-3.38.1.tar.xz |