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 |