skia2/experimental/sksg
Florin Malita c75e2401a8 [sksg] Refine invalidation logic
We need to discriminate between nodes whose bounds updates contribute to the dirty
region, and nodes whose bounds changes do not.

E.g. animated shape in a group: the animated shape node bounds should yield damage,
but the ancestor group bounds should not.

To accomplish this, we refine the invalidation state:

  1) self invalidation == the node itself was invalidated, and its bounds updates
     yield damage.
  2) descendant invalidation == the node has some (self-)invalidated descendant,
     but its own bounds are not contributing damage.

Also:

  * hoist the bounding box invalidation logic into the base class (Node::revalidate)
    and update to respect the states described above.
  * remove (now-redundant) GeometryNode bbox logic.
  * update revalidation methods to return the node bbox instead of void

TBR=
Change-Id: I8023d1793fb501c945a53f2dc2d2983e5b620ade
Reviewed-on: https://skia-review.googlesource.com/90581
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-01-04 00:59:20 +00:00
..
effects [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
geometry [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
paint [sksg] Refactor stroke logic 2017-12-29 17:12:11 +00:00
SkSGDraw.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGDraw.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGEffectNode.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGEffectNode.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGGeometryNode.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGGeometryNode.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGGroup.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGGroup.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGInvalidationController.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGInvalidationController.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGNode.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGNode.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGPaintNode.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGPaintNode.h [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGRenderNode.cpp [sksg] Refine invalidation logic 2018-01-04 00:59:20 +00:00
SkSGRenderNode.h