mutter/src/backends
Jonas Ådahl a9a9a0d1c5 clutter: Paint views with individual frame clocks
Replace the default master clock with multiple frame clocks, each
driving its own stage view. As each stage view represents one CRTC, this
means we draw each CRTC with its own designated frame clock,
disconnected from all the others.

For example this means we when using the native backend will never need
to wait for one monitor to vsync before painting another, so e.g. having
a 144 Hz monitor next to a 60 Hz monitor, things including both Wayland
and X11 applications and shell UI will be able to render at the
corresponding monitor refresh rate.

This also changes a warning about missed frames when sending
_NETWM_FRAME_TIMINGS messages to a debug log entry, as it's expected
that we'll start missing frames e.g. when a X11 window (via Xwayland) is
exclusively within a stage view that was not painted, while another one
was, still increasing the global frame clock.

Addititonally, this also requires the X11 window actor to schedule
timeouts for _NET_WM_FRAME_DRAWN/_NET_WM_FRAME_TIMINGS event emitting,
if the actor wasn't on any stage views, as now we'll only get the frame
callbacks on actors when they actually were painted, while in the past,
we'd invoke that vfunc when anything was painted.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/903
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1285
2020-07-02 19:36:51 +02:00
..
native clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
x11 clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
edid-parse.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
edid.h edid: Remove unused declarations 2014-09-12 11:55:08 -06:00
gsm-inhibitor-flag.h idle-monitor: Take idle inhibition into account 2018-04-16 13:28:03 +02:00
meta-backend-private.h backend: Remove unused freeze/thaw functions 2020-06-05 21:39:27 +00:00
meta-backend-types.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-backend.c clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
meta-barrier-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-barrier.c cleanup: Don't use G_TYPE_INSTANCE_GET_PRIVATE() 2019-07-18 11:01:09 +02:00
meta-crtc-mode.c crtc-kms: Make KMS CRTC mode a type inheriting MetaCrtcMode 2020-06-11 09:20:16 +00:00
meta-crtc-mode.h crtc-kms: Make KMS CRTC mode a type inheriting MetaCrtcMode 2020-06-11 09:20:16 +00:00
meta-crtc.c crtc: Move out MetaCrtcMode into its own file 2020-06-10 18:54:51 +00:00
meta-crtc.h crtc: Move out MetaCrtcMode into its own file 2020-06-10 18:54:51 +00:00
meta-cursor-renderer.c clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
meta-cursor-renderer.h cursor-renderer: Pass backend to constructor 2020-06-05 21:39:27 +00:00
meta-cursor-sprite-xcursor.c backend/xcursor: Support a "blank" cursor type 2020-05-22 14:10:50 +00:00
meta-cursor-sprite-xcursor.h cursor-renderer: Fetch instead of pass Xcursor image when realizing 2018-06-15 19:09:52 +00:00
meta-cursor-tracker-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-cursor-tracker.c backends: Replace ClutterDeviceManager usage in favor of ClutterSeat 2020-01-30 18:11:23 +01:00
meta-cursor.c cursor-sprite: Add API to get dimension 2020-03-26 16:18:28 +00:00
meta-cursor.h cursor-sprite: Add API to get dimension 2020-03-26 16:18:28 +00:00
meta-dbus-session-watcher.c dbus-session-watcher: Chain up to parent finalize() 2019-10-14 09:09:01 +02:00
meta-dbus-session-watcher.h Add remote desktop and screen cast functionality 2017-08-29 14:39:04 +08:00
meta-display-config-shared.h Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-dnd-private.h compositor: Move out X11 compositing code into sub type 2019-08-19 08:44:58 +00:00
meta-egl-ext.h EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-egl.c EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-egl.h EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-gles3-table.h backends: Add OpenGL ES 3 abstraction layer 2017-10-05 18:17:26 -04:00
meta-gles3.c Fix const qualifier usage 2019-01-22 18:31:53 +01:00
meta-gles3.h Fix const qualifier usage 2019-01-22 18:31:53 +01:00
meta-gpu.c output: Move output info to MetaOutputInfo struct 2020-06-10 18:54:50 +00:00
meta-gpu.h backend: Move GPU ownership from the monitor manager to the backend 2019-06-20 13:31:55 +00:00
meta-idle-monitor-dbus.c backends: Drop per-device idle monitors 2020-02-12 22:07:55 +00:00
meta-idle-monitor-dbus.h Start molding out a new src/backends/ dir 2014-03-31 22:11:00 -04:00
meta-idle-monitor-private.h backends: Do not use device IDs on idle monitors 2020-01-30 18:11:23 +01:00
meta-idle-monitor.c backends: Drop meta_idle_monitor_get_for_device() 2020-02-12 22:07:55 +00:00
meta-input-device-private.h backends: Add MetaInputDevice derivable class 2020-03-24 18:07:31 +00:00
meta-input-device.c backends: move 'input_device' to HAVE_LIBWACOM scope 2020-05-03 23:35:03 +01:00
meta-input-mapper-private.h backends: Check both input settings and mapper for tablet monitors 2020-03-25 19:09:32 +00:00
meta-input-mapper.c backends: Check both input settings and mapper for tablet monitors 2020-03-25 19:09:32 +00:00
meta-input-settings-private.h backends: Drop internal WacomDevice in MetaInputSettings 2020-03-24 18:07:31 +00:00
meta-input-settings.c input-settings: fix device list iteration 2020-04-11 18:59:14 +01:00
meta-keymap-utils.c compositor: use XDG_CONFIG_HOME as initial lookup path for xkb 2020-06-08 11:29:30 +00:00
meta-keymap-utils.h compositor: use XDG_CONFIG_HOME as initial lookup path for xkb 2020-06-08 11:29:30 +00:00
meta-logical-monitor.c crtc: Move MetaCrtcConfig field to instance private 2020-06-10 18:54:50 +00:00
meta-logical-monitor.h tests/test-runner: Add 'assert_size' command 2020-05-07 23:15:24 +00:00
meta-monitor-config-manager.c crtc-mode: Move away fields from public MetaCrtcMode struct 2020-06-10 18:54:51 +00:00
meta-monitor-config-manager.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-monitor-config-migration.c monitor-config-migration: Discard if configured mode is missing 2017-10-04 09:45:02 -04:00
meta-monitor-config-migration.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
meta-monitor-config-store.c monitor-config-store: Read system wide config files 2019-02-26 21:04:27 +00:00
meta-monitor-config-store.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
meta-monitor-manager-dummy.c crtc-mode: Move away fields from public MetaCrtcMode struct 2020-06-10 18:54:51 +00:00
meta-monitor-manager-dummy.h crtc: Make implementations inherit MetaCrtc 2020-06-10 18:54:51 +00:00
meta-monitor-manager-private.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-monitor-manager.c crtc-mode: Move away fields from public MetaCrtcMode struct 2020-06-10 18:54:51 +00:00
meta-monitor-transform.c monitor-transform: Add API to transform point 2020-03-26 16:18:28 +00:00
meta-monitor-transform.h crtc: Move all_transforms field into instance private 2020-06-10 18:54:50 +00:00
meta-monitor.c crtc-mode: Move away fields from public MetaCrtcMode struct 2020-06-10 18:54:51 +00:00
meta-monitor.h crtc: Move logical monitor pointer to MetaMonitor 2020-02-25 18:39:51 +01:00
meta-orientation-manager.c orientation-manager: Do not change current orientation when locked 2020-02-07 13:46:45 +01:00
meta-orientation-manager.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-output.c output: Make implementations inherit MetaOutput 2020-06-10 18:54:51 +00:00
meta-output.h output: Make implementations inherit MetaOutput 2020-06-10 18:54:51 +00:00
meta-pointer-constraint.c Add some gtk-doc comments. 2019-01-06 21:57:16 +01:00
meta-pointer-constraint.h Add some gtk-doc comments. 2019-01-06 21:57:16 +01:00
meta-profiler.c cogl: Install cogl-trace.h and include from cogl.h 2020-03-26 09:05:38 +01:00
meta-profiler.h profile: Add a Sysprof-based profiler 2019-05-31 11:57:07 -03:00
meta-remote-access-controller-private.h remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-remote-access-controller.c remote-access-controller: Make it build with -Dremote_desktop=false 2020-04-28 22:00:11 +02:00
meta-remote-desktop-session.c remote-desktop: Check for screencast only when required 2020-06-29 16:41:51 +00:00
meta-remote-desktop-session.h Add remote access controller API 2018-07-20 16:49:49 +02:00
meta-remote-desktop.c remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-remote-desktop.h remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-renderer-view.c renderer-view: Keep track of what CRTC it is associated with 2020-07-02 19:36:50 +02:00
meta-renderer-view.h renderer-view: Keep track of what CRTC it is associated with 2020-07-02 19:36:50 +02:00
meta-renderer.c clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
meta-renderer.h clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
meta-screen-cast-area-stream-src.c screen-cast: Only check queued-redraw on the relevant views 2020-07-02 19:36:50 +02:00
meta-screen-cast-area-stream-src.h screen-cast: Add RecordArea for screen cast arbitrary area 2020-04-23 14:45:53 +00:00
meta-screen-cast-area-stream.c screen-cast: Add RecordArea for screen cast arbitrary area 2020-04-23 14:45:53 +00:00
meta-screen-cast-area-stream.h screen-cast: Add RecordArea for screen cast arbitrary area 2020-04-23 14:45:53 +00:00
meta-screen-cast-monitor-stream-src.c screen-cast: Only check queued-redraw on the relevant views 2020-07-02 19:36:50 +02:00
meta-screen-cast-monitor-stream-src.h ScreenCast: Pass PipeWire stream node ID directly 2017-08-29 14:39:04 +08:00
meta-screen-cast-monitor-stream.c backend: Move GPU ownership from the monitor manager to the backend 2019-06-20 13:31:55 +00:00
meta-screen-cast-monitor-stream.h screen-cast: Add 'cursor-mode' to allow decoupled cursor updates 2019-01-16 17:09:51 +00:00
meta-screen-cast-session.c screen-cast: Add RecordArea for screen cast arbitrary area 2020-04-23 14:45:53 +00:00
meta-screen-cast-session.h screen-cast-session: Add 'disable-animations' property 2020-02-20 10:40:42 +00:00
meta-screen-cast-stream-src.c screen-cast-src: Destroy hash dmabuf table after stream 2020-06-02 18:39:23 +02:00
meta-screen-cast-stream-src.h screen-cast-stream-src: Add getter for stride 2020-04-23 14:45:53 +00:00
meta-screen-cast-stream.c screen-cast-stream: Don't broadcast PipeWireStreamAdded signal 2019-01-30 17:14:47 +00:00
meta-screen-cast-stream.h screen-cast: Add 'cursor-mode' to allow decoupled cursor updates 2019-01-16 17:09:51 +00:00
meta-screen-cast-window-stream-src.c window-stream-src: Finish framebuffer after blitting 2020-03-27 23:29:58 +00:00
meta-screen-cast-window-stream-src.h screen-cast-session: Add screen-cast window mode 2018-12-14 13:26:16 +01:00
meta-screen-cast-window-stream.c screen-cast: Fix window recording on HiDPI 2019-12-18 18:41:44 +01:00
meta-screen-cast-window-stream.h screen-cast-window-stream: Add support for cursor modes 2019-02-26 13:39:11 +00:00
meta-screen-cast-window.c window-stream-source: Draw into DMA buffer image 2020-02-28 15:52:19 -03:00
meta-screen-cast-window.h window-stream-source: Draw into DMA buffer image 2020-02-28 15:52:19 -03:00
meta-screen-cast.c remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-screen-cast.h remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-settings-private.h wayland: Add setting/api to check the policy to set up the X11 display 2019-08-06 00:41:36 +00:00
meta-settings.c settings: Improve logging of enabled experimental features 2020-02-17 17:08:21 +00:00
meta-stage-private.h stage: Pass paint context in phase callbacks 2020-04-23 14:45:53 +00:00
meta-stage.c clutter/paint-context: Add 'no-cursors' paint flag 2020-04-23 14:45:53 +00:00