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

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

Issue 468983002: Still produce quad when tile OOM and on demand raster is not allowed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: no need for fake tile manager Created 6 years, 4 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 9
10 #include "base/debug/trace_event_argument.h" 10 #include "base/debug/trace_event_argument.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 ++iter) { 274 ++iter) {
275 gfx::Rect geometry_rect = iter.geometry_rect(); 275 gfx::Rect geometry_rect = iter.geometry_rect();
276 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( 276 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect(
277 geometry_rect, scaled_draw_transform); 277 geometry_rect, scaled_draw_transform);
278 if (visible_geometry_rect.IsEmpty()) 278 if (visible_geometry_rect.IsEmpty())
279 continue; 279 continue;
280 280
281 append_quads_data->visible_content_area += 281 append_quads_data->visible_content_area +=
282 visible_geometry_rect.width() * visible_geometry_rect.height(); 282 visible_geometry_rect.width() * visible_geometry_rect.height();
283 283
284 bool has_draw_quad = false;
284 if (*iter && iter->IsReadyToDraw()) { 285 if (*iter && iter->IsReadyToDraw()) {
285 const ManagedTileState::TileVersion& tile_version = 286 const ManagedTileState::TileVersion& tile_version =
286 iter->GetTileVersionForDrawing(); 287 iter->GetTileVersionForDrawing();
287 switch (tile_version.mode()) { 288 switch (tile_version.mode()) {
288 case ManagedTileState::TileVersion::RESOURCE_MODE: { 289 case ManagedTileState::TileVersion::RESOURCE_MODE: {
289 gfx::RectF texture_rect = iter.texture_rect(); 290 gfx::RectF texture_rect = iter.texture_rect();
290 gfx::Rect opaque_rect = iter->opaque_rect(); 291 gfx::Rect opaque_rect = iter->opaque_rect();
291 opaque_rect.Intersect(geometry_rect); 292 opaque_rect.Intersect(geometry_rect);
292 293
293 if (iter->contents_scale() != ideal_contents_scale_) 294 if (iter->contents_scale() != ideal_contents_scale_)
294 append_quads_data->num_incomplete_tiles++; 295 append_quads_data->num_incomplete_tiles++;
295 296
296 TileDrawQuad* quad = 297 TileDrawQuad* quad =
297 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); 298 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
298 quad->SetNew(shared_quad_state, 299 quad->SetNew(shared_quad_state,
299 geometry_rect, 300 geometry_rect,
300 opaque_rect, 301 opaque_rect,
301 visible_geometry_rect, 302 visible_geometry_rect,
302 tile_version.get_resource_id(), 303 tile_version.get_resource_id(),
303 texture_rect, 304 texture_rect,
304 iter.texture_size(), 305 iter.texture_size(),
305 tile_version.contents_swizzled()); 306 tile_version.contents_swizzled());
307 has_draw_quad = true;
306 break; 308 break;
307 } 309 }
308 case ManagedTileState::TileVersion::PICTURE_PILE_MODE: { 310 case ManagedTileState::TileVersion::PICTURE_PILE_MODE: {
309 if (!layer_tree_impl() 311 if (!layer_tree_impl()
310 ->GetRendererCapabilities() 312 ->GetRendererCapabilities()
311 .allow_rasterize_on_demand) { 313 .allow_rasterize_on_demand) {
312 ++on_demand_missing_tile_count; 314 ++on_demand_missing_tile_count;
313 break; 315 break;
314 } 316 }
315 317
(...skipping 10 matching lines...) Expand all
326 quad->SetNew(shared_quad_state, 328 quad->SetNew(shared_quad_state,
327 geometry_rect, 329 geometry_rect,
328 opaque_rect, 330 opaque_rect,
329 visible_geometry_rect, 331 visible_geometry_rect,
330 texture_rect, 332 texture_rect,
331 iter.texture_size(), 333 iter.texture_size(),
332 format, 334 format,
333 iter->content_rect(), 335 iter->content_rect(),
334 iter->contents_scale(), 336 iter->contents_scale(),
335 pile_); 337 pile_);
338 has_draw_quad = true;
336 break; 339 break;
337 } 340 }
338 case ManagedTileState::TileVersion::SOLID_COLOR_MODE: { 341 case ManagedTileState::TileVersion::SOLID_COLOR_MODE: {
339 SolidColorDrawQuad* quad = 342 SolidColorDrawQuad* quad =
340 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 343 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
341 quad->SetNew(shared_quad_state, 344 quad->SetNew(shared_quad_state,
342 geometry_rect, 345 geometry_rect,
343 visible_geometry_rect, 346 visible_geometry_rect,
344 tile_version.get_solid_color(), 347 tile_version.get_solid_color(),
345 false); 348 false);
349 has_draw_quad = true;
346 break; 350 break;
347 } 351 }
348 } 352 }
349 } else { 353 }
354
355 if (!has_draw_quad) {
350 if (draw_checkerboard_for_missing_tiles()) { 356 if (draw_checkerboard_for_missing_tiles()) {
351 CheckerboardDrawQuad* quad = 357 CheckerboardDrawQuad* quad =
352 render_pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); 358 render_pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>();
353 SkColor color = DebugColors::DefaultCheckerboardColor(); 359 SkColor color = DebugColors::DefaultCheckerboardColor();
354 quad->SetNew( 360 quad->SetNew(
355 shared_quad_state, geometry_rect, visible_geometry_rect, color); 361 shared_quad_state, geometry_rect, visible_geometry_rect, color);
356 } else { 362 } else {
357 SkColor color = SafeOpaqueBackgroundColor(); 363 SkColor color = SafeOpaqueBackgroundColor();
358 SolidColorDrawQuad* quad = 364 SolidColorDrawQuad* quad =
359 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 365 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange(); 1695 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange();
1690 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start; 1696 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start;
1691 return tiling_range.end - 1 - current_tiling_range_offset; 1697 return tiling_range.end - 1 - current_tiling_range_offset;
1692 } 1698 }
1693 } 1699 }
1694 NOTREACHED(); 1700 NOTREACHED();
1695 return 0; 1701 return 0;
1696 } 1702 }
1697 1703
1698 } // namespace cc 1704 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layers/picture_layer_impl_unittest.cc » ('j') | cc/layers/picture_layer_impl_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698