mutter/clutter
Robert Bragg b499696d83 Use paint volumes to do automatic culling
This uses actor paint volumes to perform culling during
clutter_actor_paint.

When performing a clipped redraw (because only a few localized actors
changed) then as we traverse the scenegraph painting the actors we can
now ignore actors that don't intersect the clip region. Early testing
shows this can have a big performance benefit; e.g. 100% fps improvement
for test-state with culling enabled and we hope that there are even much
more compelling examples than that in the real world,

Most Clutter applications are 2Dish interfaces and have quite a lot of
actors that get continuously painted when anything is animated. The
dynamic actors are often localized to an area of user focus though so
with culling we can completely avoid painting any of the static actors
outside the current clip region.

Obviously the cost of culling has to be offset against the cost of
painting to determine if it's a win, but our (limited) testing suggests
it should be a win for most applications.

Note: we hope we will be able to also bring another performance bump
from culling with another iteration - hopefully in the 1.6 cycle - to
avoid doing the culling in screen space and instead do it in the stage's
model space. This will hopefully let us minimize the cost of
transforming the actor volumes for culling.
2010-09-29 15:12:58 +01:00
..
cally cally: Do not use deprecated functions 2010-09-29 14:13:51 +01:00
cogl material: Don't prune ancestry if it owns some layers 2010-09-24 00:12:14 +01:00
egl Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
fruity Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
glx Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
json json: Allow NULL as a value for strings, arrays and objects 2010-09-25 20:23:41 +01:00
osx Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
win32 Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
x11 Queue clipped redraws work in terms of paint volumes 2010-09-29 15:12:57 +01:00
clutter-action.c
clutter-action.h
clutter-actor-meta-private.h
clutter-actor-meta.c docs: Add sub-classing notes on ActorMeta and Constraint 2010-09-17 14:54:31 +01:00
clutter-actor-meta.h
clutter-actor.c Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
clutter-actor.h Queue clipped redraws work in terms of paint volumes 2010-09-29 15:12:57 +01:00
clutter-align-constraint.c constraint: Re-implement using update_allocation() 2010-09-17 12:17:50 +01:00
clutter-align-constraint.h Remove trailin enum commas, avoiding C++ warnings. 2010-09-13 15:45:55 +01:00
clutter-alpha.c docs: Fixes for gtk-doc 2010-09-03 16:12:24 +01:00
clutter-alpha.h
clutter-animatable.c
clutter-animatable.h
clutter-animation.c animation: Allow detaching an animation from an actor 2010-09-10 11:18:53 +01:00
clutter-animation.h animation: Allow detaching an animation from an actor 2010-09-10 11:18:53 +01:00
clutter-animator.c animator: Code style fixes 2010-09-29 11:44:46 +01:00
clutter-animator.h
clutter-backend.c Try to clean up how we handle actor transformations 2010-09-13 18:18:34 +01:00
clutter-backend.h Constify Event accessors and copy method 2010-09-08 15:15:57 +01:00
clutter-behaviour-depth.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-depth.h
clutter-behaviour-ellipse.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-ellipse.h
clutter-behaviour-opacity.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-opacity.h
clutter-behaviour-path.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-path.h
clutter-behaviour-rotate.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-rotate.h
clutter-behaviour-scale.c Added documentation for alpha parameter in Behaviour constructors. 2010-09-09 16:34:21 +01:00
clutter-behaviour-scale.h
clutter-behaviour.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-behaviour.h
clutter-bezier.c
clutter-bezier.h
clutter-bin-layout.c
clutter-bin-layout.h
clutter-bind-constraint.c constraint: Re-implement using update_allocation() 2010-09-17 12:17:50 +01:00
clutter-bind-constraint.h constraint: Re-implement using update_allocation() 2010-09-17 12:17:50 +01:00
clutter-binding-pool.c
clutter-binding-pool.h
clutter-blur-effect.c blur-effect: fix paint volume padding 2010-09-29 15:12:57 +01:00
clutter-blur-effect.h effect: Add BlurEffect 2010-06-03 14:10:55 +01:00
clutter-box-layout.c box-layout: Small cleanups 2010-09-22 14:22:23 +01:00
clutter-box-layout.h
clutter-box.c introspection: Add annotations 2010-09-03 12:14:50 +01:00
clutter-box.h
clutter-cairo-texture.c introspection: Add missing (out) annotations 2010-09-08 15:43:07 +01:00
clutter-cairo-texture.h
clutter-child-meta.c
clutter-child-meta.h
clutter-click-action.c click-action: Add get_button() 2010-08-26 16:39:39 +01:00
clutter-click-action.h click-action: Add get_button() 2010-08-26 16:39:39 +01:00
clutter-clone.c clone: scale src with apply_transform not cogl_scale 2010-09-13 18:18:35 +01:00
clutter-clone.h
clutter-color.c Add caller-allocates annotations 2010-09-08 17:04:21 +01:00
clutter-color.h
clutter-colorize-effect.c effects: Make sure we're using GLSL 1.10 2010-09-21 13:32:31 +01:00
clutter-colorize-effect.h
clutter-constraint.c docs: Add sub-classing notes on ActorMeta and Constraint 2010-09-17 14:54:31 +01:00
clutter-constraint.h constraint: Add ::update_allocation() 2010-09-17 12:17:50 +01:00
clutter-container.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-container.h
clutter-debug.h Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
clutter-deform-effect.c Replace cogl_color_set_from_* with cogl_color_init_from_* 2010-09-03 16:58:47 +01:00
clutter-deform-effect.h
clutter-deprecated.h
clutter-desaturate-effect.c effects: Make sure we're using GLSL 1.10 2010-09-21 13:32:31 +01:00
clutter-desaturate-effect.h
clutter-device-manager.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-device-manager.h
clutter-drag-action.c docs: Fix the name of the parameters 2010-09-15 16:12:56 +01:00
clutter-drag-action.h drag-action: Added x-drag-threshold and y-drag-threshold properties 2010-09-07 10:40:49 +01:00
clutter-effect.c paint volumes: another pass at the design 2010-09-29 15:12:57 +01:00
clutter-effect.h paint volumes: another pass at the design 2010-09-29 15:12:57 +01:00
clutter-enum-types.c.in
clutter-enum-types.h.in
clutter-event.c Constify Event accessors and copy method 2010-09-08 15:15:57 +01:00
clutter-event.h Remove trailin enum commas, avoiding C++ warnings. 2010-09-13 15:45:55 +01:00
clutter-feature.c
clutter-feature.h
clutter-fixed-layout.c
clutter-fixed-layout.h
clutter-fixed.c Add caller-allocates annotations 2010-09-08 17:04:21 +01:00
clutter-fixed.h
clutter-flow-layout.c flow-layout: Blow the cached preferred size if needed 2010-09-17 12:43:23 +01:00
clutter-flow-layout.h
clutter-frame-source.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-frame-source.h
clutter-group.c paint volumes: another pass at the design 2010-09-29 15:12:57 +01:00
clutter-group.h
clutter-id-pool.c
clutter-id-pool.h 2008-10-30 Emmanuele Bassi <ebassi@linux.intel.com> 2008-10-30 17:04:34 +00:00
clutter-input-device.c
clutter-input-device.h
clutter-interval.c Add caller-allocates annotations 2010-09-08 17:04:21 +01:00
clutter-interval.h
clutter-json.h.in
clutter-keysyms-compat.h keysyms: Update the macros to CLUTTER_KEY_* 2010-09-10 17:54:52 +01:00
clutter-keysyms-table.h
clutter-keysyms-update.pl keysyms: Update the macros to CLUTTER_KEY_* 2010-09-10 17:54:52 +01:00
clutter-keysyms.h keysyms: Update the macros to CLUTTER_KEY_* 2010-09-10 17:54:52 +01:00
clutter-layout-manager.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-layout-manager.h
clutter-layout-meta.c
clutter-layout-meta.h
clutter-list-model.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-list-model.h
clutter-main.c Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
clutter-main.h
clutter-marshal.list drag-action: Remove the press event button 2010-06-12 17:45:54 +01:00
clutter-master-clock.c
clutter-master-clock.h
clutter-media.c
clutter-media.h
clutter-model-private.h
clutter-model.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-model.h
clutter-offscreen-effect.c paint volumes: another pass at the design 2010-09-29 15:12:57 +01:00
clutter-offscreen-effect.h offscreen-effect: Rename create_target to create_buffer 2010-09-01 18:05:53 +01:00
clutter-page-turn-effect.c Replace cogl_color_set_from_* with cogl_color_init_from_* 2010-09-03 16:58:47 +01:00
clutter-page-turn-effect.h
clutter-path.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-path.h
clutter-private.h Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
clutter-profile.c profile: Update to uprof-0.3 dep for --enable-profile 2010-09-14 12:43:16 +01:00
clutter-profile.h profile: Update to uprof-0.3 dep for --enable-profile 2010-09-14 12:43:16 +01:00
clutter-rectangle.c
clutter-rectangle.h
clutter-score.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-score.h
clutter-script-parser.c introspection: Add missing (out) annotations 2010-09-08 15:43:07 +01:00
clutter-script-private.h
clutter-script.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-script.h
clutter-scriptable.c
clutter-scriptable.h
clutter-settings.c
clutter-settings.h
clutter-shader-effect.c Remove last uses of cogl_program_uniform* 2010-08-12 17:08:26 +01:00
clutter-shader-effect.h
clutter-shader-types.c
clutter-shader-types.h
clutter-shader.c introspection: Add annotations 2010-09-03 12:14:50 +01:00
clutter-shader.h
clutter-stage-manager.c Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-stage-manager.h
clutter-stage-window.c
clutter-stage-window.h Further annotation fixes 2010-09-08 16:41:47 +01:00
clutter-stage.c Use paint volumes to do automatic culling 2010-09-29 15:12:58 +01:00
clutter-stage.h
clutter-state.c docs: Description fixes for State.set_animator() 2010-09-20 14:31:53 +01:00
clutter-state.h
clutter-table-layout.c table-layout: Invert row/column in arguments 2010-09-23 15:17:58 +01:00
clutter-table-layout.h table-layout: Invert row/column in arguments 2010-09-23 15:17:58 +01:00
clutter-text.c keysyms: Update the macros to CLUTTER_KEY_* 2010-09-10 17:54:52 +01:00
clutter-text.h
clutter-texture.c texture: Forward queue redraw/relayout for fbos 2010-09-29 15:12:57 +01:00
clutter-texture.h
clutter-timeline.c introspection: Add annotations 2010-09-03 12:14:50 +01:00
clutter-timeline.h
clutter-timeout-interval.c
clutter-timeout-interval.h
clutter-timeout-pool.c
clutter-timeout-pool.h docs: API reference fixes 2010-09-20 13:15:44 +01:00
clutter-types.h paint volumes: another pass at the design 2010-09-29 15:12:57 +01:00
clutter-units.c Add caller-allocates annotations 2010-09-08 17:04:21 +01:00
clutter-units.h
clutter-util.c
clutter-util.h
clutter-version.h.in
clutter.h
Makefile.am introspection: Build ClutterJson before Clutter 2010-09-21 13:17:51 +01:00