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

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

Issue 290573007: cc: Move gpu rasterization flag from tree-impl to tree-host-impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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
« no previous file with comments | « cc/layers/picture_layer_impl.h ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/time/time.h" 10 #include "base/time/time.h"
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 } 532 }
533 533
534 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling, 534 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling,
535 const gfx::Rect& content_rect) { 535 const gfx::Rect& content_rect) {
536 if (!pile_->CanRaster(tiling->contents_scale(), content_rect)) 536 if (!pile_->CanRaster(tiling->contents_scale(), content_rect))
537 return scoped_refptr<Tile>(); 537 return scoped_refptr<Tile>();
538 538
539 int flags = 0; 539 int flags = 0;
540 if (is_using_lcd_text_) 540 if (is_using_lcd_text_)
541 flags |= Tile::USE_LCD_TEXT; 541 flags |= Tile::USE_LCD_TEXT;
542 if (use_gpu_rasterization()) 542 if (layer_tree_impl()->use_gpu_rasterization())
543 flags |= Tile::USE_GPU_RASTERIZATION; 543 flags |= Tile::USE_GPU_RASTERIZATION;
544 return layer_tree_impl()->tile_manager()->CreateTile( 544 return layer_tree_impl()->tile_manager()->CreateTile(
545 pile_.get(), 545 pile_.get(),
546 content_rect.size(), 546 content_rect.size(),
547 content_rect, 547 content_rect,
548 contents_opaque() ? content_rect : gfx::Rect(), 548 contents_opaque() ? content_rect : gfx::Rect(),
549 tiling->contents_scale(), 549 tiling->contents_scale(),
550 id(), 550 id(),
551 layer_tree_impl()->source_frame_number(), 551 layer_tree_impl()->source_frame_number(),
552 flags); 552 flags);
553 } 553 }
554 554
555 void PictureLayerImpl::UpdatePile(Tile* tile) { 555 void PictureLayerImpl::UpdatePile(Tile* tile) {
556 tile->set_picture_pile(pile_); 556 tile->set_picture_pile(pile_);
557 } 557 }
558 558
559 const Region* PictureLayerImpl::GetInvalidation() { 559 const Region* PictureLayerImpl::GetInvalidation() {
560 return &invalidation_; 560 return &invalidation_;
561 } 561 }
562 562
563 const PictureLayerTiling* PictureLayerImpl::GetTwinTiling( 563 const PictureLayerTiling* PictureLayerImpl::GetTwinTiling(
564 const PictureLayerTiling* tiling) const { 564 const PictureLayerTiling* tiling) const {
565 if (!twin_layer_ || 565 if (!twin_layer_)
566 twin_layer_->use_gpu_rasterization() != use_gpu_rasterization())
567 return NULL; 566 return NULL;
568 for (size_t i = 0; i < twin_layer_->tilings_->num_tilings(); ++i) 567 for (size_t i = 0; i < twin_layer_->tilings_->num_tilings(); ++i)
569 if (twin_layer_->tilings_->tiling_at(i)->contents_scale() == 568 if (twin_layer_->tilings_->tiling_at(i)->contents_scale() ==
570 tiling->contents_scale()) 569 tiling->contents_scale())
571 return twin_layer_->tilings_->tiling_at(i); 570 return twin_layer_->tilings_->tiling_at(i);
572 return NULL; 571 return NULL;
573 } 572 }
574 573
575 size_t PictureLayerImpl::GetMaxTilesForInterestArea() const { 574 size_t PictureLayerImpl::GetMaxTilesForInterestArea() const {
576 return layer_tree_impl()->settings().max_tiles_for_interest_area; 575 return layer_tree_impl()->settings().max_tiles_for_interest_area;
577 } 576 }
578 577
579 float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const { 578 float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const {
580 float skewport_target_time_in_frames = use_gpu_rasterization() 579 float skewport_target_time_in_frames =
581 ? kGpuSkewportTargetTimeInFrames 580 layer_tree_impl()->use_gpu_rasterization()
582 : kCpuSkewportTargetTimeInFrames; 581 ? kGpuSkewportTargetTimeInFrames
582 : kCpuSkewportTargetTimeInFrames;
583 return skewport_target_time_in_frames * 583 return skewport_target_time_in_frames *
584 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() * 584 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() *
585 layer_tree_impl()->settings().skewport_target_time_multiplier; 585 layer_tree_impl()->settings().skewport_target_time_multiplier;
586 } 586 }
587 587
588 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const { 588 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const {
589 return layer_tree_impl() 589 return layer_tree_impl()
590 ->settings() 590 ->settings()
591 .skewport_extrapolation_limit_in_content_pixels; 591 .skewport_extrapolation_limit_in_content_pixels;
592 } 592 }
593 593
594 gfx::Size PictureLayerImpl::CalculateTileSize( 594 gfx::Size PictureLayerImpl::CalculateTileSize(
595 const gfx::Size& content_bounds) const { 595 const gfx::Size& content_bounds) const {
596 if (is_mask_) { 596 if (is_mask_) {
597 int max_size = layer_tree_impl()->MaxTextureSize(); 597 int max_size = layer_tree_impl()->MaxTextureSize();
598 return gfx::Size( 598 return gfx::Size(
599 std::min(max_size, content_bounds.width()), 599 std::min(max_size, content_bounds.width()),
600 std::min(max_size, content_bounds.height())); 600 std::min(max_size, content_bounds.height()));
601 } 601 }
602 602
603 int max_texture_size = 603 int max_texture_size =
604 layer_tree_impl()->resource_provider()->max_texture_size(); 604 layer_tree_impl()->resource_provider()->max_texture_size();
605 605
606 gfx::Size default_tile_size = layer_tree_impl()->settings().default_tile_size; 606 gfx::Size default_tile_size = layer_tree_impl()->settings().default_tile_size;
607 if (use_gpu_rasterization()) { 607 if (layer_tree_impl()->use_gpu_rasterization()) {
608 // TODO(ernstm) crbug.com/365877: We need a unified way to override the 608 // TODO(ernstm) crbug.com/365877: We need a unified way to override the
609 // default-tile-size. 609 // default-tile-size.
610 default_tile_size = 610 default_tile_size =
611 gfx::Size(layer_tree_impl()->device_viewport_size().width(), 611 gfx::Size(layer_tree_impl()->device_viewport_size().width(),
612 layer_tree_impl()->device_viewport_size().height() / 4); 612 layer_tree_impl()->device_viewport_size().height() / 4);
613 } 613 }
614 default_tile_size.SetToMin(gfx::Size(max_texture_size, max_texture_size)); 614 default_tile_size.SetToMin(gfx::Size(max_texture_size, max_texture_size));
615 615
616 gfx::Size max_untiled_content_size = 616 gfx::Size max_untiled_content_size =
617 layer_tree_impl()->settings().max_untiled_layer_size; 617 layer_tree_impl()->settings().max_untiled_layer_size;
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 } 924 }
925 925
926 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { 926 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) {
927 DCHECK(CanHaveTilingWithScale(contents_scale)) << 927 DCHECK(CanHaveTilingWithScale(contents_scale)) <<
928 "contents_scale: " << contents_scale; 928 "contents_scale: " << contents_scale;
929 929
930 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale); 930 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale);
931 931
932 DCHECK(pile_->HasRecordings()); 932 DCHECK(pile_->HasRecordings());
933 933
934 if (twin_layer_ && 934 if (twin_layer_)
935 twin_layer_->use_gpu_rasterization() == use_gpu_rasterization())
936 twin_layer_->SyncTiling(tiling); 935 twin_layer_->SyncTiling(tiling);
937 936
938 return tiling; 937 return tiling;
939 } 938 }
940 939
941 void PictureLayerImpl::RemoveTiling(float contents_scale) { 940 void PictureLayerImpl::RemoveTiling(float contents_scale) {
942 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 941 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
943 PictureLayerTiling* tiling = tilings_->tiling_at(i); 942 PictureLayerTiling* tiling = tilings_->tiling_at(i);
944 if (tiling->contents_scale() == contents_scale) { 943 if (tiling->contents_scale() == contents_scale) {
945 tilings_->Remove(tiling); 944 tilings_->Remove(tiling);
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue); 1328 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue);
1330 tile_data->Set("geometry_rect", 1329 tile_data->Set("geometry_rect",
1331 MathUtil::AsValue(iter.geometry_rect()).release()); 1330 MathUtil::AsValue(iter.geometry_rect()).release());
1332 if (*iter) 1331 if (*iter)
1333 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release()); 1332 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release());
1334 1333
1335 coverage_tiles->Append(tile_data.release()); 1334 coverage_tiles->Append(tile_data.release());
1336 } 1335 }
1337 state->Set("coverage_tiles", coverage_tiles.release()); 1336 state->Set("coverage_tiles", coverage_tiles.release());
1338 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_); 1337 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_);
1339 state->SetBoolean("using_gpu_rasterization", use_gpu_rasterization());
1340 } 1338 }
1341 1339
1342 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { 1340 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const {
1343 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded(); 1341 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
1344 return tilings_->GPUMemoryUsageInBytes(); 1342 return tilings_->GPUMemoryUsageInBytes();
1345 } 1343 }
1346 1344
1347 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { 1345 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) {
1348 benchmark->RunOnLayer(this); 1346 benchmark->RunOnLayer(this);
1349 } 1347 }
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1572 return iterator_index_ < iterators_.size(); 1570 return iterator_index_ < iterators_.size();
1573 } 1571 }
1574 1572
1575 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( 1573 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType(
1576 PictureLayerTiling::TilingEvictionTileIterator* it) const { 1574 PictureLayerTiling::TilingEvictionTileIterator* it) const {
1577 return it->get_type() == iteration_stage_ && 1575 return it->get_type() == iteration_stage_ &&
1578 (**it)->required_for_activation() == required_for_activation_; 1576 (**it)->required_for_activation() == required_for_activation_;
1579 } 1577 }
1580 1578
1581 } // namespace cc 1579 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.h ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698