[Merge] ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic
The proposal to merge ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic has been updated. Description changed to: For more details, see: https://code.launchpad.net/~vanvugt/ubuntu/+source/mutter/+git/mutter/+merge/363599 -- Your team Ubuntu Desktop is subscribed to branch ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. -- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop
[Merge] ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic
Daniel van Vugt has proposed merging ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. Commit message: Remove 60 FPS limitation, thus supporting high frame rates For Xorg the only fix required was to remove the spurious patch: clutter-Smooth-out-master-clock-to-smooth-visuals.patch which had the effect of imposing a secondary 60 FPS limitation. That patch never landed upstream. For Wayland you need both the above fix, and the introduction of hardware vsync support which was upstreamed in mutter 3.32 and is backported to 3.30 in the new patch: lp1763892-add-hardware-vsync-support.patch https://bugs.launchpad.net/bugs/1763892 Requested reviews: Ubuntu Server Dev import team (usd-import-team) For more details, see: https://code.launchpad.net/~vanvugt/ubuntu/+source/mutter/+git/mutter/+merge/363599 *** Launchpad is refusing to display a diff right now. But you can still view it by clicking on the last commit ID. -- Your team Ubuntu Desktop is subscribed to branch ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. diff --git a/debian/changelog b/debian/changelog index 564d95f..c3875a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +mutter (3.30.2-1~ubuntu18.10.4) UNRELEASED; urgency=medium + + * Add support for high frame rate displays (LP: #1763892): +- Introduce lp1763892-add-hardware-vsync-support.patch +- Drop erroneous clutter-Smooth-out-master-clock-to-smooth-visuals.patch + + -- Daniel van Vugt Fri, 22 Feb 2019 17:42:49 +0800 + mutter (3.30.2-1~ubuntu18.10.3) cosmic; urgency=medium * d/p/clutter-Avoid-rounding-compensation-when-invalidating-2D-.patch, diff --git a/debian/libmutter-3-0.symbols b/debian/libmutter-3-0.symbols index 81ebd76..eb66e84 100644 --- a/debian/libmutter-3-0.symbols +++ b/debian/libmutter-3-0.symbols @@ -699,6 +699,7 @@ libmutter-3.so.0 libmutter-3-0 #MINVER# (arch=linux-any)meta_gpu_kms_can_have_outputs@Base 3.29.92 (arch=linux-any)meta_gpu_kms_flip_closure_container_free@Base 3.29.4 (arch=linux-any)meta_gpu_kms_flip_crtc@Base 3.28.2 + (arch=linux-any)meta_gpu_kms_get_current_time_ns@Base 3.30.2 (arch=linux-any)meta_gpu_kms_get_fd@Base 3.28.2 (arch=linux-any)meta_gpu_kms_get_file_path@Base 3.28.2 (arch=linux-any)meta_gpu_kms_get_max_buffer_size@Base 3.28.2 diff --git a/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch b/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch deleted file mode 100644 index 2239837..000 --- a/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch +++ /dev/null @@ -1,225 +0,0 @@ -From: Daniel van Vugt -Date: Fri, 16 Feb 2018 02:50:59 -0600 -Subject: clutter: Smooth out master clock to smooth visuals - -Clutter's master clock was jittery because it included errors in cur_tick -such as dispatch delays due to other sources. Dispatch could also occur up -to 1ms early since GSource can only be timed to the millisecond. All of this -could impact the visual smoothness of animations as they are displayed on -the steady interval of the monitor, but spacially moving in less regular -steps derived from the dispatch times. - -The simple fix is to ignore any jitter in dispatch timing. Try a little -bit harder to use a precise interval that will better match the display -hardware, and smoother visuals will follow. - -Bug: https://gitlab.gnome.org/GNOME/mutter/issues/25 -Forwarded: https://gitlab.gnome.org/GNOME/mutter/merge_requests/70 - clutter/clutter/clutter-master-clock-default.c | 134 + - 1 file changed, 93 insertions(+), 41 deletions(-) - -diff --git a/clutter/clutter/clutter-master-clock-default.c b/clutter/clutter/clutter-master-clock-default.c -index 7b2df0d..97b6d13 100644 a/clutter/clutter/clutter-master-clock-default.c -+++ b/clutter/clutter/clutter-master-clock-default.c -@@ -69,8 +69,10 @@ struct _ClutterMasterClockDefault - /* the previous state of the clock, in usecs, used to compute the delta */ - gint64 prev_tick; - -+ /* the ideal frame interval in usecs (inverse of your max refresh rate) */ -+ gint64 frame_interval; -+ - #ifdef CLUTTER_ENABLE_DEBUG -- gint64 frame_budget; - gint64 remaining_budget; - #endif - -@@ -264,6 +266,41 @@ master_clock_reschedule_stage_updates (ClutterMasterClockDefault *master_clock, - } - } - -+static gint64 -+estimate_next_presentation_time (ClutterMasterClockDefault *master_clock) -+{ -+ gint64 frame_phase, now, now_phase, undershoot; -+ -+ /* In future if this was updated from the backend's (maximum) refresh rate -+ * then that would fix: https://bugzilla.gnome.org/show_bug.cgi?id=781296 -+ */ -+ master_clock->frame_interval = G_USEC_PER_SEC / -+ clutter_get_default_frame_rate (); -+ -+ now = g_source_get_time (master_clock->source); -+ now_phase = now % master_clock->frame_interval; -+ -+ /* To be precise we would like to use: -+ * fram
[Merge] ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic
The proposal to merge ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic has been updated. Description changed to: For more details, see: https://code.launchpad.net/~vanvugt/ubuntu/+source/mutter/+git/mutter/+merge/363599 -- Your team Ubuntu Desktop is subscribed to branch ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. -- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop
[Merge] ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic
You have been requested to review the proposed merge of ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. For more details, see: https://code.launchpad.net/~vanvugt/ubuntu/+source/mutter/+git/mutter/+merge/363599 -- Your team Ubuntu Desktop is requested to review the proposed merge of ~vanvugt/ubuntu/+source/mutter:fix-lp1763892-cosmic into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/cosmic. diff --git a/debian/changelog b/debian/changelog index 564d95f..c3875a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +mutter (3.30.2-1~ubuntu18.10.4) UNRELEASED; urgency=medium + + * Add support for high frame rate displays (LP: #1763892): +- Introduce lp1763892-add-hardware-vsync-support.patch +- Drop erroneous clutter-Smooth-out-master-clock-to-smooth-visuals.patch + + -- Daniel van Vugt Fri, 22 Feb 2019 17:42:49 +0800 + mutter (3.30.2-1~ubuntu18.10.3) cosmic; urgency=medium * d/p/clutter-Avoid-rounding-compensation-when-invalidating-2D-.patch, diff --git a/debian/libmutter-3-0.symbols b/debian/libmutter-3-0.symbols index 81ebd76..eb66e84 100644 --- a/debian/libmutter-3-0.symbols +++ b/debian/libmutter-3-0.symbols @@ -699,6 +699,7 @@ libmutter-3.so.0 libmutter-3-0 #MINVER# (arch=linux-any)meta_gpu_kms_can_have_outputs@Base 3.29.92 (arch=linux-any)meta_gpu_kms_flip_closure_container_free@Base 3.29.4 (arch=linux-any)meta_gpu_kms_flip_crtc@Base 3.28.2 + (arch=linux-any)meta_gpu_kms_get_current_time_ns@Base 3.30.2 (arch=linux-any)meta_gpu_kms_get_fd@Base 3.28.2 (arch=linux-any)meta_gpu_kms_get_file_path@Base 3.28.2 (arch=linux-any)meta_gpu_kms_get_max_buffer_size@Base 3.28.2 diff --git a/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch b/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch deleted file mode 100644 index 2239837..000 --- a/debian/patches/clutter-Smooth-out-master-clock-to-smooth-visuals.patch +++ /dev/null @@ -1,225 +0,0 @@ -From: Daniel van Vugt -Date: Fri, 16 Feb 2018 02:50:59 -0600 -Subject: clutter: Smooth out master clock to smooth visuals - -Clutter's master clock was jittery because it included errors in cur_tick -such as dispatch delays due to other sources. Dispatch could also occur up -to 1ms early since GSource can only be timed to the millisecond. All of this -could impact the visual smoothness of animations as they are displayed on -the steady interval of the monitor, but spacially moving in less regular -steps derived from the dispatch times. - -The simple fix is to ignore any jitter in dispatch timing. Try a little -bit harder to use a precise interval that will better match the display -hardware, and smoother visuals will follow. - -Bug: https://gitlab.gnome.org/GNOME/mutter/issues/25 -Forwarded: https://gitlab.gnome.org/GNOME/mutter/merge_requests/70 - clutter/clutter/clutter-master-clock-default.c | 134 + - 1 file changed, 93 insertions(+), 41 deletions(-) - -diff --git a/clutter/clutter/clutter-master-clock-default.c b/clutter/clutter/clutter-master-clock-default.c -index 7b2df0d..97b6d13 100644 a/clutter/clutter/clutter-master-clock-default.c -+++ b/clutter/clutter/clutter-master-clock-default.c -@@ -69,8 +69,10 @@ struct _ClutterMasterClockDefault - /* the previous state of the clock, in usecs, used to compute the delta */ - gint64 prev_tick; - -+ /* the ideal frame interval in usecs (inverse of your max refresh rate) */ -+ gint64 frame_interval; -+ - #ifdef CLUTTER_ENABLE_DEBUG -- gint64 frame_budget; - gint64 remaining_budget; - #endif - -@@ -264,6 +266,41 @@ master_clock_reschedule_stage_updates (ClutterMasterClockDefault *master_clock, - } - } - -+static gint64 -+estimate_next_presentation_time (ClutterMasterClockDefault *master_clock) -+{ -+ gint64 frame_phase, now, now_phase, undershoot; -+ -+ /* In future if this was updated from the backend's (maximum) refresh rate -+ * then that would fix: https://bugzilla.gnome.org/show_bug.cgi?id=781296 -+ */ -+ master_clock->frame_interval = G_USEC_PER_SEC / -+ clutter_get_default_frame_rate (); -+ -+ now = g_source_get_time (master_clock->source); -+ now_phase = now % master_clock->frame_interval; -+ -+ /* To be precise we would like to use: -+ * frame_phase = a_recent_hardware_presentation_time % frame_interval; -+ * where hardware_presentation_time must be using the same clock as -+ * g_source_get_time. Unfortunately they're different clocks right now -+ * so we can't. -+ * Alternatively, we could replace g_source_get_time in future with the -+ * current time in the clutter/cogl presentation clock, but that function -+ * also doesn't exist yet. -+ * Until we can get either of those, zero is fine. It just means latency -+ * will be suboptimal by half a frame on average. We still get maximum -+ * smoothness this way... -+ */ -+ frame_phase = 0; -+ -+ u