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

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: updated unittests 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 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 } 535 }
536 536
537 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling, 537 scoped_refptr<Tile> PictureLayerImpl::CreateTile(PictureLayerTiling* tiling,
538 const gfx::Rect& content_rect) { 538 const gfx::Rect& content_rect) {
539 if (!pile_->CanRaster(tiling->contents_scale(), content_rect)) 539 if (!pile_->CanRaster(tiling->contents_scale(), content_rect))
540 return scoped_refptr<Tile>(); 540 return scoped_refptr<Tile>();
541 541
542 int flags = 0; 542 int flags = 0;
543 if (is_using_lcd_text_) 543 if (is_using_lcd_text_)
544 flags |= Tile::USE_LCD_TEXT; 544 flags |= Tile::USE_LCD_TEXT;
545 if (use_gpu_rasterization()) 545 if (layer_tree_impl()->use_gpu_rasterization())
546 flags |= Tile::USE_GPU_RASTERIZATION; 546 flags |= Tile::USE_GPU_RASTERIZATION;
547 return layer_tree_impl()->tile_manager()->CreateTile( 547 return layer_tree_impl()->tile_manager()->CreateTile(
548 pile_.get(), 548 pile_.get(),
549 content_rect.size(), 549 content_rect.size(),
550 content_rect, 550 content_rect,
551 contents_opaque() ? content_rect : gfx::Rect(), 551 contents_opaque() ? content_rect : gfx::Rect(),
552 tiling->contents_scale(), 552 tiling->contents_scale(),
553 id(), 553 id(),
554 layer_tree_impl()->source_frame_number(), 554 layer_tree_impl()->source_frame_number(),
555 flags); 555 flags);
556 } 556 }
557 557
558 void PictureLayerImpl::UpdatePile(Tile* tile) { 558 void PictureLayerImpl::UpdatePile(Tile* tile) {
559 tile->set_picture_pile(pile_); 559 tile->set_picture_pile(pile_);
560 } 560 }
561 561
562 const Region* PictureLayerImpl::GetInvalidation() { 562 const Region* PictureLayerImpl::GetInvalidation() {
563 return &invalidation_; 563 return &invalidation_;
564 } 564 }
565 565
566 const PictureLayerTiling* PictureLayerImpl::GetTwinTiling( 566 const PictureLayerTiling* PictureLayerImpl::GetTwinTiling(
567 const PictureLayerTiling* tiling) const { 567 const PictureLayerTiling* tiling) const {
568 if (!twin_layer_ || 568 if (!twin_layer_)
569 twin_layer_->use_gpu_rasterization() != use_gpu_rasterization())
570 return NULL; 569 return NULL;
571 for (size_t i = 0; i < twin_layer_->tilings_->num_tilings(); ++i) 570 for (size_t i = 0; i < twin_layer_->tilings_->num_tilings(); ++i)
572 if (twin_layer_->tilings_->tiling_at(i)->contents_scale() == 571 if (twin_layer_->tilings_->tiling_at(i)->contents_scale() ==
573 tiling->contents_scale()) 572 tiling->contents_scale())
574 return twin_layer_->tilings_->tiling_at(i); 573 return twin_layer_->tilings_->tiling_at(i);
575 return NULL; 574 return NULL;
576 } 575 }
577 576
578 size_t PictureLayerImpl::GetMaxTilesForInterestArea() const { 577 size_t PictureLayerImpl::GetMaxTilesForInterestArea() const {
579 return layer_tree_impl()->settings().max_tiles_for_interest_area; 578 return layer_tree_impl()->settings().max_tiles_for_interest_area;
580 } 579 }
581 580
582 float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const { 581 float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const {
583 float skewport_target_time_in_frames = use_gpu_rasterization() 582 float skewport_target_time_in_frames =
584 ? kGpuSkewportTargetTimeInFrames 583 layer_tree_impl()->use_gpu_rasterization()
585 : kCpuSkewportTargetTimeInFrames; 584 ? kGpuSkewportTargetTimeInFrames
585 : kCpuSkewportTargetTimeInFrames;
586 return skewport_target_time_in_frames * 586 return skewport_target_time_in_frames *
587 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() * 587 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() *
588 layer_tree_impl()->settings().skewport_target_time_multiplier; 588 layer_tree_impl()->settings().skewport_target_time_multiplier;
589 } 589 }
590 590
591 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const { 591 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const {
592 return layer_tree_impl() 592 return layer_tree_impl()
593 ->settings() 593 ->settings()
594 .skewport_extrapolation_limit_in_content_pixels; 594 .skewport_extrapolation_limit_in_content_pixels;
595 } 595 }
596 596
597 gfx::Size PictureLayerImpl::CalculateTileSize( 597 gfx::Size PictureLayerImpl::CalculateTileSize(
598 const gfx::Size& content_bounds) const { 598 const gfx::Size& content_bounds) const {
599 if (is_mask_) { 599 if (is_mask_) {
600 int max_size = layer_tree_impl()->MaxTextureSize(); 600 int max_size = layer_tree_impl()->MaxTextureSize();
601 return gfx::Size( 601 return gfx::Size(
602 std::min(max_size, content_bounds.width()), 602 std::min(max_size, content_bounds.width()),
603 std::min(max_size, content_bounds.height())); 603 std::min(max_size, content_bounds.height()));
604 } 604 }
605 605
606 int max_texture_size = 606 int max_texture_size =
607 layer_tree_impl()->resource_provider()->max_texture_size(); 607 layer_tree_impl()->resource_provider()->max_texture_size();
608 608
609 gfx::Size default_tile_size = layer_tree_impl()->settings().default_tile_size; 609 gfx::Size default_tile_size = layer_tree_impl()->settings().default_tile_size;
610 if (use_gpu_rasterization()) { 610 if (layer_tree_impl()->use_gpu_rasterization()) {
611 // TODO(ernstm) crbug.com/365877: We need a unified way to override the 611 // TODO(ernstm) crbug.com/365877: We need a unified way to override the
612 // default-tile-size. 612 // default-tile-size.
613 default_tile_size = 613 default_tile_size =
614 gfx::Size(layer_tree_impl()->device_viewport_size().width(), 614 gfx::Size(layer_tree_impl()->device_viewport_size().width(),
615 layer_tree_impl()->device_viewport_size().height() / 4); 615 layer_tree_impl()->device_viewport_size().height() / 4);
616 } 616 }
617 default_tile_size.SetToMin(gfx::Size(max_texture_size, max_texture_size)); 617 default_tile_size.SetToMin(gfx::Size(max_texture_size, max_texture_size));
618 618
619 gfx::Size max_untiled_content_size = 619 gfx::Size max_untiled_content_size =
620 layer_tree_impl()->settings().max_untiled_layer_size; 620 layer_tree_impl()->settings().max_untiled_layer_size;
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 } 915 }
916 916
917 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { 917 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) {
918 DCHECK(CanHaveTilingWithScale(contents_scale)) << 918 DCHECK(CanHaveTilingWithScale(contents_scale)) <<
919 "contents_scale: " << contents_scale; 919 "contents_scale: " << contents_scale;
920 920
921 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale); 921 PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale);
922 922
923 DCHECK(pile_->HasRecordings()); 923 DCHECK(pile_->HasRecordings());
924 924
925 if (twin_layer_ && 925 if (twin_layer_)
926 twin_layer_->use_gpu_rasterization() == use_gpu_rasterization())
927 twin_layer_->SyncTiling(tiling); 926 twin_layer_->SyncTiling(tiling);
928 927
929 return tiling; 928 return tiling;
930 } 929 }
931 930
932 void PictureLayerImpl::RemoveTiling(float contents_scale) { 931 void PictureLayerImpl::RemoveTiling(float contents_scale) {
933 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 932 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
934 PictureLayerTiling* tiling = tilings_->tiling_at(i); 933 PictureLayerTiling* tiling = tilings_->tiling_at(i);
935 if (tiling->contents_scale() == contents_scale) { 934 if (tiling->contents_scale() == contents_scale) {
936 tilings_->Remove(tiling); 935 tilings_->Remove(tiling);
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue); 1319 scoped_ptr<base::DictionaryValue> tile_data(new base::DictionaryValue);
1321 tile_data->Set("geometry_rect", 1320 tile_data->Set("geometry_rect",
1322 MathUtil::AsValue(iter.geometry_rect()).release()); 1321 MathUtil::AsValue(iter.geometry_rect()).release());
1323 if (*iter) 1322 if (*iter)
1324 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release()); 1323 tile_data->Set("tile", TracedValue::CreateIDRef(*iter).release());
1325 1324
1326 coverage_tiles->Append(tile_data.release()); 1325 coverage_tiles->Append(tile_data.release());
1327 } 1326 }
1328 state->Set("coverage_tiles", coverage_tiles.release()); 1327 state->Set("coverage_tiles", coverage_tiles.release());
1329 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_); 1328 state->SetBoolean("is_using_lcd_text", is_using_lcd_text_);
1330 state->SetBoolean("using_gpu_rasterization", use_gpu_rasterization());
alokp 2014/05/16 20:08:28 nduca: would removing this require any changes to
1331 } 1329 }
1332 1330
1333 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { 1331 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const {
1334 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded(); 1332 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
1335 return tilings_->GPUMemoryUsageInBytes(); 1333 return tilings_->GPUMemoryUsageInBytes();
1336 } 1334 }
1337 1335
1338 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { 1336 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) {
1339 benchmark->RunOnLayer(this); 1337 benchmark->RunOnLayer(this);
1340 } 1338 }
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 return iterator_index_ < iterators_.size(); 1561 return iterator_index_ < iterators_.size();
1564 } 1562 }
1565 1563
1566 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( 1564 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType(
1567 PictureLayerTiling::TilingEvictionTileIterator* it) const { 1565 PictureLayerTiling::TilingEvictionTileIterator* it) const {
1568 return it->get_type() == iteration_stage_ && 1566 return it->get_type() == iteration_stage_ &&
1569 (**it)->required_for_activation() == required_for_activation_; 1567 (**it)->required_for_activation() == required_for_activation_;
1570 } 1568 }
1571 1569
1572 } // namespace cc 1570 } // 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