| OLD | NEW |
| 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 <cmath> | 8 #include <cmath> |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 gfx::Rect quad_content_rect = shared_quad_state->visible_content_rect; | 201 gfx::Rect quad_content_rect = shared_quad_state->visible_content_rect; |
| 202 gfx::Size texture_size = quad_content_rect.size(); | 202 gfx::Size texture_size = quad_content_rect.size(); |
| 203 gfx::RectF texture_rect = gfx::RectF(texture_size); | 203 gfx::RectF texture_rect = gfx::RectF(texture_size); |
| 204 | 204 |
| 205 PictureDrawQuad* quad = | 205 PictureDrawQuad* quad = |
| 206 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 206 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 207 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, | 207 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, |
| 208 visible_geometry_rect, texture_rect, texture_size, | 208 visible_geometry_rect, texture_rect, texture_size, |
| 209 nearest_neighbor_, RGBA_8888, quad_content_rect, | 209 nearest_neighbor_, RGBA_8888, quad_content_rect, |
| 210 max_contents_scale, raster_source_); | 210 max_contents_scale, raster_source_); |
| 211 ValidateQuadResources(quad); |
| 211 return; | 212 return; |
| 212 } | 213 } |
| 213 | 214 |
| 214 AppendDebugBorderQuad(render_pass, shared_quad_state->content_bounds, | 215 AppendDebugBorderQuad(render_pass, shared_quad_state->content_bounds, |
| 215 shared_quad_state, append_quads_data); | 216 shared_quad_state, append_quads_data); |
| 216 | 217 |
| 217 if (ShowDebugBorders()) { | 218 if (ShowDebugBorders()) { |
| 218 for (PictureLayerTilingSet::CoverageIterator iter( | 219 for (PictureLayerTilingSet::CoverageIterator iter( |
| 219 tilings_.get(), max_contents_scale, | 220 tilings_.get(), max_contents_scale, |
| 220 shared_quad_state->visible_content_rect, ideal_contents_scale_); | 221 shared_quad_state->visible_content_rect, ideal_contents_scale_); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 // the best the layer can promise in the future, consider those as | 299 // the best the layer can promise in the future, consider those as |
| 299 // complete. But if a tile is ideal scale, we don't want to consider | 300 // complete. But if a tile is ideal scale, we don't want to consider |
| 300 // it incomplete and trying to replace it with a tile at a worse | 301 // it incomplete and trying to replace it with a tile at a worse |
| 301 // scale. | 302 // scale. |
| 302 if (iter->contents_scale() != raster_contents_scale_ && | 303 if (iter->contents_scale() != raster_contents_scale_ && |
| 303 iter->contents_scale() != ideal_contents_scale_ && | 304 iter->contents_scale() != ideal_contents_scale_ && |
| 304 geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { | 305 geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { |
| 305 append_quads_data->num_incomplete_tiles++; | 306 append_quads_data->num_incomplete_tiles++; |
| 306 } | 307 } |
| 307 | 308 |
| 308 // TODO(danakj): crbug.com/455931 | |
| 309 layer_tree_impl()->resource_provider()->ValidateResource( | |
| 310 draw_info.resource_id()); | |
| 311 TileDrawQuad* quad = | 309 TileDrawQuad* quad = |
| 312 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); | 310 render_pass->CreateAndAppendDrawQuad<TileDrawQuad>(); |
| 313 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, | 311 quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, |
| 314 visible_geometry_rect, draw_info.resource_id(), | 312 visible_geometry_rect, draw_info.resource_id(), |
| 315 texture_rect, draw_info.resource_size(), | 313 texture_rect, draw_info.resource_size(), |
| 316 draw_info.contents_swizzled(), nearest_neighbor_); | 314 draw_info.contents_swizzled(), nearest_neighbor_); |
| 315 ValidateQuadResources(quad); |
| 317 has_draw_quad = true; | 316 has_draw_quad = true; |
| 318 break; | 317 break; |
| 319 } | 318 } |
| 320 case TileDrawInfo::SOLID_COLOR_MODE: { | 319 case TileDrawInfo::SOLID_COLOR_MODE: { |
| 321 SolidColorDrawQuad* quad = | 320 SolidColorDrawQuad* quad = |
| 322 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 321 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 323 quad->SetNew(shared_quad_state, geometry_rect, visible_geometry_rect, | 322 quad->SetNew(shared_quad_state, geometry_rect, visible_geometry_rect, |
| 324 draw_info.solid_color(), false); | 323 draw_info.solid_color(), false); |
| 324 ValidateQuadResources(quad); |
| 325 has_draw_quad = true; | 325 has_draw_quad = true; |
| 326 break; | 326 break; |
| 327 } | 327 } |
| 328 case TileDrawInfo::OOM_MODE: | 328 case TileDrawInfo::OOM_MODE: |
| 329 break; // Checkerboard. | 329 break; // Checkerboard. |
| 330 } | 330 } |
| 331 } | 331 } |
| 332 | 332 |
| 333 if (!has_draw_quad) { | 333 if (!has_draw_quad) { |
| 334 if (draw_checkerboard_for_missing_tiles()) { | 334 if (draw_checkerboard_for_missing_tiles()) { |
| 335 CheckerboardDrawQuad* quad = | 335 CheckerboardDrawQuad* quad = |
| 336 render_pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 336 render_pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); |
| 337 SkColor color = DebugColors::DefaultCheckerboardColor(); | 337 SkColor color = DebugColors::DefaultCheckerboardColor(); |
| 338 quad->SetNew(shared_quad_state, geometry_rect, visible_geometry_rect, | 338 quad->SetNew(shared_quad_state, geometry_rect, visible_geometry_rect, |
| 339 color, draw_properties().device_scale_factor); | 339 color, draw_properties().device_scale_factor); |
| 340 } else { | 340 } else { |
| 341 SkColor color = SafeOpaqueBackgroundColor(); | 341 SkColor color = SafeOpaqueBackgroundColor(); |
| 342 SolidColorDrawQuad* quad = | 342 SolidColorDrawQuad* quad = |
| 343 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 343 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 344 quad->SetNew(shared_quad_state, | 344 quad->SetNew(shared_quad_state, |
| 345 geometry_rect, | 345 geometry_rect, |
| 346 visible_geometry_rect, | 346 visible_geometry_rect, |
| 347 color, | 347 color, |
| 348 false); | 348 false); |
| 349 ValidateQuadResources(quad); |
| 349 } | 350 } |
| 350 | 351 |
| 351 if (geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { | 352 if (geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { |
| 352 append_quads_data->num_missing_tiles++; | 353 append_quads_data->num_missing_tiles++; |
| 353 ++missing_tile_count; | 354 ++missing_tile_count; |
| 354 } | 355 } |
| 355 append_quads_data->approximated_visible_content_area += | 356 append_quads_data->approximated_visible_content_area += |
| 356 visible_geometry_rect.width() * visible_geometry_rect.height(); | 357 visible_geometry_rect.width() * visible_geometry_rect.height(); |
| 357 append_quads_data->checkerboarded_visible_content_area += | 358 append_quads_data->checkerboarded_visible_content_area += |
| 358 visible_geometry_rect.width() * visible_geometry_rect.height(); | 359 visible_geometry_rect.width() * visible_geometry_rect.height(); |
| (...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1251 | 1252 |
| 1252 bool PictureLayerImpl::IsOnActiveOrPendingTree() const { | 1253 bool PictureLayerImpl::IsOnActiveOrPendingTree() const { |
| 1253 return !layer_tree_impl()->IsRecycleTree(); | 1254 return !layer_tree_impl()->IsRecycleTree(); |
| 1254 } | 1255 } |
| 1255 | 1256 |
| 1256 bool PictureLayerImpl::HasValidTilePriorities() const { | 1257 bool PictureLayerImpl::HasValidTilePriorities() const { |
| 1257 return IsOnActiveOrPendingTree() && IsDrawnRenderSurfaceLayerListMember(); | 1258 return IsOnActiveOrPendingTree() && IsDrawnRenderSurfaceLayerListMember(); |
| 1258 } | 1259 } |
| 1259 | 1260 |
| 1260 } // namespace cc | 1261 } // namespace cc |
| OLD | NEW |