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

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

Issue 12865017: Makes tile-creation lazy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
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 "base/time.h" 7 #include "base/time.h"
8 #include "cc/base/math_util.h" 8 #include "cc/base/math_util.h"
9 #include "cc/base/util.h" 9 #include "cc/base/util.h"
10 #include "cc/debug/debug_colors.h" 10 #include "cc/debug/debug_colors.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 layer_impl->SetIsMask(is_mask_); 74 layer_impl->SetIsMask(is_mask_);
75 layer_impl->TransferTilingSet(tilings_.Pass()); 75 layer_impl->TransferTilingSet(tilings_.Pass());
76 layer_impl->pile_ = pile_; 76 layer_impl->pile_ = pile_;
77 pile_ = PicturePileImpl::Create(); 77 pile_ = PicturePileImpl::Create();
78 78
79 layer_impl->raster_page_scale_ = raster_page_scale_; 79 layer_impl->raster_page_scale_ = raster_page_scale_;
80 layer_impl->raster_device_scale_ = raster_device_scale_; 80 layer_impl->raster_device_scale_ = raster_device_scale_;
81 layer_impl->raster_source_scale_ = raster_source_scale_; 81 layer_impl->raster_source_scale_ = raster_source_scale_;
82 } 82 }
83 83
84
85 void PictureLayerImpl::AppendQuads(QuadSink* quadSink, 84 void PictureLayerImpl::AppendQuads(QuadSink* quadSink,
86 AppendQuadsData* appendQuadsData) { 85 AppendQuadsData* appendQuadsData) {
87 const gfx::Rect& rect = visible_content_rect(); 86 const gfx::Rect& rect = visible_content_rect();
88 gfx::Rect content_rect(content_bounds()); 87 gfx::Rect content_rect(content_bounds());
89 88
90 SharedQuadState* sharedQuadState = 89 SharedQuadState* sharedQuadState =
91 quadSink->UseSharedQuadState(CreateSharedQuadState()); 90 quadSink->UseSharedQuadState(CreateSharedQuadState());
92 AppendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); 91 AppendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData);
93 92
94 bool clipped = false; 93 bool clipped = false;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 *contents_scale_y = max_contents_scale; 312 *contents_scale_y = max_contents_scale;
314 *content_bounds = gfx::ToCeiledSize( 313 *content_bounds = gfx::ToCeiledSize(
315 gfx::ScaleSize(bounds(), max_contents_scale, max_contents_scale)); 314 gfx::ScaleSize(bounds(), max_contents_scale, max_contents_scale));
316 } 315 }
317 316
318 skia::RefPtr<SkPicture> PictureLayerImpl::GetPicture() { 317 skia::RefPtr<SkPicture> PictureLayerImpl::GetPicture() {
319 return pile_->GetFlattenedPicture(); 318 return pile_->GetFlattenedPicture();
320 } 319 }
321 320
322 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling, 321 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling,
323 gfx::Rect content_rect) { 322 const gfx::Rect& content_rect,
enne (OOO) 2013/03/27 16:16:27 No. Please stay consistent with passing rect by v
whunt 2013/03/27 17:42:02 I'll switch it back but the policy needs to be cha
enne (OOO) 2013/03/27 18:03:20 I'm aware of your doc. This is outside the scope
323 const gfx::Rect& paint_rect) {
324 if (!pile_->CanRaster(tiling->contents_scale(), content_rect)) 324 if (!pile_->CanRaster(tiling->contents_scale(), content_rect))
325 return scoped_refptr<Tile>(); 325 return scoped_refptr<Tile>();
326 326
327 return make_scoped_refptr(new Tile( 327 return make_scoped_refptr(new Tile(
328 layer_tree_impl()->tile_manager(), 328 layer_tree_impl()->tile_manager(),
329 pile_.get(), 329 pile_.get(),
330 content_rect.size(), 330 content_rect.size(),
331 GL_RGBA, 331 GL_RGBA,
332 content_rect, 332 content_rect,
333 paint_rect,
333 contents_opaque() ? content_rect : gfx::Rect(), 334 contents_opaque() ? content_rect : gfx::Rect(),
334 tiling->contents_scale(), 335 tiling->contents_scale(),
335 id())); 336 id()));
336 } 337 }
337 338
338 void PictureLayerImpl::UpdatePile(Tile* tile) { 339 void PictureLayerImpl::UpdatePile(Tile* tile) {
339 tile->set_picture_pile(pile_); 340 tile->set_picture_pile(pile_);
340 } 341 }
341 342
343 const Region* PictureLayerImpl::GetInvalidation() {
344 return &invalidation_;
345 }
346
347 const PictureLayerTiling* PictureLayerImpl::GetSibling(
348 const PictureLayerTiling* tiling) {
349
350 const PictureLayerImpl* other_layer = layer_tree_impl()->IsActiveTree() ?
351 PendingTwin() : ActiveTwin();
352 if (!other_layer)
353 return NULL;
354 for (size_t i = 0; i < other_layer->tilings_->num_tilings(); ++i)
355 if (other_layer->tilings_->tiling_at(i)->contents_scale() ==
356 tiling->contents_scale())
357 return other_layer->tilings_->tiling_at(i);
358 return NULL;
359 }
360
342 gfx::Size PictureLayerImpl::CalculateTileSize( 361 gfx::Size PictureLayerImpl::CalculateTileSize(
343 gfx::Size current_tile_size, 362 gfx::Size current_tile_size,
344 gfx::Size content_bounds) { 363 gfx::Size content_bounds) {
345 if (is_mask_) { 364 if (is_mask_) {
346 int max_size = layer_tree_impl()->MaxTextureSize(); 365 int max_size = layer_tree_impl()->MaxTextureSize();
347 return gfx::Size( 366 return gfx::Size(
348 std::min(max_size, content_bounds.width()), 367 std::min(max_size, content_bounds.width()),
349 std::min(max_size, content_bounds.height())); 368 std::min(max_size, content_bounds.height()));
350 } 369 }
351 370
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 scoped_ptr<base::Value> PictureLayerImpl::AsValue() const { 820 scoped_ptr<base::Value> PictureLayerImpl::AsValue() const {
802 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 821 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
803 LayerImpl::AsValueInto(state.get()); 822 LayerImpl::AsValueInto(state.get());
804 823
805 state->SetDouble("ideal_contents_scale", ideal_contents_scale_); 824 state->SetDouble("ideal_contents_scale", ideal_contents_scale_);
806 state->Set("tilings", tilings_->AsValue().release()); 825 state->Set("tilings", tilings_->AsValue().release());
807 return state.PassAs<base::Value>(); 826 return state.PassAs<base::Value>();
808 } 827 }
809 828
810 } // namespace cc 829 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698