mutter/src/compositor
Daniel van Vugt d15e11bfe7 background: Shrink wallpaper using LINEAR_MIPMAP_LINEAR
Commit 8e9184b6 added filtering to avoid image jaggies when downscaling
but used `LINEAR_MIPMAP_NEAREST`. In some situations this could lead to
GL choosing a single lower resolution mipmap and then upscaling it, hence
slightly blurry.

We don't want to revert that change since it avoids aliasing jaggies, so
let's use `LINEAR_MIPMAP_LINEAR` instead. This provides the highest quality
filtering that GL can do and avoids the situation of GL using a single
mipmap that's lower resolution than the screen. Now it will blend that one
with the next mipmap which is higher resolution than the screen. This still
avoids jaggies but also maintains 1px resolution.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1105
https://gitlab.gnome.org/GNOME/mutter/merge_requests/505
2019-03-26 11:38:52 +08:00
..
plugins Drop Autotools 2019-01-10 11:50:54 -02:00
clutter-utils.c compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
clutter-utils.h compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
cogl-utils.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
cogl-utils.h Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
compositor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
compositor.c compositor: Fix maybe-uninitialized warning 2019-01-07 16:13:32 +00:00
meta-background-actor-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background-actor.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-background-group.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-background-image.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-background-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-background.c background: Shrink wallpaper using LINEAR_MIPMAP_LINEAR 2019-03-26 11:38:52 +08:00
meta-cullable.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-cullable.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-dnd-actor-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-dnd-actor.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-dnd.c Fix XDND handling to work without GDK and MetaX11Display 2018-07-06 19:47:16 +02:00
meta-feedback-actor-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-feedback-actor.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-module.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-module.h Changed obsolete FSF postal address into generic URL. 2014-01-13 11:35:47 -05:00
meta-plugin-manager.c MetaPluginManager: Don't return void value 2019-02-21 09:31:15 +01:00
meta-plugin-manager.h Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-plugin.c meta/plugin: Use G_DECLARE_DERIVABLE_TYPE 2018-11-23 14:28:37 +00:00
meta-shadow-factory.c shadow-factory: Update shadow of attached modals 2019-03-12 00:05:42 +00:00
meta-shaped-texture-private.h shaped-texture: Add support for viewports 2019-02-06 12:24:02 +00:00
meta-shaped-texture.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-surface-actor-wayland.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-wayland.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-x11.c Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor-x11.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-surface-actor.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-surface-actor.h shaped-texture: Add support for viewports 2019-02-06 12:24:02 +00:00
meta-sync-ring.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-sync-ring.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-rectangle.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-rectangle.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-tower.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-texture-tower.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-actor-private.h window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-wayland.c window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-wayland.h Add MetaWindowActorX11 and MetaWindowActorWayland 2019-01-04 09:32:51 -02:00
meta-window-actor-x11.c window-actor: Remove post_init() vfunc 2019-01-04 11:58:02 -02:00
meta-window-actor-x11.h Add MetaWindowActorX11 and MetaWindowActorWayland 2019-01-04 09:32:51 -02:00
meta-window-actor.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-window-group-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-window-group.c compositor: Make meta_actor_painting_untransformed take a framebuffer 2019-01-03 10:26:13 +00:00
meta-window-shape.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
README Document window and surface actors 2019-01-04 09:32:58 -02:00
region-utils.c region-utils: Add API to crop and scale an integer region 2019-02-06 12:24:02 +00:00
region-utils.h region-utils: Add API to crop and scale an integer region 2019-02-06 12:24:02 +00:00

Intro
=====

In general, the compositor splits the window from the contents of
the window from the shape of the window. In other words, a window
has contents, and the contents of the window have a shape. This is
represented by the actor hierarchy:

 +--------------------------------------+
 | MetaWindowActor                      |
 | +----------------------------------+ |
 | | MetaSurfaceActor                 | |
 | | +------------------------------+ | |
 | | | MetaShapedTexture            | | |
 | | |                              | | |
 | | |                              | | |
 | | |                              | | |
 | | |                              | | |
 | | +------------------------------+ | |
 | +----------------------------------+ |
 +--------------------------------------+

Surfaces may also contain subsurfaces. The MetaWindowActor and
MetaSurfaceActor subclasses that will be created depend on the client
type, and the display server type.

## Subsurfaces

Additionally, there is also the case of subsurfaces: surfaces that
are child of other surfaces. That is also represented in the actor
hierarchy by having one or many MetaSurfaceActors (the subsurfaces)
added as children of a parent MetaSurfaceActor. There are no limits
to how many subsurfaces a surface may have. With subsurfaces, the
actor hierarchy looks like this:

 MetaWindowActor
  ↳ MetaSurfaceActor (surface)
     ↳ MetaShapedTexture
     ↳ MetaSurfaceActor (subsurface)
        ↳ MetaShapedTexture
        ↳ MetaSurfaceActor (sub-subsurface)
           ↳ MetaShapedTexture
     ↳ MetaSurfaceActor (subsurface)
        ↳ MetaShapedTexture

In this example, the main surface has 2 subsurfaces. One of these
subsurfaces contains a subsurface as well.

All MetaWindowActors contain at least one MetaSurfaceActor, and all
MetaSurfaceActors contain a MetaShapedTexture.

## Client and compositor

MetaWindowActor and its subclasses represent the client window's
type. A X11 client will have a MetaWindowActorX11 representing it,
and a Wayland client will have a MetaWindowActorWayland.

On the compositor side, the surface where the contents of the window
are drawn into are represented by MetaSurfaceActor subclasses. On a
Wayland session, windows are backed by a MetaSurfaceActorWayland
surface, whereas on X11 sessions, by MetaSurfaceActorX11.

XWayland windows are X11 client windows (MetaWindowActorX11) backed
by Wayland surfaces (MetaWindowActorWayland).


Env Vars
========

MUTTER_DISABLE_MIPMAPS - set to disable use of mipmaped windows.