mutter/src/compositor
Jonas Ådahl 9d0f612de1 shaped-texture: Paint with the right layer snippet
When we get passed a "snippet" to the shaped texture, it's added as a
pipeline layer snippet to change how the source texture is sampled. When
we draw from a texture tower however we have allocated regular textures
which doesn't need any special layer snippet, so create separate
pipelines for those that doesn't use that snippet.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/528
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2278>
2022-04-07 07:28:44 +00:00
..
plugins plugins/default: Fix broken switch_workspace() 2022-01-06 16:49:25 +00:00
clutter-utils.c
clutter-utils.h
cogl-utils.c
cogl-utils.h
compositor-private.h backends/x11: Update MetaBackend on ClutterEvent processing 2022-02-08 14:34:47 +00:00
compositor.c backends/x11: Update MetaBackend on ClutterEvent processing 2022-02-08 14:34:47 +00:00
meta-background-actor-private.h
meta-background-actor.c
meta-background-content-private.h
meta-background-content.c background-content: Anti-alias texels that intersect the circle boundary 2021-11-24 15:55:20 +00:00
meta-background-group.c meta: Make MetaBackgroundGroup derivable 2019-06-24 13:49:31 +00:00
meta-background-image.c background-image: Properly clear the failed to be filled texture pointer 2021-08-31 08:25:32 +00:00
meta-background-private.h
meta-background.c
meta-compositor-native.c compositor/native: Check that the surface can be scanned out untransformed 2022-03-05 14:14:37 +00:00
meta-compositor-native.h
meta-compositor-server.c compositor: Destroy actors when unmanaging 2022-02-07 17:52:05 +00:00
meta-compositor-server.h
meta-compositor-x11.c backends/x11: Update MetaBackend on ClutterEvent processing 2022-02-08 14:34:47 +00:00
meta-compositor-x11.h
meta-cullable.c
meta-cullable.h
meta-dnd-actor-private.h
meta-dnd-actor.c compositor/dnd-actor: Take geometry scale into account on DnD-cancel 2021-02-05 09:51:56 +00:00
meta-dnd.c dnd: Notify about events during compositor grab from event filter 2022-03-02 15:12:23 +00:00
meta-feedback-actor-private.h feedback-actor: Add API to set and get geometry scale 2021-02-05 09:51:56 +00:00
meta-feedback-actor.c feedback-actor: Add API to set and get geometry scale 2021-02-05 09:51:56 +00:00
meta-later-private.h laters: Expose MetaLaters publicly 2022-02-07 17:52:05 +00:00
meta-later.c laters: Expose MetaLaters publicly 2022-02-07 17:52:05 +00:00
meta-module.c
meta-module.h
meta-plugin-manager.c compositor/plugin-manager: Split start() from new() 2022-01-25 15:15:13 +01:00
meta-plugin-manager.h compositor/plugin-manager: Split start() from new() 2022-01-25 15:15:13 +01:00
meta-plugin.c compositor: Remove meta_plugin_begin/end_modal 2022-01-29 02:11:37 +01:00
meta-shadow-factory.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-shaped-texture-private.h shaped-texture: Fix code style issue 2022-01-03 14:11:54 +01:00
meta-shaped-texture.c shaped-texture: Paint with the right layer snippet 2022-04-07 07:28:44 +00:00
meta-surface-actor-wayland.c compositor/native: Track what Wayland surface is a scanout candidate 2022-01-05 16:36:48 +00:00
meta-surface-actor-wayland.h compositor: Some header cleanups 2022-03-05 14:14:37 +00:00
meta-surface-actor-x11.c surface-actor-x11: Fix code style issue 2022-01-03 14:12:01 +01:00
meta-surface-actor-x11.h surface-actor: Remove 'pre-paint' vfunc 2020-07-02 19:36:51 +02:00
meta-surface-actor.c surface-actor: Fix unobscurred_fraction calculation 2021-12-19 23:46:11 +01:00
meta-surface-actor.h surface-actor: Remove get_image() function 2021-08-28 13:59:52 +02:00
meta-sync-ring.c
meta-sync-ring.h
meta-texture-tower.c shaped-texture: Pass along the snippet to the texture tower 2022-04-07 07:28:44 +00:00
meta-texture-tower.h shaped-texture: Pass along the snippet to the texture tower 2022-04-07 07:28:44 +00:00
meta-window-actor-private.h compositor: Some header cleanups 2022-03-05 14:14:37 +00:00
meta-window-actor-wayland.c window-actor: Add API to get the topmost surface actor 2022-01-07 18:54:27 +00:00
meta-window-actor-wayland.h compositor: Some header cleanups 2022-03-05 14:14:37 +00:00
meta-window-actor-x11.c window-actor/x11: Don't cache the frame-drawn frame clock 2021-08-22 17:06:53 +00:00
meta-window-actor-x11.h
meta-window-actor.c window-actor: Add API to get the topmost surface actor 2022-01-07 18:54:27 +00:00
meta-window-group-private.h
meta-window-group.c window-group: Disable culling when rendering to non-stage-view buffer 2022-01-03 11:20:50 +00:00
meta-window-shape.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
README
region-utils.c region-utils: Fix typo in crop_and_scale() fastpath 2021-03-29 15:17:48 +00:00
region-utils.h

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.