1
0
Fork 0

1:46.1-3: Update mr1441

Signed-off-by: Mingi Sung <sungmg@saltyming.net>
This commit is contained in:
Mingi Sung 2024-04-29 20:38:12 +09:00
parent f412c9961f
commit 80a5c0e03d
Signed by: sungmg
GPG key ID: 41BAFD6FFD8036C5
3 changed files with 59 additions and 36 deletions

View file

@ -1,7 +1,7 @@
pkgbase = mutter-performance
pkgdesc = A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync
pkgver = 46.1
pkgrel = 2
pkgrel = 3
epoch = 1
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
@ -78,11 +78,11 @@ pkgbase = mutter-performance
source = mr3373.patch
source = fix-sigsegv-in-meta_window_foreach_transient.patch
sha256sums = 56dc25f7743ca3d72e5471ceadeb774e19e34feeb7ba106a6a78c8bb2cc20b56
sha256sums = 1a0e4ca2ebf32c9b75085114cb1c6856e6f35ea3a157a7e2c5be765466716a34
sha256sums = 24385020adda767feb95c7dd25427dce229c3d9e47cb7d87760eeb0b1f4183c2
sha256sums = 3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f
sha256sums = 488326a7b1eca1e3a91cbfcec0101b217b66b440c3b14e4333406373a84b3682
b2sums = 4acd4a192455890b12b2fc9b6553ed65bd2176307cd6c6683fc2ab476b7fa88f4b5e507a1209b3e900c68d94768f3cf749b4f5d87d25300b33a112182c8a62a7
b2sums = a40fdd0d5c01c0bd5cea98e8aeae6d313834a863b2c4789aea107c8318ab63783a5e4cb92759f3c2b74e8fcac5775b7fa14bf7d11692524f8d0a46f67ac532d6
b2sums = 6d3f086ea407fe68b9eaa0a1d19fc3d28e75374a65ba023385b8314ec2f6f7110ac89d422f1c1db063d65b163235a66569cb073d8941499903beba7f8f531846
b2sums = 71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c
b2sums = 03c9531036437dcb145f5676055bc29a2f855d2c53513be3063b87797a994fcaa86f59fc6d22cd490f2dec92bd1afc6e8556a881045a89ab69127be43f32ba27

View file

@ -33,7 +33,7 @@ else
fi
epoch=1
pkgver=46.1
pkgrel=2
pkgrel=3
pkgdesc="A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64 aarch64)
@ -118,11 +118,11 @@ source=("git+$url.git#commit=$_commit"
'mr3373.patch'
'fix-sigsegv-in-meta_window_foreach_transient.patch')
sha256sums=('56dc25f7743ca3d72e5471ceadeb774e19e34feeb7ba106a6a78c8bb2cc20b56'
'1a0e4ca2ebf32c9b75085114cb1c6856e6f35ea3a157a7e2c5be765466716a34'
'24385020adda767feb95c7dd25427dce229c3d9e47cb7d87760eeb0b1f4183c2'
'3e1f07b696ad37b1c639a524c092cd9259444bc6156542901ccaec936bea240f'
'488326a7b1eca1e3a91cbfcec0101b217b66b440c3b14e4333406373a84b3682')
b2sums=('4acd4a192455890b12b2fc9b6553ed65bd2176307cd6c6683fc2ab476b7fa88f4b5e507a1209b3e900c68d94768f3cf749b4f5d87d25300b33a112182c8a62a7'
'a40fdd0d5c01c0bd5cea98e8aeae6d313834a863b2c4789aea107c8318ab63783a5e4cb92759f3c2b74e8fcac5775b7fa14bf7d11692524f8d0a46f67ac532d6'
'6d3f086ea407fe68b9eaa0a1d19fc3d28e75374a65ba023385b8314ec2f6f7110ac89d422f1c1db063d65b163235a66569cb073d8941499903beba7f8f531846'
'71f10db4ebe04a787940c7048131eac67cffd3ec8e415cfc961b8041b881f272650581e9df273e2a8da23a50ec9151c790dc2d5ecc0309ab2847a22f8c922c9c'
'03c9531036437dcb145f5676055bc29a2f855d2c53513be3063b87797a994fcaa86f59fc6d22cd490f2dec92bd1afc6e8556a881045a89ab69127be43f32ba27')

View file

@ -1,7 +1,7 @@
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
Commit: 745d25c4fc20e8bf474e00756fa93a0c63d3b816
Last Updated: 04/17/24 (Mutter 46.0+r49)
Commit: abe84f8ef3e075f7caae6ced8dfb6d536948d2d8
Last Updated: 04/29/24 (Mutter 46.1)
---
Use triple buffering if and when the previous frame is running late.
@ -16,7 +16,7 @@ there's no latency penalty when the system is able to maintain full frame rate.
---
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51253e9586 100644
index 93e4c9329020286d3c1202ef4f6420b2deb74942..b637fac637f956b2ae5eb71b755f4f00bf689062 100644
--- a/clutter/clutter/clutter-frame-clock.c
+++ b/clutter/clutter/clutter-frame-clock.c
@@ -42,6 +42,15 @@ enum
@ -391,7 +391,33 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
break;
}
@@ -770,11 +892,18 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
@@ -753,6 +875,25 @@ clutter_frame_clock_uninhibit (ClutterFrameClock *frame_clock)
maybe_reschedule_update (frame_clock);
}
+static gboolean
+want_triple_buffering (ClutterFrameClock *frame_clock)
+{
+ switch (triple_buffering_mode)
+ {
+ case TRIPLE_BUFFERING_MODE_NEVER:
+ return FALSE;
+ case TRIPLE_BUFFERING_MODE_AUTO:
+ return frame_clock->mode == CLUTTER_FRAME_CLOCK_MODE_FIXED &&
+ !(frame_clock->last_flip_hints &
+ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED);
+ case TRIPLE_BUFFERING_MODE_ALWAYS:
+ return TRUE;
+ }
+
+ g_assert_not_reached ();
+ return FALSE;
+}
+
void
clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
{
@@ -770,11 +911,24 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
case CLUTTER_FRAME_CLOCK_STATE_INIT:
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
@ -402,17 +428,23 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
return;
- case CLUTTER_FRAME_CLOCK_STATE_DISPATCHING:
- case CLUTTER_FRAME_CLOCK_STATE_PENDING_PRESENTED:
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE:
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED:
+ next_update_time_us = g_get_monotonic_time ();
+ frame_clock->state =
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW;
+ break;
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE:
+ if (want_triple_buffering (frame_clock))
+ {
+ frame_clock->state =
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED_NOW;
+ break;
+ }
+ G_GNUC_FALLTHROUGH;
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
frame_clock->pending_reschedule = TRUE;
frame_clock->pending_reschedule_now = TRUE;
return;
@@ -803,13 +932,18 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
@@ -803,13 +957,17 @@ clutter_frame_clock_schedule_update_now (ClutterFrameClock *frame_clock)
frame_clock->next_update_time_us = next_update_time_us;
g_source_set_ready_time (frame_clock->source, next_update_time_us);
@ -426,13 +458,12 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
+ TripleBufferingMode current_mode = triple_buffering_mode;
+
+ if (current_mode == TRIPLE_BUFFERING_MODE_AUTO &&
+ (frame_clock->last_flip_hints &
+ CLUTTER_FRAME_HINT_DIRECT_SCANOUT_ATTEMPTED))
+ !want_triple_buffering (frame_clock))
+ current_mode = TRIPLE_BUFFERING_MODE_NEVER;
if (frame_clock->inhibit_count > 0)
{
@@ -825,12 +959,41 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
@@ -825,12 +983,33 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_SCHEDULED;
return;
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
@ -452,14 +483,6 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
+ frame_clock->pending_reschedule = TRUE;
+ return;
+ case TRIPLE_BUFFERING_MODE_AUTO:
+ calculate_next_update_time_us (frame_clock,
+ &next_update_time_us,
+ &frame_clock->next_presentation_time_us,
+ &frame_clock->next_frame_deadline_us);
+ frame_clock->is_next_presentation_time_valid =
+ (frame_clock->next_presentation_time_us != 0);
+ frame_clock->has_next_frame_deadline =
+ (frame_clock->next_frame_deadline_us != 0);
+ frame_clock->state =
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED;
+ break;
@ -469,14 +492,14 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
+ frame_clock->is_next_presentation_time_valid = FALSE;
+ frame_clock->state =
+ CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_ONE_AND_SCHEDULED;
+ break;
+ return;
+ }
+ break;
+ case CLUTTER_FRAME_CLOCK_STATE_DISPATCHED_TWO:
frame_clock->pending_reschedule = TRUE;
return;
}
@@ -859,7 +1022,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
@@ -859,7 +1038,6 @@ clutter_frame_clock_schedule_update (ClutterFrameClock *frame_clock)
frame_clock->next_update_time_us = next_update_time_us;
g_source_set_ready_time (frame_clock->source, next_update_time_us);
@ -484,7 +507,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
}
void
@@ -875,6 +1037,8 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
@@ -875,6 +1053,8 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
{
case CLUTTER_FRAME_CLOCK_STATE_INIT:
case CLUTTER_FRAME_CLOCK_STATE_IDLE:
@ -493,7 +516,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
break;
case CLUTTER_FRAME_CLOCK_STATE_SCHEDULED:
frame_clock->pending_reschedule = TRUE;
@@ -885,8 +1049,14 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
@@ -885,8 +1065,14 @@ clutter_frame_clock_set_mode (ClutterFrameClock *frame_clock,
frame_clock->pending_reschedule_now = TRUE;
frame_clock->state = CLUTTER_FRAME_CLOCK_STATE_IDLE;
break;
@ -510,7 +533,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
break;
}
@@ -922,7 +1092,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
@@ -922,7 +1108,7 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
frame_clock->refresh_interval_us;
lateness_us = time_us - ideal_dispatch_time_us;
@ -519,7 +542,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
frame_clock->last_dispatch_lateness_us = 0;
else
frame_clock->last_dispatch_lateness_us = lateness_us;
@@ -943,10 +1113,27 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
@@ -943,10 +1129,27 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
}
#endif
@ -548,7 +571,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
frame_count = frame_clock->frame_count++;
@@ -977,26 +1164,36 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
@@ -977,26 +1180,36 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
result = iface->frame (frame_clock, frame, frame_clock->listener.user_data);
COGL_TRACE_END (ClutterFrameClockFrame);
@ -598,7 +621,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
}
break;
}
@@ -1029,21 +1226,31 @@ frame_clock_source_dispatch (GSource *source,
@@ -1029,21 +1242,31 @@ frame_clock_source_dispatch (GSource *source,
}
void
@ -635,7 +658,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
if (frame_clock->got_measurements_last_frame)
g_string_append_printf (string, " =");
@@ -1210,8 +1417,6 @@ clutter_frame_clock_dispose (GObject *object)
@@ -1210,8 +1433,6 @@ clutter_frame_clock_dispose (GObject *object)
{
ClutterFrameClock *frame_clock = CLUTTER_FRAME_CLOCK (object);
@ -644,7 +667,7 @@ index 93e4c9329020286d3c1202ef4f6420b2deb74942..a6c7ecea21fa0bf40baf992c4b800f51
if (frame_clock->source)
{
g_signal_emit (frame_clock, signals[DESTROY], 0);
@@ -1235,6 +1440,15 @@ static void
@@ -1235,6 +1456,15 @@ static void
clutter_frame_clock_class_init (ClutterFrameClockClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@ -738,10 +761,10 @@ index 34f0770bd7dd630a3d9da5728254b0b5fbcc9e99..c7b3d02acb940bf5712179b576fb5eb7
+
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterFrame, clutter_frame_unref)
diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c
index b503ef839a059c83d90b221cafd7b8c6f7d55b34..1fbe3ae7a3372cffe14b3250ae7dbae2f5b4b5f0 100644
index f5188e2acf36125c8c6c58f917a6167423d3c2eb..d53e37785101dda48e673a181a4ffc8802e09784 100644
--- a/clutter/clutter/clutter-stage-view.c
+++ b/clutter/clutter/clutter-stage-view.c
@@ -902,14 +902,21 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock,
@@ -898,14 +898,21 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock,
_clutter_stage_window_redraw_view (stage_window, view, frame);