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

Side by Side Diff: cc/layers/picture_layer_impl.cc

Issue 576173003: cc: Move UnoccludedContentRect to Occlusion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 gfx::Transform scaled_draw_transform = draw_transform(); 154 gfx::Transform scaled_draw_transform = draw_transform();
155 scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale, 155 scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale,
156 SK_MScalar1 / max_contents_scale); 156 SK_MScalar1 / max_contents_scale);
157 gfx::Size scaled_content_bounds = 157 gfx::Size scaled_content_bounds =
158 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale)); 158 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale));
159 159
160 gfx::Rect scaled_visible_content_rect = 160 gfx::Rect scaled_visible_content_rect =
161 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); 161 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale);
162 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); 162 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds));
163 163
164 Occlusion occlusion =
165 occlusion_tracker.GetCurrentOcclusionForLayer(scaled_draw_transform);
166
164 SharedQuadState* shared_quad_state = 167 SharedQuadState* shared_quad_state =
165 render_pass->CreateAndAppendSharedQuadState(); 168 render_pass->CreateAndAppendSharedQuadState();
166 shared_quad_state->SetAll(scaled_draw_transform, 169 shared_quad_state->SetAll(scaled_draw_transform,
167 scaled_content_bounds, 170 scaled_content_bounds,
168 scaled_visible_content_rect, 171 scaled_visible_content_rect,
169 draw_properties().clip_rect, 172 draw_properties().clip_rect,
170 draw_properties().is_clipped, 173 draw_properties().is_clipped,
171 draw_properties().opacity, 174 draw_properties().opacity,
172 blend_mode(), 175 blend_mode(),
173 sorting_context_id_); 176 sorting_context_id_);
174 177
175 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { 178 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) {
176 AppendDebugBorderQuad( 179 AppendDebugBorderQuad(
177 render_pass, 180 render_pass,
178 scaled_content_bounds, 181 scaled_content_bounds,
179 shared_quad_state, 182 shared_quad_state,
180 append_quads_data, 183 append_quads_data,
181 DebugColors::DirectPictureBorderColor(), 184 DebugColors::DirectPictureBorderColor(),
182 DebugColors::DirectPictureBorderWidth(layer_tree_impl())); 185 DebugColors::DirectPictureBorderWidth(layer_tree_impl()));
183 186
184 gfx::Rect geometry_rect = scaled_visible_content_rect; 187 gfx::Rect geometry_rect = scaled_visible_content_rect;
185 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); 188 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
186 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( 189 gfx::Rect visible_geometry_rect =
187 geometry_rect, scaled_draw_transform); 190 occlusion.GetUnoccludedContentRect(geometry_rect);
188 if (visible_geometry_rect.IsEmpty()) 191 if (visible_geometry_rect.IsEmpty())
189 return; 192 return;
190 193
191 gfx::Size texture_size = scaled_visible_content_rect.size(); 194 gfx::Size texture_size = scaled_visible_content_rect.size();
192 gfx::RectF texture_rect = gfx::RectF(texture_size); 195 gfx::RectF texture_rect = gfx::RectF(texture_size);
193 gfx::Rect quad_content_rect = scaled_visible_content_rect; 196 gfx::Rect quad_content_rect = scaled_visible_content_rect;
194 197
195 PictureDrawQuad* quad = 198 PictureDrawQuad* quad =
196 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); 199 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
197 quad->SetNew(shared_quad_state, 200 quad->SetNew(shared_quad_state,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 size_t missing_tile_count = 0u; 275 size_t missing_tile_count = 0u;
273 size_t on_demand_missing_tile_count = 0u; 276 size_t on_demand_missing_tile_count = 0u;
274 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(), 277 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(),
275 max_contents_scale, 278 max_contents_scale,
276 scaled_visible_content_rect, 279 scaled_visible_content_rect,
277 ideal_contents_scale_); 280 ideal_contents_scale_);
278 iter; 281 iter;
279 ++iter) { 282 ++iter) {
280 gfx::Rect geometry_rect = iter.geometry_rect(); 283 gfx::Rect geometry_rect = iter.geometry_rect();
281 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); 284 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
282 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( 285 gfx::Rect visible_geometry_rect =
283 geometry_rect, scaled_draw_transform); 286 occlusion.GetUnoccludedContentRect(geometry_rect);
284 if (visible_geometry_rect.IsEmpty()) 287 if (visible_geometry_rect.IsEmpty())
285 continue; 288 continue;
286 289
287 append_quads_data->visible_content_area += 290 append_quads_data->visible_content_area +=
288 visible_geometry_rect.width() * visible_geometry_rect.height(); 291 visible_geometry_rect.width() * visible_geometry_rect.height();
289 292
290 bool has_draw_quad = false; 293 bool has_draw_quad = false;
291 if (*iter && iter->IsReadyToDraw()) { 294 if (*iter && iter->IsReadyToDraw()) {
292 const ManagedTileState::TileVersion& tile_version = 295 const ManagedTileState::TileVersion& tile_version =
293 iter->GetTileVersionForDrawing(); 296 iter->GetTileVersionForDrawing();
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after
1758 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange(); 1761 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange();
1759 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start; 1762 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start;
1760 return tiling_range.end - 1 - current_tiling_range_offset; 1763 return tiling_range.end - 1 - current_tiling_range_offset;
1761 } 1764 }
1762 } 1765 }
1763 NOTREACHED(); 1766 NOTREACHED();
1764 return 0; 1767 return 0;
1765 } 1768 }
1766 1769
1767 } // namespace cc 1770 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698