Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1701)

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 2402583005: Split picture layer quads to allow removing more occluded area. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/painted_scrollbar_layer_impl_unittest.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index f7d061fb701745dd1aa39546375fb59a66ed33bd..f9a13bf12174d9a90ecb2d01732e9fe4ecedd957 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -362,14 +362,18 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
geometry_rect.Intersects(scaled_viewport_for_tile_priority)) {
append_quads_data->num_incomplete_tiles++;
}
-
- TileDrawQuad* quad =
- render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
- quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
- visible_geometry_rect, draw_info.resource_id(),
- texture_rect, draw_info.resource_size(),
- draw_info.contents_swizzled(), nearest_neighbor_);
- ValidateQuadResources(quad);
+ Region unoccluded_region(visible_geometry_rect);
+ scaled_occlusion.OccludeContentRegion(&unoccluded_region);
+ for (Region::Iterator iterator(unoccluded_region);
+ iterator.has_rect(); iterator.next()) {
+ TileDrawQuad* quad =
+ render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
+ quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
+ iterator.rect(), draw_info.resource_id(), texture_rect,
+ draw_info.resource_size(),
+ draw_info.contents_swizzled(), nearest_neighbor_);
+ ValidateQuadResources(quad);
+ }
has_draw_quad = true;
break;
}
@@ -379,11 +383,16 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
shared_quad_state->opacity;
if (mask_type_ == Layer::LayerMaskType::MULTI_TEXTURE_MASK ||
alpha >= std::numeric_limits<float>::epsilon()) {
- SolidColorDrawQuad* quad =
- render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
- quad->SetNew(shared_quad_state, geometry_rect,
- visible_geometry_rect, draw_info.solid_color(), false);
- ValidateQuadResources(quad);
+ Region unoccluded_region(visible_geometry_rect);
+ scaled_occlusion.OccludeContentRegion(&unoccluded_region);
+ for (Region::Iterator iterator(unoccluded_region);
+ iterator.has_rect(); iterator.next()) {
+ SolidColorDrawQuad* quad =
+ render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
+ quad->SetNew(shared_quad_state, geometry_rect, iterator.rect(),
+ draw_info.solid_color(), false);
+ ValidateQuadResources(quad);
+ }
}
has_draw_quad = true;
break;
« no previous file with comments | « cc/layers/painted_scrollbar_layer_impl_unittest.cc ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698