diff options
author | jbauman <jbauman@chromium.org> | 2015-07-06 17:53:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-07 00:53:42 +0000 |
commit | 3bd7e0f50dce1e4d66027de1e7175d4f75762f8f (patch) | |
tree | d75644bf477d14b16d4fc5a426aa45f8e0c69c24 /cc/surfaces/surface_aggregator.h | |
parent | cb740d7f4bb87795be38aa3bfa527618f0e99eab (diff) | |
download | chromium_src-3bd7e0f50dce1e4d66027de1e7175d4f75762f8f.zip chromium_src-3bd7e0f50dce1e4d66027de1e7175d4f75762f8f.tar.gz chromium_src-3bd7e0f50dce1e4d66027de1e7175d4f75762f8f.tar.bz2 |
Calculate damage rects before aggregating frame data.
Walk the entire Surface tree ahead of normal aggregation to determine Surface validity and calculate damage rect. This will later allow us to avoid aggregating quads that are outside the damage rect.
BUG=490447
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1143403003
Cr-Commit-Position: refs/heads/master@{#337538}
Diffstat (limited to 'cc/surfaces/surface_aggregator.h')
-rw-r--r-- | cc/surfaces/surface_aggregator.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/cc/surfaces/surface_aggregator.h b/cc/surfaces/surface_aggregator.h index d946668..17ea4c4 100644 --- a/cc/surfaces/surface_aggregator.h +++ b/cc/surfaces/surface_aggregator.h @@ -72,14 +72,13 @@ class CC_SURFACES_EXPORT SurfaceAggregator { const ClipData& clip_rect, RenderPass* dest_pass, SurfaceId surface_id); + gfx::Rect ValidateAndCalculateDamageRect(SurfaceId surface_id); void CopyPasses(const DelegatedFrameData* frame_data, Surface* surface); // Remove Surfaces that were referenced before but aren't currently // referenced from the ResourceProvider. void RemoveUnreferencedChildren(); - bool ValidateResources(Surface* surface, - const DelegatedFrameData* frame_data); int ChildIdForSurface(Surface* surface); gfx::Rect DamageRectForSurface(const Surface* surface, const RenderPass& source, @@ -111,6 +110,9 @@ class CC_SURFACES_EXPORT SurfaceAggregator { SurfaceIndexMap previous_contained_surfaces_; SurfaceIndexMap contained_surfaces_; + // After surface validation, every Surface in this set is valid. + base::hash_set<SurfaceId> valid_surfaces_; + // This is the pass list for the aggregated frame. RenderPassList* dest_pass_list_; |