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

Side by Side Diff: cc/resources/tile_manager.cc

Issue 213093003: cc: Skip analysis for narrow layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 14 matching lines...) Expand all
25 #include "third_party/skia/include/core/SkPixelRef.h" 25 #include "third_party/skia/include/core/SkPixelRef.h"
26 #include "ui/gfx/rect_conversions.h" 26 #include "ui/gfx/rect_conversions.h"
27 27
28 namespace cc { 28 namespace cc {
29 namespace { 29 namespace {
30 30
31 // Flag to indicate whether we should try and detect that 31 // Flag to indicate whether we should try and detect that
32 // a tile is of solid color. 32 // a tile is of solid color.
33 const bool kUseColorEstimator = true; 33 const bool kUseColorEstimator = true;
34 34
35 // Minimum width/height of a pile that would require analysis for tiles.
36 const int kMinSizeToAnalyze = 256;
alokp 2014/03/27 05:20:45 kMinLengthToAnalyze?
vmpstr 2014/03/27 17:02:53 Done.
37
35 class DisableLCDTextFilter : public SkDrawFilter { 38 class DisableLCDTextFilter : public SkDrawFilter {
36 public: 39 public:
37 // SkDrawFilter interface. 40 // SkDrawFilter interface.
38 virtual bool filter(SkPaint* paint, SkDrawFilter::Type type) OVERRIDE { 41 virtual bool filter(SkPaint* paint, SkDrawFilter::Type type) OVERRIDE {
39 if (type != SkDrawFilter::kText_Type) 42 if (type != SkDrawFilter::kText_Type)
40 return true; 43 return true;
41 44
42 paint->setLCDRenderText(false); 45 paint->setLCDRenderText(false);
43 return true; 46 return true;
44 } 47 }
(...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 CreateImageDecodeTask(tile, pixel_ref); 1159 CreateImageDecodeTask(tile, pixel_ref);
1157 decode_tasks.push_back(decode_task); 1160 decode_tasks.push_back(decode_task);
1158 existing_pixel_refs[id] = decode_task; 1161 existing_pixel_refs[id] = decode_task;
1159 } 1162 }
1160 1163
1161 // We analyze picture before rasterization to detect solid-color tiles. 1164 // We analyze picture before rasterization to detect solid-color tiles.
1162 // If the tile is detected as such there is no need to raster or upload. 1165 // If the tile is detected as such there is no need to raster or upload.
1163 // It is drawn directly as a solid-color quad saving raster and upload cost. 1166 // It is drawn directly as a solid-color quad saving raster and upload cost.
1164 // The analysis step is however expensive and is not justified when doing 1167 // The analysis step is however expensive and is not justified when doing
1165 // gpu rasterization where there is no upload. 1168 // gpu rasterization where there is no upload.
1166 bool analyze_picture = !tile->use_gpu_rasterization(); 1169 //
1170 // Additionally, we do not want to do the analysis if the layer that produced
1171 // this tile is narrow, since more likely than not the tile would not be
alokp 2014/03/27 05:20:45 I do not get the connection between the tile being
vmpstr 2014/03/27 17:02:53 It definitely doesn't mean that it's not solid, bu
alokp 2014/03/27 17:45:16 I understand that it is just a heuristic and I am
1172 // solid.
1173 gfx::Size pile_size = tile->picture_pile()->size();
1174 bool analyze_picture =
1175 !tile->use_gpu_rasterization() &&
1176 std::min(pile_size.width(), pile_size.height()) >= kMinSizeToAnalyze;
1167 1177
1168 return make_scoped_refptr(new RasterWorkerPoolTaskImpl( 1178 return make_scoped_refptr(new RasterWorkerPoolTaskImpl(
1169 const_resource, 1179 const_resource,
1170 tile->picture_pile(), 1180 tile->picture_pile(),
1171 tile->content_rect(), 1181 tile->content_rect(),
1172 tile->contents_scale(), 1182 tile->contents_scale(),
1173 mts.raster_mode, 1183 mts.raster_mode,
1174 mts.resolution, 1184 mts.resolution,
1175 tile->layer_id(), 1185 tile->layer_id(),
1176 static_cast<const void*>(tile), 1186 static_cast<const void*>(tile),
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 } 1340 }
1331 } 1341 }
1332 } 1342 }
1333 1343
1334 TileManager::PairedPictureLayer::PairedPictureLayer() 1344 TileManager::PairedPictureLayer::PairedPictureLayer()
1335 : active_layer(NULL), pending_layer(NULL) {} 1345 : active_layer(NULL), pending_layer(NULL) {}
1336 1346
1337 TileManager::PairedPictureLayer::~PairedPictureLayer() {} 1347 TileManager::PairedPictureLayer::~PairedPictureLayer() {}
1338 1348
1339 } // namespace cc 1349 } // namespace cc
OLDNEW
« cc/resources/picture_pile_impl.cc ('K') | « cc/resources/picture_pile_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698