| 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;
|
|
|