Signed-off-by: Mingi Sung <sungmg@saltyming.net>
This commit is contained in:
parent
a3543b350d
commit
e28d956baf
6 changed files with 78 additions and 762 deletions
28
.SRCINFO
28
.SRCINFO
|
@ -1,6 +1,6 @@
|
|||
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.4+r4+gc2c694464c
|
||||
pkgver = 46.4+r17+g0d60d07204
|
||||
pkgrel = 1
|
||||
epoch = 1
|
||||
url = https://gitlab.gnome.org/GNOME/mutter
|
||||
|
@ -73,36 +73,24 @@ pkgbase = mutter-performance
|
|||
depends = systemd-libs
|
||||
depends = wayland
|
||||
depends = xorg-xwayland
|
||||
source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=c2c694464c6558bf91a15d6f6807ae5fa6175658
|
||||
source = git+https://gitlab.gnome.org/GNOME/mutter.git#commit=0d60d072048c8ce8ebb527284e5baa10df26bc7c
|
||||
source = mr1441.patch
|
||||
source = mr3373.patch
|
||||
source = mr3567.patch
|
||||
source = mr3751.patch
|
||||
source = mr3912.patch
|
||||
source = mr3934.patch
|
||||
sha256sums = 01e53f26a46819a9b933c20a4f845e9aaa0ffaf2632d29d883111d99903b8269
|
||||
sha256sums = c319d2b1b9060f37ef37ac7112729883192e59bfc42aa13b4c2d73e2e1cccc61
|
||||
sha256sums = 1292f1dcefa0a3cfff753db942e7c974e39b1265d246634f239aad9437d45609
|
||||
sha256sums = f72340218b99f0278ca358cfb94fc213ec3e91b5ff7ecae198b3d220829b7e4e
|
||||
sha256sums = 60638078a3f3c46da61f868c04b2a3424488510702648452c3e8214a3790e37b
|
||||
sha256sums = 2e474a574edad8dc047a53a920fc7cbe005cac0102907eef80a252fc556d0517
|
||||
sha256sums = 4c15b0e6d0001c8c3feedf05a9140f7f17d52eb36ff7b8039e0281c1373ccdfe
|
||||
sha256sums = f02f07abc4072118e175e8028d3ee16ff0aa9b238dd2b10155b3ae2a0534a4a0
|
||||
sha256sums = 45d9c998053c9b8def5a7b122861101137ce6ac4fd6be9d9c475232529ecb98c
|
||||
b2sums = c6cc96e1a4044bc3a54a460a5dc5e85f04bb45d975d07711891cb32f41172446bcc537336e937f7196c4e2a2c2f2e3cd944908edee160b2e76ee2a1c0d561f48
|
||||
b2sums = 9b7a3922c631dfdd7b4466d5aab7309c81527c013fb0c92f520734264b30bfaca0f2b660afbd1e7cf14ce419033ad1ec1d39c00af3ce1576da85c298d1e6b03e
|
||||
b2sums = 38de03d5fbe7c9d1b9c41a4bc6b76b8d3acc270b93f279c5db591d79a689d9ea748f34da08ec584e49bbfc2d35a5bceeaf2f6b3fd91bc620139b4ee8b4ca6a04
|
||||
sha256sums = c0ae2855247cddde806a320d031021fd0f7c867c61ac95af99ea3765f290bbf5
|
||||
b2sums = 86db7a63e6dfd33baf5a6cebc30b96d57de1688de6cbc475a9b46fe21b5e02c50bcb56b4065ab8e2092c4fc7303d2d6d86c75f4d555fcef8a00a9cd243d30e25
|
||||
b2sums = 802cf82c0d4fa4514dc376bac57a65453df0ce789e6efac334d2f76a24349ad0a2b6e9ce02345839e8de719d7696dfcae911b1e66922103b2ec315e9fbaa8f01
|
||||
b2sums = 65302b1fa24a7aba26915269fb694c7a64b134ee2062ec7e649036a3a41efb2f2f4110cff6194808af34985855ade641c5fb01f0b97536cd3c912892ea3a0d4c
|
||||
b2sums = f9f2284d7236d6072a818de3784a339c2d934490da8870876f49d4effd59ce807593ce8b8a3c5e06586fd5fd7e81fb31fedca84115acf1e71cfe23d4a5e727b3
|
||||
b2sums = 14ed5e8fe9844739903150bf69de03b7136e74eb4b080d2e0264ba9bf5f2ba2c826cb45b78f8c38b2e80c223dd7926aa8e756e9bee23b75ced16ba5af45c2d8d
|
||||
b2sums = 1ecb06542e117b980329cdc16b14860f045f83be735247f1433d9d2564bc27befd47b124f4d96f0ebc7cc986224ab66d3f1d30b92a831f0f59a11eb6d8aedb8d
|
||||
b2sums = 18e8d521336422f4c441979fe77ff22c60406e94cd2159c08bbfd127bf6b010dece55c7226b99a953c560b05194fe72e5c2140765577069d970c93479b573bcb
|
||||
|
||||
pkgname = mutter-performance
|
||||
groups = gnome
|
||||
provides = mutter
|
||||
provides = libmutter-14.so
|
||||
conflicts = mutter
|
||||
|
||||
pkgname = mutter-performance-docs
|
||||
pkgdesc = A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync (documentation)
|
||||
depends =
|
||||
provides = mutter-docs
|
||||
conflicts = mutter-docs
|
||||
|
|
116
PKGBUILD
116
PKGBUILD
|
@ -11,28 +11,16 @@
|
|||
|
||||
### PACKAGE OPTIONS
|
||||
## MERGE REQUESTS SELECTION
|
||||
# Merge Requests List: ('579' '1441' '3373' '3567' '3751' '3912' '3934')
|
||||
# Merge Requests List: ('579' '1441' '3567' '3751' '3934')
|
||||
_merge_requests_to_use=('1441' '3751')
|
||||
|
||||
## Disable building the DOCS package (Enabled if not set)
|
||||
# Remember to unset this variable when producing .SRCINFO
|
||||
: "${_disable_docs:=""}"
|
||||
|
||||
## Enable the `check()` operation (Disabled if not set)
|
||||
: "${_enable_check:=""}"
|
||||
|
||||
|
||||
### IMPORTANT: Do no edit below this line unless you know what you're doing!
|
||||
|
||||
_pkgname=mutter
|
||||
pkgbase=mutter-performance
|
||||
if [ -n "$_disable_docs" ]; then
|
||||
pkgname=mutter-performance
|
||||
else
|
||||
pkgname=(mutter-performance mutter-performance-docs)
|
||||
fi
|
||||
pkgname=mutter-performance
|
||||
epoch=1
|
||||
pkgver=46.4+r4+gc2c694464c
|
||||
pkgver=46.4+r17+g0d60d07204
|
||||
pkgrel=1
|
||||
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"
|
||||
|
@ -112,28 +100,22 @@ makedepends=(
|
|||
if [ -n "$_enable_check" ]; then
|
||||
checkdepends=(gnome-session xorg-server-xvfb pipewire-session-manager python-dbusmock zenity)
|
||||
fi
|
||||
_commit=c2c694464c6558bf91a15d6f6807ae5fa6175658 # tags/46.4^4
|
||||
_commit=0d60d072048c8ce8ebb527284e5baa10df26bc7c # tags/46.4^17
|
||||
source=("git+$url.git#commit=$_commit"
|
||||
'mr1441.patch'
|
||||
'mr3373.patch'
|
||||
'mr3567.patch'
|
||||
'mr3751.patch'
|
||||
'mr3912.patch'
|
||||
'mr3934.patch')
|
||||
sha256sums=('01e53f26a46819a9b933c20a4f845e9aaa0ffaf2632d29d883111d99903b8269'
|
||||
'c319d2b1b9060f37ef37ac7112729883192e59bfc42aa13b4c2d73e2e1cccc61'
|
||||
'1292f1dcefa0a3cfff753db942e7c974e39b1265d246634f239aad9437d45609'
|
||||
sha256sums=('f72340218b99f0278ca358cfb94fc213ec3e91b5ff7ecae198b3d220829b7e4e'
|
||||
'60638078a3f3c46da61f868c04b2a3424488510702648452c3e8214a3790e37b'
|
||||
'2e474a574edad8dc047a53a920fc7cbe005cac0102907eef80a252fc556d0517'
|
||||
'4c15b0e6d0001c8c3feedf05a9140f7f17d52eb36ff7b8039e0281c1373ccdfe'
|
||||
'f02f07abc4072118e175e8028d3ee16ff0aa9b238dd2b10155b3ae2a0534a4a0'
|
||||
'45d9c998053c9b8def5a7b122861101137ce6ac4fd6be9d9c475232529ecb98c')
|
||||
b2sums=('c6cc96e1a4044bc3a54a460a5dc5e85f04bb45d975d07711891cb32f41172446bcc537336e937f7196c4e2a2c2f2e3cd944908edee160b2e76ee2a1c0d561f48'
|
||||
'9b7a3922c631dfdd7b4466d5aab7309c81527c013fb0c92f520734264b30bfaca0f2b660afbd1e7cf14ce419033ad1ec1d39c00af3ce1576da85c298d1e6b03e'
|
||||
'38de03d5fbe7c9d1b9c41a4bc6b76b8d3acc270b93f279c5db591d79a689d9ea748f34da08ec584e49bbfc2d35a5bceeaf2f6b3fd91bc620139b4ee8b4ca6a04'
|
||||
'c0ae2855247cddde806a320d031021fd0f7c867c61ac95af99ea3765f290bbf5')
|
||||
b2sums=('86db7a63e6dfd33baf5a6cebc30b96d57de1688de6cbc475a9b46fe21b5e02c50bcb56b4065ab8e2092c4fc7303d2d6d86c75f4d555fcef8a00a9cd243d30e25'
|
||||
'802cf82c0d4fa4514dc376bac57a65453df0ce789e6efac334d2f76a24349ad0a2b6e9ce02345839e8de719d7696dfcae911b1e66922103b2ec315e9fbaa8f01'
|
||||
'65302b1fa24a7aba26915269fb694c7a64b134ee2062ec7e649036a3a41efb2f2f4110cff6194808af34985855ade641c5fb01f0b97536cd3c912892ea3a0d4c'
|
||||
'f9f2284d7236d6072a818de3784a339c2d934490da8870876f49d4effd59ce807593ce8b8a3c5e06586fd5fd7e81fb31fedca84115acf1e71cfe23d4a5e727b3'
|
||||
'14ed5e8fe9844739903150bf69de03b7136e74eb4b080d2e0264ba9bf5f2ba2c826cb45b78f8c38b2e80c223dd7926aa8e756e9bee23b75ced16ba5af45c2d8d'
|
||||
'1ecb06542e117b980329cdc16b14860f045f83be735247f1433d9d2564bc27befd47b124f4d96f0ebc7cc986224ab66d3f1d30b92a831f0f59a11eb6d8aedb8d')
|
||||
'18e8d521336422f4c441979fe77ff22c60406e94cd2159c08bbfd127bf6b010dece55c7226b99a953c560b05194fe72e5c2140765577069d970c93479b573bcb')
|
||||
|
||||
for mr in "${_merge_requests_to_use[@]}"; do
|
||||
if [ '3567' = "$mr" ]; then
|
||||
|
@ -142,7 +124,7 @@ for mr in "${_merge_requests_to_use[@]}"; do
|
|||
done
|
||||
|
||||
pkgver() {
|
||||
cd mutter
|
||||
cd $_pkgname
|
||||
git describe --tags | sed -r 's/\.([a-z])/\1/;s/([a-z])\./\1/;s/[^-]*-g/r&/;s/-/+/g'
|
||||
}
|
||||
|
||||
|
@ -222,14 +204,6 @@ prepare() {
|
|||
# If you use stenography software or play hardcore rhythm games like Lunatic Rave 2/osumania, use it.
|
||||
pick_mr '579' ce86f90efbaa51522ba14c5b4cad933c2106de42 'revert'
|
||||
|
||||
# Title: kms/crtc: Increase default deadline evasion to 1000 microseconds
|
||||
# Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3373
|
||||
# Type: 3
|
||||
# Status: 2
|
||||
# Comment: This fix cursor stutter.
|
||||
pick_mr '3373' 'mr3373.patch' 'patch'
|
||||
|
||||
# Title: Let scaling-aware Xwayland clients scale themselves with "scale-monitor-framebuffers"
|
||||
# Author: Jonas Dreßler <verdre@v0yd.nl>
|
||||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3567
|
||||
|
@ -248,20 +222,13 @@ prepare() {
|
|||
# (mostly Chromium/Electron based apps with Ozone Wayland.)
|
||||
pick_mr '3751' 'mr3751.patch' 'patch'
|
||||
|
||||
# Title: backends/native: Avoid duplicating or losing KMS property sets
|
||||
# Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3912
|
||||
# Type: 1
|
||||
# Status: 2
|
||||
# Comment: Cannot be used with mr1441 as it already includes mr3912.
|
||||
pick_mr '3912' 'mr3912.patch' 'patch'
|
||||
|
||||
# Title: kms/impl-device: Track dispatch duration in crtc_frame_deadline_dispatch
|
||||
# Author: Michel Dänzer <mdaenzer@redhat.com>
|
||||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3934
|
||||
# Type: 1
|
||||
# Status: 2
|
||||
# Comment: Cannot be used with mr1441 as it already includes mr3934.
|
||||
# Comment: This fixes cursor stutter.
|
||||
# Do not enable this if !1441 is enabled since it already includes !3934.
|
||||
pick_mr '3934' 'mr3934.patch' 'patch'
|
||||
|
||||
# Title: Draft: Dynamic triple/double buffering (v4)
|
||||
|
@ -269,8 +236,8 @@ prepare() {
|
|||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
|
||||
# Type: 1
|
||||
# Status: 2 & 3
|
||||
# Comment: Help GPU frequencies to scale up.
|
||||
# Including mr3912 and mr3934.
|
||||
# Comment: Helps GPU frequencies to scale up.
|
||||
# Backported: !3934.
|
||||
pick_mr '1441' 'mr1441.patch' 'patch'
|
||||
|
||||
}
|
||||
|
@ -281,8 +248,8 @@ build() {
|
|||
-D wayland_eglstream=true
|
||||
-D installed_tests=false
|
||||
-D libdisplay_info=enabled
|
||||
-D docs=$(if ! [ -n "$_disable_docs" ]; then echo "true"; else echo "false"; fi)
|
||||
-D tests=$(if [ -n "$_enable_check" ]; then echo "true"; else echo "false"; fi)
|
||||
-D docs=false
|
||||
-D tests=false
|
||||
)
|
||||
|
||||
CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition"
|
||||
|
@ -292,57 +259,10 @@ build() {
|
|||
meson compile -C build
|
||||
}
|
||||
|
||||
|
||||
if [ -n "$_enable_check" ]; then
|
||||
check() {
|
||||
mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}"
|
||||
glib-compile-schemas "${GSETTINGS_SCHEMA_DIR:=$PWD/build/data}"
|
||||
export XDG_RUNTIME_DIR GSETTINGS_SCHEMA_DIR
|
||||
export NO_AT_BRIDGE=1 GTK_A11Y=none
|
||||
export MUTTER_DEBUG_DUMMY_MODE_SPECS="800x600@10.0"
|
||||
local _pipewire_session_manager=$(pacman -Qq pipewire-session-manager)
|
||||
|
||||
msg2 "It is possible to fail some tests. Use with caution!"
|
||||
# Tests fail:
|
||||
# mutter:cogl+cogl/conform / cogl-test-offscreen-texture-formats-gles2
|
||||
# mutter:core+mutter/stacking / fullscreen-maximize
|
||||
## https://gitlab.gnome.org/GNOME/mutter/-/issues/3343
|
||||
xvfb-run -s '-nolisten local +iglx -noreset' \
|
||||
${_pkgname}/src/tests/meta-dbus-runner.py --launch=pipewire --launch=${_pipewire_session_manager} \
|
||||
meson test -C build --no-suite 'mutter/kvm' --no-rebuild \
|
||||
--print-errorlogs --setup plain ||:
|
||||
}
|
||||
fi
|
||||
|
||||
_pick() {
|
||||
local p="$1" f d; shift
|
||||
for f; do
|
||||
d="$srcdir/$p/${f#$pkgdir/}"
|
||||
mkdir -p "$(dirname "$d")"
|
||||
mv "$f" "$d"
|
||||
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
|
||||
done
|
||||
}
|
||||
|
||||
package_mutter-performance() {
|
||||
package() {
|
||||
provides=(mutter libmutter-14.so)
|
||||
conflicts=(mutter)
|
||||
groups=(gnome)
|
||||
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
|
||||
if ! [ -n "$_disable_docs" ]; then
|
||||
_pick docs "$pkgdir"/usr/share/mutter-*/doc
|
||||
fi
|
||||
}
|
||||
|
||||
if ! [ -n "$_disable_docs" ]; then
|
||||
package_mutter-performance-docs() {
|
||||
provides=(mutter-docs)
|
||||
conflicts=(mutter-docs)
|
||||
pkgdesc+=" (documentation)"
|
||||
depends=()
|
||||
|
||||
mv docs/* "$pkgdir"
|
||||
}
|
||||
fi
|
||||
|
|
357
mr1441.patch
357
mr1441.patch
|
@ -1,7 +1,7 @@
|
|||
From 2d1ae79c3f4120d4df34423d256ae48ce0e76a22 Mon Sep 17 00:00:00 2001
|
||||
From 21fe0f94e6472d94f8a4943442464eb01785d6bc Mon Sep 17 00:00:00 2001
|
||||
From: Mingi Sung <sungmg@saltyming.net>
|
||||
Date: Wed, 14 Aug 2024 17:22:29 +0900
|
||||
Subject: [PATCH] Merge branch 'triple-buffering-v4-46' into gnome-46
|
||||
Date: Wed, 28 Aug 2024 20:11:32 +0900
|
||||
Subject: [PATCH] Merge branch 'sungmg-triple-buffering-v4-46' into gnome-46
|
||||
|
||||
Use triple buffering if and when the previous frame is running late.
|
||||
This means the next frame will be dispatched on time instead of also starting
|
||||
|
@ -15,7 +15,7 @@ there's no latency penalty when the system is able to maintain full frame rate.
|
|||
|
||||
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
|
||||
Commit: 9abd14c9b77d382a8ef792d990d423fbb1db4698
|
||||
Commit: 7a1dbab76a49b6dde6813604a3776ced39be91e1
|
||||
|
||||
Backported: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3184
|
||||
Backported: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3265
|
||||
|
@ -27,7 +27,7 @@ Backported: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3934
|
|||
|
||||
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
|
||||
---
|
||||
clutter/clutter/clutter-frame-clock.c | 384 +++++++++++++---
|
||||
clutter/clutter/clutter-frame-clock.c | 384 +++++++++++++++----
|
||||
clutter/clutter/clutter-frame-clock.h | 15 +-
|
||||
clutter/clutter/clutter-frame-private.h | 1 +
|
||||
clutter/clutter/clutter-frame.c | 13 +
|
||||
|
@ -41,14 +41,14 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
|
|||
src/backends/native/meta-crtc-native.c | 8 +
|
||||
src/backends/native/meta-crtc-native.h | 3 +
|
||||
src/backends/native/meta-crtc-virtual.c | 8 +
|
||||
src/backends/native/meta-frame-native.c | 63 +++
|
||||
src/backends/native/meta-frame-native.c | 63 ++++
|
||||
src/backends/native/meta-frame-native.h | 20 +
|
||||
src/backends/native/meta-kms-crtc.c | 63 ++-
|
||||
src/backends/native/meta-kms-crtc.c | 63 +++-
|
||||
src/backends/native/meta-kms-crtc.h | 5 +
|
||||
src/backends/native/meta-kms-impl-device.c | 55 ++-
|
||||
src/backends/native/meta-kms-impl-device.c | 51 ++-
|
||||
src/backends/native/meta-kms.c | 9 +
|
||||
src/backends/native/meta-kms.h | 2 +
|
||||
src/backends/native/meta-onscreen-native.c | 582 +++++++++++++++++-------
|
||||
src/backends/native/meta-onscreen-native.c | 478 +++++++++++++++++-------
|
||||
src/backends/native/meta-onscreen-native.h | 2 +
|
||||
src/backends/native/meta-renderer-native.c | 34 +-
|
||||
src/backends/native/meta-renderer-view-native.c | 41 ++
|
||||
|
@ -56,8 +56,8 @@ Signed-off-by: Mingi Sung <sungmg@saltyming.net>
|
|||
src/meta/meta-debug.h | 2 +
|
||||
src/meta/util.h | 3 +
|
||||
src/tests/meta-monitor-manager-test.c | 6 +
|
||||
src/tests/native-kms-render.c | 106 ++++-
|
||||
30 files changed, 1195 insertions(+), 282 deletions(-)
|
||||
src/tests/native-kms-render.c | 106 +++++-
|
||||
30 files changed, 1125 insertions(+), 244 deletions(-)
|
||||
|
||||
diff --git a/clutter/clutter/clutter-frame-clock.c b/clutter/clutter/clutter-frame-clock.c
|
||||
index 30a319f604..c299705663 100644
|
||||
|
@ -906,10 +906,10 @@ index 959a60533b..cfd45a6250 100644
|
|||
+COGL_EXPORT unsigned int
|
||||
+cogl_onscreen_get_pending_frame_count (CoglOnscreen *onscreen);
|
||||
diff --git a/cogl/cogl/cogl-onscreen.c b/cogl/cogl/cogl-onscreen.c
|
||||
index afb648bcd8..8c010b8cd5 100644
|
||||
index e2b3a0b462..53ffa649bc 100644
|
||||
--- a/cogl/cogl/cogl-onscreen.c
|
||||
+++ b/cogl/cogl/cogl-onscreen.c
|
||||
@@ -515,6 +515,14 @@ cogl_onscreen_pop_head_frame_info (CoglOnscreen *onscreen)
|
||||
@@ -514,6 +514,14 @@ cogl_onscreen_pop_head_frame_info (CoglOnscreen *onscreen)
|
||||
return g_queue_pop_head (&priv->pending_frame_infos);
|
||||
}
|
||||
|
||||
|
@ -1259,7 +1259,7 @@ index 580ee9a89c..b293f8e7cc 100644
|
|||
+
|
||||
+int64_t meta_kms_crtc_get_deadline_evasion (MetaKmsCrtc *crtc);
|
||||
diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c
|
||||
index 6758982a6a..3873526330 100644
|
||||
index 6758982a6a..6ce62cd697 100644
|
||||
--- a/src/backends/native/meta-kms-impl-device.c
|
||||
+++ b/src/backends/native/meta-kms-impl-device.c
|
||||
@@ -39,6 +39,7 @@
|
||||
|
@ -1368,16 +1368,7 @@ index 6758982a6a..3873526330 100644
|
|||
if (meta_kms_feedback_did_pass (feedback))
|
||||
crtc_frame->deadline.is_deadline_page_flip = TRUE;
|
||||
disarm_crtc_frame_deadline_timer (crtc_frame);
|
||||
@@ -1586,12 +1624,19 @@ meta_kms_impl_device_handle_update (MetaKmsImplDevice *impl_device,
|
||||
meta_kms_update_merge_from (crtc_frame->pending_update, update);
|
||||
meta_kms_update_free (update);
|
||||
update = g_steal_pointer (&crtc_frame->pending_update);
|
||||
- disarm_crtc_frame_deadline_timer (crtc_frame);
|
||||
}
|
||||
|
||||
+ if (crtc_frame->deadline.armed)
|
||||
+ disarm_crtc_frame_deadline_timer (crtc_frame);
|
||||
+
|
||||
@@ -1592,6 +1630,11 @@ meta_kms_impl_device_handle_update (MetaKmsImplDevice *impl_device,
|
||||
meta_kms_device_handle_flush (priv->device, latch_crtc);
|
||||
|
||||
feedback = do_process (impl_device, latch_crtc, update, flags);
|
||||
|
@ -1437,7 +1428,7 @@ index 7434014063..f6b19520be 100644
|
|||
MetaKmsFlags flags,
|
||||
GError **error);
|
||||
diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c
|
||||
index 1a31f04a16..ba5090b3cc 100644
|
||||
index 9b739faf39..6120eeec7b 100644
|
||||
--- a/src/backends/native/meta-onscreen-native.c
|
||||
+++ b/src/backends/native/meta-onscreen-native.c
|
||||
@@ -76,7 +76,7 @@ typedef struct _MetaOnscreenNativeSecondaryGpuState
|
||||
|
@ -1449,21 +1440,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
} cpu;
|
||||
|
||||
gboolean noted_primary_gpu_copy_ok;
|
||||
@@ -84,6 +84,13 @@ typedef struct _MetaOnscreenNativeSecondaryGpuState
|
||||
MetaSharedFramebufferImportStatus import_status;
|
||||
} MetaOnscreenNativeSecondaryGpuState;
|
||||
|
||||
+typedef struct _KmsProperty
|
||||
+{
|
||||
+ gboolean invalidated;
|
||||
+ int updates_pending;
|
||||
+ gulong signal_handler_id;
|
||||
+} KmsProperty;
|
||||
+
|
||||
struct _MetaOnscreenNative
|
||||
{
|
||||
CoglOnscreenEgl parent;
|
||||
@@ -95,12 +102,13 @@ struct _MetaOnscreenNative
|
||||
@@ -102,12 +102,13 @@ struct _MetaOnscreenNative
|
||||
|
||||
MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state;
|
||||
|
||||
|
@ -1481,7 +1458,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
} gbm;
|
||||
|
||||
#ifdef HAVE_EGL_DEVICE
|
||||
@@ -111,20 +119,23 @@ struct _MetaOnscreenNative
|
||||
@@ -118,6 +119,9 @@ struct _MetaOnscreenNative
|
||||
} egl;
|
||||
#endif
|
||||
|
||||
|
@ -1491,30 +1468,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
gboolean frame_sync_requested;
|
||||
gboolean frame_sync_enabled;
|
||||
|
||||
MetaRendererView *view;
|
||||
|
||||
- gboolean is_gamma_lut_invalid;
|
||||
- gboolean is_privacy_screen_invalid;
|
||||
- gboolean is_color_space_invalid;
|
||||
- gboolean is_hdr_metadata_invalid;
|
||||
-
|
||||
- gulong gamma_lut_changed_handler_id;
|
||||
- gulong privacy_screen_changed_handler_id;
|
||||
- gulong color_space_changed_handler_id;
|
||||
- gulong hdr_metadata_changed_handler_id;
|
||||
+ union {
|
||||
+ struct {
|
||||
+ KmsProperty gamma_lut;
|
||||
+ KmsProperty privacy_screen;
|
||||
+ KmsProperty color_space;
|
||||
+ KmsProperty hdr_metadata;
|
||||
+ } property;
|
||||
+ KmsProperty properties[4];
|
||||
+ };
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native,
|
||||
@@ -132,44 +143,37 @@ G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native,
|
||||
@@ -139,44 +143,37 @@ G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native,
|
||||
|
||||
static GQuark blit_source_quark = 0;
|
||||
|
||||
|
@ -1572,7 +1526,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static void
|
||||
@@ -207,7 +211,7 @@ meta_onscreen_native_notify_frame_complete (CoglOnscreen *onscreen)
|
||||
@@ -214,7 +211,7 @@ meta_onscreen_native_notify_frame_complete (CoglOnscreen *onscreen)
|
||||
|
||||
info = cogl_onscreen_pop_head_frame_info (onscreen);
|
||||
|
||||
|
@ -1581,24 +1535,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
|
||||
_cogl_onscreen_notify_frame_sync (onscreen, info);
|
||||
_cogl_onscreen_notify_complete (onscreen, info);
|
||||
@@ -233,16 +237,20 @@ notify_view_crtc_presented (MetaRendererView *view,
|
||||
|
||||
g_return_if_fail (frame_info != NULL);
|
||||
|
||||
- onscreen_native->is_gamma_lut_invalid = FALSE;
|
||||
- onscreen_native->is_privacy_screen_invalid = FALSE;
|
||||
- onscreen_native->is_color_space_invalid = FALSE;
|
||||
- onscreen_native->is_hdr_metadata_invalid = FALSE;
|
||||
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
|
||||
+ {
|
||||
+ KmsProperty *prop = &onscreen_native->properties[i];
|
||||
+
|
||||
+ if (prop->updates_pending > 0)
|
||||
+ prop->updates_pending--;
|
||||
+ }
|
||||
|
||||
crtc = META_CRTC (meta_crtc_kms_from_kms_crtc (kms_crtc));
|
||||
maybe_update_frame_info (crtc, frame_info, time_us, flags, sequence);
|
||||
@@ -256,6 +253,7 @@ notify_view_crtc_presented (MetaRendererView *view,
|
||||
|
||||
meta_onscreen_native_notify_frame_complete (onscreen);
|
||||
meta_onscreen_native_swap_drm_fb (onscreen);
|
||||
|
@ -1606,7 +1543,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static void
|
||||
@@ -292,15 +300,13 @@ page_flip_feedback_ready (MetaKmsCrtc *kms_crtc,
|
||||
@@ -305,15 +303,13 @@ page_flip_feedback_ready (MetaKmsCrtc *kms_crtc,
|
||||
CoglFramebuffer *framebuffer =
|
||||
clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view));
|
||||
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
|
||||
|
@ -1623,31 +1560,8 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static void
|
||||
@@ -333,6 +339,7 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
|
||||
CoglFramebuffer *framebuffer =
|
||||
clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view));
|
||||
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
|
||||
+ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
CoglFrameInfo *frame_info;
|
||||
|
||||
/*
|
||||
@@ -346,11 +353,23 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
|
||||
G_IO_ERROR_PERMISSION_DENIED))
|
||||
g_warning ("Page flip discarded: %s", error->message);
|
||||
|
||||
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
|
||||
+ {
|
||||
+ KmsProperty *prop = &onscreen_native->properties[i];
|
||||
+
|
||||
+ if (prop->updates_pending > 0)
|
||||
+ {
|
||||
+ prop->invalidated = TRUE;
|
||||
+ prop->updates_pending--;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
frame_info = cogl_onscreen_peek_head_frame_info (onscreen);
|
||||
frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC;
|
||||
@@ -379,7 +375,8 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
|
||||
}
|
||||
|
||||
meta_onscreen_native_notify_frame_complete (onscreen);
|
||||
- meta_onscreen_native_clear_next_fb (onscreen);
|
||||
|
@ -1656,7 +1570,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static const MetaKmsPageFlipListenerVtable page_flip_listener_vtable = {
|
||||
@@ -411,18 +430,36 @@ custom_egl_stream_page_flip (gpointer custom_page_flip_data,
|
||||
@@ -440,18 +437,36 @@ custom_egl_stream_page_flip (gpointer custom_page_flip_data,
|
||||
}
|
||||
#endif /* HAVE_EGL_DEVICE */
|
||||
|
||||
|
@ -1696,7 +1610,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
static void
|
||||
apply_transform (MetaCrtcKms *crtc_kms,
|
||||
MetaKmsPlaneAssignment *kms_plane_assignment,
|
||||
@@ -499,12 +536,15 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
@@ -528,12 +543,15 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
{
|
||||
MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
MetaRendererNative *renderer_native = onscreen_native->renderer_native;
|
||||
|
@ -1712,7 +1626,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
MetaKmsPlaneAssignment *plane_assignment;
|
||||
graphene_rect_t src_rect;
|
||||
MtkRectangle dst_rect;
|
||||
@@ -512,6 +552,9 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
@@ -541,6 +559,9 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
COGL_TRACE_BEGIN_SCOPED (MetaOnscreenNativeFlipCrtcs,
|
||||
"Meta::OnscreenNative::flip_crtc()");
|
||||
|
||||
|
@ -1722,7 +1636,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
gpu_kms = META_GPU_KMS (meta_crtc_get_gpu (crtc));
|
||||
|
||||
g_assert (meta_gpu_kms_is_crtc_active (gpu_kms, crtc));
|
||||
@@ -521,14 +564,14 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
@@ -550,14 +571,14 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
switch (renderer_gpu_data->mode)
|
||||
{
|
||||
case META_RENDERER_NATIVE_MODE_GBM:
|
||||
|
@ -1743,7 +1657,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
else
|
||||
{
|
||||
@@ -571,6 +614,10 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
@@ -600,6 +621,10 @@ meta_onscreen_native_flip_crtc (CoglOnscreen *onscreen,
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1754,7 +1668,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
meta_kms_update_add_page_flip_listener (kms_update,
|
||||
kms_crtc,
|
||||
&page_flip_listener_vtable,
|
||||
@@ -918,12 +965,17 @@ static MetaDrmBufferDumb *
|
||||
@@ -947,12 +972,17 @@ static MetaDrmBufferDumb *
|
||||
secondary_gpu_get_next_dumb_buffer (MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state)
|
||||
{
|
||||
MetaDrmBufferDumb *current_dumb_fb;
|
||||
|
@ -1776,7 +1690,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static MetaDrmBuffer *
|
||||
@@ -1163,56 +1215,54 @@ update_secondary_gpu_state_pre_swap_buffers (CoglOnscreen *onscreen,
|
||||
@@ -1192,56 +1222,54 @@ update_secondary_gpu_state_pre_swap_buffers (CoglOnscreen *onscreen,
|
||||
return copy;
|
||||
}
|
||||
|
||||
|
@ -1869,7 +1783,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static void
|
||||
@@ -1255,10 +1305,36 @@ swap_buffer_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
@@ -1284,10 +1312,36 @@ swap_buffer_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
g_warning ("Page flip failed: %s", error->message);
|
||||
|
||||
frame_info = cogl_onscreen_peek_head_frame_info (onscreen);
|
||||
|
@ -1909,7 +1823,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static const MetaKmsResultListenerVtable swap_buffer_result_listener_vtable = {
|
||||
@@ -1279,32 +1355,38 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1308,32 +1362,38 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys;
|
||||
MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform;
|
||||
MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native;
|
||||
|
@ -1956,7 +1870,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
secondary_gpu_fb =
|
||||
update_secondary_gpu_state_pre_swap_buffers (onscreen,
|
||||
rectangles,
|
||||
@@ -1371,21 +1453,17 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1400,21 +1460,17 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1984,7 +1898,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
{
|
||||
g_warning ("Failed to ensure KMS FB ID on %s: %s",
|
||||
meta_device_file_get_path (render_device_file),
|
||||
@@ -1404,6 +1482,11 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1433,6 +1489,11 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1996,7 +1910,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
/*
|
||||
* If we changed EGL context, cogl will have the wrong idea about what is
|
||||
* current, making it fail to set it when it needs to. Avoid that by making
|
||||
@@ -1413,12 +1496,73 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1442,12 +1503,73 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
if (egl_context_changed)
|
||||
_cogl_winsys_egl_ensure_current (cogl_display);
|
||||
|
||||
|
@ -2072,7 +1986,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
kms_update = meta_frame_native_ensure_kms_update (frame_native,
|
||||
kms_device);
|
||||
meta_kms_update_add_result_listener (kms_update,
|
||||
@@ -1440,13 +1584,11 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1469,13 +1591,11 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
{
|
||||
meta_renderer_native_queue_power_save_page_flip (renderer_native,
|
||||
onscreen);
|
||||
|
@ -2087,7 +2001,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
|
||||
switch (renderer_gpu_data->mode)
|
||||
{
|
||||
@@ -1461,8 +1603,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1490,8 +1610,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
kms_update = meta_frame_native_steal_kms_update (frame_native);
|
||||
meta_renderer_native_queue_mode_set_update (renderer_native,
|
||||
kms_update);
|
||||
|
@ -2096,7 +2010,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
return;
|
||||
}
|
||||
else if (meta_renderer_native_has_pending_mode_set (renderer_native))
|
||||
@@ -1476,8 +1616,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1505,8 +1623,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
|
||||
meta_frame_native_steal_kms_update (frame_native);
|
||||
meta_renderer_native_post_mode_set_updates (renderer_native);
|
||||
|
@ -2105,7 +2019,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
return;
|
||||
}
|
||||
break;
|
||||
@@ -1493,8 +1631,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1522,8 +1638,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
kms_update);
|
||||
|
||||
meta_renderer_native_post_mode_set_updates (renderer_native);
|
||||
|
@ -2114,7 +2028,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
return;
|
||||
}
|
||||
break;
|
||||
@@ -1509,7 +1645,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
@@ -1538,7 +1652,6 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
kms_update = meta_frame_native_steal_kms_update (frame_native);
|
||||
meta_kms_device_post_update (kms_device, kms_update,
|
||||
META_KMS_UPDATE_FLAG_NONE);
|
||||
|
@ -2122,7 +2036,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
gboolean
|
||||
@@ -1577,11 +1712,15 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
@@ -1606,11 +1719,15 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
G_IO_ERROR_PERMISSION_DENIED))
|
||||
{
|
||||
ClutterStageView *view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
@ -2140,7 +2054,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
clutter_stage_view_add_redraw_clip (view, NULL);
|
||||
clutter_stage_view_schedule_update_now (view);
|
||||
}
|
||||
@@ -1590,7 +1729,7 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
@@ -1619,7 +1736,7 @@ scanout_result_feedback (const MetaKmsFeedback *kms_feedback,
|
||||
frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC;
|
||||
|
||||
meta_onscreen_native_notify_frame_complete (onscreen);
|
||||
|
@ -2149,7 +2063,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static const MetaKmsResultListenerVtable scanout_result_listener_vtable = {
|
||||
@@ -1642,16 +1781,28 @@ meta_onscreen_native_direct_scanout (CoglOnscreen *onscreen,
|
||||
@@ -1671,16 +1788,28 @@ meta_onscreen_native_direct_scanout (CoglOnscreen *onscreen,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -2183,7 +2097,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
|
||||
frame_info->cpu_time_before_buffer_swap_us = g_get_monotonic_time ();
|
||||
|
||||
@@ -1757,11 +1908,15 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen,
|
||||
@@ -1786,11 +1915,15 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen,
|
||||
ClutterFrame *frame)
|
||||
{
|
||||
MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
|
@ -2203,64 +2117,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
maybe_update_frame_sync (onscreen_native, frame);
|
||||
}
|
||||
|
||||
@@ -1776,7 +1931,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc);;
|
||||
MetaFrameNative *frame_native = meta_frame_native_from_frame (frame);
|
||||
|
||||
- if (onscreen_native->is_gamma_lut_invalid)
|
||||
+ if (onscreen_native->property.gamma_lut.invalidated)
|
||||
{
|
||||
const MetaGammaLut *gamma;
|
||||
MetaKmsUpdate *kms_update;
|
||||
@@ -1786,9 +1941,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
gamma = meta_crtc_kms_peek_gamma_lut (crtc_kms);
|
||||
meta_kms_update_set_crtc_gamma (kms_update, kms_crtc, gamma);
|
||||
+ onscreen_native->property.gamma_lut.invalidated = FALSE;
|
||||
+ onscreen_native->property.gamma_lut.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_privacy_screen_invalid)
|
||||
+ if (onscreen_native->property.privacy_screen.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1800,9 +1957,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
enabled = meta_output_is_privacy_screen_enabled (onscreen_native->output);
|
||||
meta_kms_update_set_privacy_screen (kms_update, kms_connector, enabled);
|
||||
+ onscreen_native->property.privacy_screen.invalidated = FALSE;
|
||||
+ onscreen_native->property.privacy_screen.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_color_space_invalid)
|
||||
+ if (onscreen_native->property.color_space.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1814,9 +1973,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
color_space = meta_output_peek_color_space (onscreen_native->output);
|
||||
meta_kms_update_set_color_space (kms_update, kms_connector, color_space);
|
||||
+ onscreen_native->property.color_space.invalidated = FALSE;
|
||||
+ onscreen_native->property.color_space.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_hdr_metadata_invalid)
|
||||
+ if (onscreen_native->property.hdr_metadata.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1828,6 +1989,8 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
metadata = meta_output_peek_hdr_metadata (onscreen_native->output);
|
||||
meta_kms_update_set_hdr_metadata (kms_update, kms_connector, metadata);
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = FALSE;
|
||||
+ onscreen_native->property.hdr_metadata.updates_pending++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1877,22 +2040,79 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen,
|
||||
@@ -1919,22 +2052,79 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen,
|
||||
MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc);
|
||||
MetaFrameNative *frame_native = meta_frame_native_from_frame (frame);
|
||||
MetaKmsUpdate *kms_update;
|
||||
|
@ -2348,7 +2205,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
meta_kms_update_add_result_listener (kms_update,
|
||||
&finish_frame_result_listener_vtable,
|
||||
NULL,
|
||||
@@ -1915,7 +2135,17 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen,
|
||||
@@ -1957,7 +2147,17 @@ meta_onscreen_native_finish_frame (CoglOnscreen *onscreen,
|
||||
meta_kms_update_set_flushing (kms_update, kms_crtc);
|
||||
meta_kms_device_post_update (kms_device, kms_update,
|
||||
META_KMS_UPDATE_FLAG_NONE);
|
||||
|
@ -2367,125 +2224,7 @@ index 1a31f04a16..ba5090b3cc 100644
|
|||
}
|
||||
|
||||
static gboolean
|
||||
@@ -2677,15 +2907,15 @@ meta_onscreen_native_invalidate (MetaOnscreenNative *onscreen_native)
|
||||
meta_output_get_info (onscreen_native->output);
|
||||
|
||||
if (meta_crtc_get_gamma_lut_size (onscreen_native->crtc) > 0)
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
if (output_info->supports_privacy_screen)
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
if (output_info->supported_color_spaces &
|
||||
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
if (output_info->supported_hdr_eotfs &
|
||||
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2694,7 +2924,7 @@ on_gamma_lut_changed (MetaCrtc *crtc,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2705,7 +2935,7 @@ on_privacy_screen_enabled_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2715,7 +2945,7 @@ on_color_space_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2725,7 +2955,7 @@ on_hdr_metadata_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2760,8 +2990,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
|
||||
if (meta_crtc_get_gamma_lut_size (crtc) > 0)
|
||||
{
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
- onscreen_native->gamma_lut_changed_handler_id =
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.signal_handler_id =
|
||||
g_signal_connect (crtc, "gamma-lut-changed",
|
||||
G_CALLBACK (on_gamma_lut_changed),
|
||||
onscreen_native);
|
||||
@@ -2769,8 +2999,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
|
||||
if (output_info->supports_privacy_screen)
|
||||
{
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
- onscreen_native->privacy_screen_changed_handler_id =
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.signal_handler_id =
|
||||
g_signal_connect (output, "notify::is-privacy-screen-enabled",
|
||||
G_CALLBACK (on_privacy_screen_enabled_changed),
|
||||
onscreen_native);
|
||||
@@ -2779,8 +3009,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
if (output_info->supported_color_spaces &
|
||||
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
|
||||
{
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
- onscreen_native->color_space_changed_handler_id =
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
+ onscreen_native->property.color_space.signal_handler_id =
|
||||
g_signal_connect (output, "color-space-changed",
|
||||
G_CALLBACK (on_color_space_changed),
|
||||
onscreen_native);
|
||||
@@ -2789,8 +3019,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
if (output_info->supported_hdr_eotfs &
|
||||
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
|
||||
{
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
- onscreen_native->hdr_metadata_changed_handler_id =
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.signal_handler_id =
|
||||
g_signal_connect (output, "hdr-metadata-changed",
|
||||
G_CALLBACK (on_hdr_metadata_changed),
|
||||
onscreen_native);
|
||||
@@ -2802,13 +3032,13 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
static void
|
||||
clear_invalidation_handlers (MetaOnscreenNative *onscreen_native)
|
||||
{
|
||||
- g_clear_signal_handler (&onscreen_native->gamma_lut_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.gamma_lut.signal_handler_id,
|
||||
onscreen_native->crtc);
|
||||
- g_clear_signal_handler (&onscreen_native->privacy_screen_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.privacy_screen.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
- g_clear_signal_handler (&onscreen_native->color_space_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.color_space.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
- g_clear_signal_handler (&onscreen_native->hdr_metadata_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.hdr_metadata.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
}
|
||||
|
||||
@@ -2823,15 +3053,17 @@ meta_onscreen_native_dispose (GObject *object)
|
||||
@@ -2865,15 +3065,17 @@ meta_onscreen_native_dispose (GObject *object)
|
||||
|
||||
meta_onscreen_native_detach (onscreen_native);
|
||||
|
||||
|
|
36
mr3373.patch
36
mr3373.patch
|
@ -1,36 +0,0 @@
|
|||
From d99a0017e66bdd0e1a278e6b08126f5b04cac096 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
Date: Tue, 7 Nov 2023 16:30:01 +0200
|
||||
Subject: [PATCH] kms/crtc: Increase default deadline evasion to 1000
|
||||
microseconds
|
||||
|
||||
This seems to be enough to fix cursor stutter on X1 Carbon 10 (OLED)
|
||||
where the display is 90Hz and the touchpad ~145Hz.
|
||||
|
||||
Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/3146
|
||||
Bug-Ubuntu: https://launchpad.net/bugs/2040977
|
||||
|
||||
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3373
|
||||
Commit: 83de83513cbe6904e744ed4b495d835128f27434
|
||||
|
||||
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
|
||||
---
|
||||
src/backends/native/meta-kms-crtc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c
|
||||
index a0872089a0..8fcb2d9495 100644
|
||||
--- a/src/backends/native/meta-kms-crtc.c
|
||||
+++ b/src/backends/native/meta-kms-crtc.c
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "backends/native/meta-kms-update-private.h"
|
||||
#include "backends/native/meta-kms-utils.h"
|
||||
|
||||
-#define DEADLINE_EVASION_US 800
|
||||
+#define DEADLINE_EVASION_US 1000
|
||||
#define DEADLINE_EVASION_WITH_KMS_TOPIC_US 1000
|
||||
|
||||
#define MINIMUM_REFRESH_RATE 30.f
|
||||
--
|
||||
2.46.0
|
||||
|
295
mr3912.patch
295
mr3912.patch
|
@ -1,295 +0,0 @@
|
|||
From 9cc50ce03e29614740a1e524866f113dbf7fe27c Mon Sep 17 00:00:00 2001
|
||||
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||
Date: Mon, 29 Jul 2024 17:44:53 +0800
|
||||
Subject: [PATCH] backends/native: Avoid duplicating or losing KMS property
|
||||
sets
|
||||
|
||||
When triple buffering, `meta_onscreen_native_prepare_frame` for the next
|
||||
frame is called before `notify_view_crtc_presented` for the previous frame.
|
||||
So our booleans were unfortunately still TRUE in the second prepare_frame,
|
||||
resulting in two frames with the same property updates.
|
||||
|
||||
When double buffering, having roughly one frame interval between
|
||||
`meta_onscreen_native_prepare_frame` and `notify_view_crtc_presented`
|
||||
meant that property updates signalled between the swap and presentation
|
||||
wouldn't get attached to a KMS update, and would be forgotten when
|
||||
`notify_view_crtc_presented` resets the flags to FALSE.
|
||||
|
||||
To solve these we now keep a separate flag and counter per property,
|
||||
tracking invalidation and pending updates respectively. The latter is a
|
||||
counter rather than a boolean in support of triple buffering where two
|
||||
updates may be pending concurrently (next and posted).
|
||||
|
||||
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3912
|
||||
Commit: f7b59445e437aa84ec00b372cd26f3b35ece7c8b
|
||||
|
||||
Signed-off-by: Mingi Sung <sungmg@saltyming.net>
|
||||
---
|
||||
src/backends/native/meta-onscreen-native.c | 104 +++++++++++++--------
|
||||
1 file changed, 67 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c
|
||||
index 1a31f04a16..60b7d877a5 100644
|
||||
--- a/src/backends/native/meta-onscreen-native.c
|
||||
+++ b/src/backends/native/meta-onscreen-native.c
|
||||
@@ -84,6 +84,13 @@ typedef struct _MetaOnscreenNativeSecondaryGpuState
|
||||
MetaSharedFramebufferImportStatus import_status;
|
||||
} MetaOnscreenNativeSecondaryGpuState;
|
||||
|
||||
+typedef struct _KmsProperty
|
||||
+{
|
||||
+ gboolean invalidated;
|
||||
+ int updates_pending;
|
||||
+ gulong signal_handler_id;
|
||||
+} KmsProperty;
|
||||
+
|
||||
struct _MetaOnscreenNative
|
||||
{
|
||||
CoglOnscreenEgl parent;
|
||||
@@ -116,15 +123,15 @@ struct _MetaOnscreenNative
|
||||
|
||||
MetaRendererView *view;
|
||||
|
||||
- gboolean is_gamma_lut_invalid;
|
||||
- gboolean is_privacy_screen_invalid;
|
||||
- gboolean is_color_space_invalid;
|
||||
- gboolean is_hdr_metadata_invalid;
|
||||
-
|
||||
- gulong gamma_lut_changed_handler_id;
|
||||
- gulong privacy_screen_changed_handler_id;
|
||||
- gulong color_space_changed_handler_id;
|
||||
- gulong hdr_metadata_changed_handler_id;
|
||||
+ union {
|
||||
+ struct {
|
||||
+ KmsProperty gamma_lut;
|
||||
+ KmsProperty privacy_screen;
|
||||
+ KmsProperty color_space;
|
||||
+ KmsProperty hdr_metadata;
|
||||
+ } property;
|
||||
+ KmsProperty properties[4];
|
||||
+ };
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaOnscreenNative, meta_onscreen_native,
|
||||
@@ -233,10 +240,13 @@ notify_view_crtc_presented (MetaRendererView *view,
|
||||
|
||||
g_return_if_fail (frame_info != NULL);
|
||||
|
||||
- onscreen_native->is_gamma_lut_invalid = FALSE;
|
||||
- onscreen_native->is_privacy_screen_invalid = FALSE;
|
||||
- onscreen_native->is_color_space_invalid = FALSE;
|
||||
- onscreen_native->is_hdr_metadata_invalid = FALSE;
|
||||
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
|
||||
+ {
|
||||
+ KmsProperty *prop = &onscreen_native->properties[i];
|
||||
+
|
||||
+ if (prop->updates_pending > 0)
|
||||
+ prop->updates_pending--;
|
||||
+ }
|
||||
|
||||
crtc = META_CRTC (meta_crtc_kms_from_kms_crtc (kms_crtc));
|
||||
maybe_update_frame_info (crtc, frame_info, time_us, flags, sequence);
|
||||
@@ -333,6 +343,7 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
|
||||
CoglFramebuffer *framebuffer =
|
||||
clutter_stage_view_get_onscreen (CLUTTER_STAGE_VIEW (view));
|
||||
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
|
||||
+ MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
CoglFrameInfo *frame_info;
|
||||
|
||||
/*
|
||||
@@ -346,6 +357,17 @@ page_flip_feedback_discarded (MetaKmsCrtc *kms_crtc,
|
||||
G_IO_ERROR_PERMISSION_DENIED))
|
||||
g_warning ("Page flip discarded: %s", error->message);
|
||||
|
||||
+ for (int i = 0; i < G_N_ELEMENTS (onscreen_native->properties); i++)
|
||||
+ {
|
||||
+ KmsProperty *prop = &onscreen_native->properties[i];
|
||||
+
|
||||
+ if (prop->updates_pending > 0)
|
||||
+ {
|
||||
+ prop->invalidated = TRUE;
|
||||
+ prop->updates_pending--;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
frame_info = cogl_onscreen_peek_head_frame_info (onscreen);
|
||||
frame_info->flags |= COGL_FRAME_INFO_FLAG_SYMBOLIC;
|
||||
|
||||
@@ -1776,7 +1798,7 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
MetaKmsDevice *kms_device = meta_kms_crtc_get_device (kms_crtc);;
|
||||
MetaFrameNative *frame_native = meta_frame_native_from_frame (frame);
|
||||
|
||||
- if (onscreen_native->is_gamma_lut_invalid)
|
||||
+ if (onscreen_native->property.gamma_lut.invalidated)
|
||||
{
|
||||
const MetaGammaLut *gamma;
|
||||
MetaKmsUpdate *kms_update;
|
||||
@@ -1786,9 +1808,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
gamma = meta_crtc_kms_peek_gamma_lut (crtc_kms);
|
||||
meta_kms_update_set_crtc_gamma (kms_update, kms_crtc, gamma);
|
||||
+ onscreen_native->property.gamma_lut.invalidated = FALSE;
|
||||
+ onscreen_native->property.gamma_lut.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_privacy_screen_invalid)
|
||||
+ if (onscreen_native->property.privacy_screen.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1800,9 +1824,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
enabled = meta_output_is_privacy_screen_enabled (onscreen_native->output);
|
||||
meta_kms_update_set_privacy_screen (kms_update, kms_connector, enabled);
|
||||
+ onscreen_native->property.privacy_screen.invalidated = FALSE;
|
||||
+ onscreen_native->property.privacy_screen.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_color_space_invalid)
|
||||
+ if (onscreen_native->property.color_space.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1814,9 +1840,11 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
color_space = meta_output_peek_color_space (onscreen_native->output);
|
||||
meta_kms_update_set_color_space (kms_update, kms_connector, color_space);
|
||||
+ onscreen_native->property.color_space.invalidated = FALSE;
|
||||
+ onscreen_native->property.color_space.updates_pending++;
|
||||
}
|
||||
|
||||
- if (onscreen_native->is_hdr_metadata_invalid)
|
||||
+ if (onscreen_native->property.hdr_metadata.invalidated)
|
||||
{
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
@@ -1828,6 +1856,8 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen,
|
||||
|
||||
metadata = meta_output_peek_hdr_metadata (onscreen_native->output);
|
||||
meta_kms_update_set_hdr_metadata (kms_update, kms_connector, metadata);
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = FALSE;
|
||||
+ onscreen_native->property.hdr_metadata.updates_pending++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2677,15 +2707,15 @@ meta_onscreen_native_invalidate (MetaOnscreenNative *onscreen_native)
|
||||
meta_output_get_info (onscreen_native->output);
|
||||
|
||||
if (meta_crtc_get_gamma_lut_size (onscreen_native->crtc) > 0)
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
if (output_info->supports_privacy_screen)
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
if (output_info->supported_color_spaces &
|
||||
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
if (output_info->supported_hdr_eotfs &
|
||||
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2694,7 +2724,7 @@ on_gamma_lut_changed (MetaCrtc *crtc,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2705,7 +2735,7 @@ on_privacy_screen_enabled_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2715,7 +2745,7 @@ on_color_space_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2725,7 +2755,7 @@ on_hdr_metadata_changed (MetaOutput *output,
|
||||
{
|
||||
ClutterStageView *stage_view = CLUTTER_STAGE_VIEW (onscreen_native->view);
|
||||
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
clutter_stage_view_schedule_update (stage_view);
|
||||
}
|
||||
|
||||
@@ -2760,8 +2790,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
|
||||
if (meta_crtc_get_gamma_lut_size (crtc) > 0)
|
||||
{
|
||||
- onscreen_native->is_gamma_lut_invalid = TRUE;
|
||||
- onscreen_native->gamma_lut_changed_handler_id =
|
||||
+ onscreen_native->property.gamma_lut.invalidated = TRUE;
|
||||
+ onscreen_native->property.gamma_lut.signal_handler_id =
|
||||
g_signal_connect (crtc, "gamma-lut-changed",
|
||||
G_CALLBACK (on_gamma_lut_changed),
|
||||
onscreen_native);
|
||||
@@ -2769,8 +2799,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
|
||||
if (output_info->supports_privacy_screen)
|
||||
{
|
||||
- onscreen_native->is_privacy_screen_invalid = TRUE;
|
||||
- onscreen_native->privacy_screen_changed_handler_id =
|
||||
+ onscreen_native->property.privacy_screen.invalidated = TRUE;
|
||||
+ onscreen_native->property.privacy_screen.signal_handler_id =
|
||||
g_signal_connect (output, "notify::is-privacy-screen-enabled",
|
||||
G_CALLBACK (on_privacy_screen_enabled_changed),
|
||||
onscreen_native);
|
||||
@@ -2779,8 +2809,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
if (output_info->supported_color_spaces &
|
||||
(1 << META_OUTPUT_COLORSPACE_DEFAULT))
|
||||
{
|
||||
- onscreen_native->is_color_space_invalid = TRUE;
|
||||
- onscreen_native->color_space_changed_handler_id =
|
||||
+ onscreen_native->property.color_space.invalidated = TRUE;
|
||||
+ onscreen_native->property.color_space.signal_handler_id =
|
||||
g_signal_connect (output, "color-space-changed",
|
||||
G_CALLBACK (on_color_space_changed),
|
||||
onscreen_native);
|
||||
@@ -2789,8 +2819,8 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
if (output_info->supported_hdr_eotfs &
|
||||
(1 << META_OUTPUT_HDR_METADATA_EOTF_TRADITIONAL_GAMMA_SDR))
|
||||
{
|
||||
- onscreen_native->is_hdr_metadata_invalid = TRUE;
|
||||
- onscreen_native->hdr_metadata_changed_handler_id =
|
||||
+ onscreen_native->property.hdr_metadata.invalidated = TRUE;
|
||||
+ onscreen_native->property.hdr_metadata.signal_handler_id =
|
||||
g_signal_connect (output, "hdr-metadata-changed",
|
||||
G_CALLBACK (on_hdr_metadata_changed),
|
||||
onscreen_native);
|
||||
@@ -2802,13 +2832,13 @@ meta_onscreen_native_new (MetaRendererNative *renderer_native,
|
||||
static void
|
||||
clear_invalidation_handlers (MetaOnscreenNative *onscreen_native)
|
||||
{
|
||||
- g_clear_signal_handler (&onscreen_native->gamma_lut_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.gamma_lut.signal_handler_id,
|
||||
onscreen_native->crtc);
|
||||
- g_clear_signal_handler (&onscreen_native->privacy_screen_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.privacy_screen.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
- g_clear_signal_handler (&onscreen_native->color_space_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.color_space.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
- g_clear_signal_handler (&onscreen_native->hdr_metadata_changed_handler_id,
|
||||
+ g_clear_signal_handler (&onscreen_native->property.hdr_metadata.signal_handler_id,
|
||||
onscreen_native->output);
|
||||
}
|
||||
|
||||
--
|
||||
2.46.0
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
From 85e79bbb26f2248ec1387f89568c52c4b3048d67 Mon Sep 17 00:00:00 2001
|
||||
From adb26372d0dc18c90293733f1c5f3b0479badf6c Mon Sep 17 00:00:00 2001
|
||||
From: Mingi Sung <sungmg@saltyming.net>
|
||||
Date: Wed, 14 Aug 2024 17:25:41 +0900
|
||||
Date: Wed, 28 Aug 2024 20:21:07 +0900
|
||||
Subject: [PATCH] Merge branch 'crtc_frame_deadline_dispatch-track-duration'
|
||||
into gnome-46
|
||||
MIME-Version: 1.0
|
||||
|
@ -444,10 +444,10 @@ index 6758982a6a..6ce62cd697 100644
|
|||
return;
|
||||
|
||||
diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c
|
||||
index 1a31f04a16..98e106fffa 100644
|
||||
index 9b739faf39..b790c1e5c8 100644
|
||||
--- a/src/backends/native/meta-onscreen-native.c
|
||||
+++ b/src/backends/native/meta-onscreen-native.c
|
||||
@@ -1757,11 +1757,15 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen,
|
||||
@@ -1786,11 +1786,15 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen,
|
||||
ClutterFrame *frame)
|
||||
{
|
||||
MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
|
|
Loading…
Reference in a new issue