0615b2376b
1. When direct scanout is attempted There's no compositing during direct scanout so the "render" time is zero. Thus there is no need to implement triple buffering for direct scanouts. Stick to double buffering and enjoy the lower latency. 2. If disabled by environment variable MUTTER_DEBUG_TRIPLE_BUFFERING With possible values {never, auto, always} where auto is the default. 3. When VRR is in use VRR calls `clutter_frame_clock_schedule_update_now` which would keep the buffer queue full, which in turn prevented direct scanout mode. Because OnscreenNative currently only supports direct scanout with double buffering. We now break that feedback loop by preventing triple buffering from being scheduled when the frame clock mode becomes variable. Long term this could also be solved by supporting triple buffering in direct scanout mode. But whether or not that would be desirable given the latency penalty remains to be seen. (cherry picked from commit 280f7f6b26cd3e7a82706d1d001419295ea15d8b) Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441> Signed-off-by: Mingi Sung <sungmg@saltyming.net> |
||
---|---|---|
.gitlab/issue_templates | ||
.gitlab-ci | ||
clutter | ||
cogl | ||
data | ||
doc | ||
meson | ||
mtk | ||
po | ||
src | ||
subprojects | ||
tools | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
check-style.py | ||
config.h.meson | ||
COPYING | ||
logo.svg | ||
meson.build | ||
meson_options.txt | ||
mutter.doap | ||
NEWS | ||
README.md |
Mutter
Mutter is a Wayland display server and X11 window manager and compositor library.
When used as a Wayland display server, it runs on top of KMS and libinput. It implements the compositor side of the Wayland core protocol as well as various protocol extensions. It also has functionality related to running X11 applications using Xwayland.
When used on top of Xorg it acts as a X11 window manager and compositing manager.
It contains functionality related to, among other things, window management, window compositing, focus tracking, workspace management, keybindings and monitor configuration.
Internally it uses a fork of Cogl, a hardware acceleration abstraction library used to simplify usage of OpenGL pipelines, as well as a fork of Clutter, a scene graph and user interface toolkit.
Mutter is used by, for example, GNOME Shell, the GNOME core user interface, and by Gala, elementary OS's window manager. It can also be run standalone, using the command "mutter", but just running plain mutter is only intended for debugging purposes.
Contributing
To contribute, open merge requests at https://gitlab.gnome.org/GNOME/mutter.
It can be useful to first look at the GNOME Handbook and the documentation and API references below first.
Documentation
- Coding style and conventions
- Git conventions
- Code overview
- Building and Running
- Debugging
- Monitor configuration
API Reference
- Meta: https://mutter.gnome.org/meta/
- Clutter: https://mutter.gnome.org/clutter/
- Cogl: https://mutter.gnome.org/cogl/
- CoglPango: https://mutter.gnome.org/cogl-pango/
- Mtk: https://mutter.gnome.org/mtk/
Meetings
There are recurring meetings to discuss development of GNOME Shell, mutter and related components.
License
Mutter is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for detalis.