summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/surface_aggregator.h
diff options
context:
space:
mode:
authorjbauman <jbauman@chromium.org>2015-07-06 17:53:04 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-07 00:53:42 +0000
commit3bd7e0f50dce1e4d66027de1e7175d4f75762f8f (patch)
treed75644bf477d14b16d4fc5a426aa45f8e0c69c24 /cc/surfaces/surface_aggregator.h
parentcb740d7f4bb87795be38aa3bfa527618f0e99eab (diff)
downloadchromium_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.h6
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_;