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

Unified Diff: cc/playback/raster_source.cc

Issue 1854513002: cc: Add RasterSource::PlaybackSettings for finer control of raster. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/playback/raster_source.h ('k') | cc/playback/raster_source_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/playback/raster_source.cc
diff --git a/cc/playback/raster_source.cc b/cc/playback/raster_source.cc
index 93e987b983f6223b0881639e501484fabc2f3a8e..ab0fd5a333269e4e56a1d4e113166c48b28174cf 100644
--- a/cc/playback/raster_source.cc
+++ b/cc/playback/raster_source.cc
@@ -86,52 +86,27 @@ RasterSource::~RasterSource() {
this);
}
-void RasterSource::PlaybackToSharedCanvas(SkCanvas* raster_canvas,
- const gfx::Rect& canvas_rect,
- float contents_scale,
- bool include_images) const {
- // TODO(vmpstr): This can be improved by plumbing whether the tile itself has
- // discardable images. This way we would only pay for the hijack canvas if the
- // tile actually needed it.
- if (!include_images) {
- SkipImageCanvas canvas(raster_canvas);
- RasterCommon(&canvas, nullptr, canvas_rect, canvas_rect, contents_scale);
- } else if (display_list_->MayHaveDiscardableImages()) {
- const SkImageInfo& info = raster_canvas->imageInfo();
- ImageHijackCanvas canvas(info.width(), info.height(),
- image_decode_controller_);
- canvas.addCanvas(raster_canvas);
-
- RasterCommon(&canvas, nullptr, canvas_rect, canvas_rect, contents_scale);
- } else {
- RasterCommon(raster_canvas, nullptr, canvas_rect, canvas_rect,
- contents_scale);
- }
-}
-
-void RasterSource::RasterForAnalysis(skia::AnalysisCanvas* canvas,
- const gfx::Rect& canvas_rect,
- float contents_scale) const {
- RasterCommon(canvas, canvas, canvas_rect, canvas_rect, contents_scale);
-}
-
void RasterSource::PlaybackToCanvas(SkCanvas* raster_canvas,
const gfx::Rect& canvas_bitmap_rect,
const gfx::Rect& canvas_playback_rect,
float contents_scale,
- bool include_images) const {
- PrepareForPlaybackToCanvas(raster_canvas, canvas_bitmap_rect,
- canvas_playback_rect, contents_scale);
+ const PlaybackSettings& settings) const {
+ if (!settings.playback_to_shared_canvas) {
+ PrepareForPlaybackToCanvas(raster_canvas, canvas_bitmap_rect,
+ canvas_playback_rect, contents_scale);
+ }
- if (!include_images) {
+ if (settings.skip_images) {
SkipImageCanvas canvas(raster_canvas);
RasterCommon(&canvas, nullptr, canvas_bitmap_rect, canvas_playback_rect,
contents_scale);
- } else if (display_list_->MayHaveDiscardableImages()) {
+ } else if (settings.use_image_hijack_canvas &&
+ display_list_->MayHaveDiscardableImages()) {
const SkImageInfo& info = raster_canvas->imageInfo();
ImageHijackCanvas canvas(info.width(), info.height(),
image_decode_controller_);
canvas.addCanvas(raster_canvas);
+
RasterCommon(&canvas, nullptr, canvas_bitmap_rect, canvas_playback_rect,
contents_scale);
} else {
@@ -282,7 +257,7 @@ bool RasterSource::PerformSolidColorAnalysis(const gfx::Rect& content_rect,
layer_rect.Intersect(gfx::Rect(size_));
skia::AnalysisCanvas canvas(layer_rect.width(), layer_rect.height());
- RasterForAnalysis(&canvas, layer_rect, 1.0f);
+ RasterCommon(&canvas, &canvas, layer_rect, layer_rect, 1.0f);
return canvas.GetColorIfSolid(color);
}
@@ -373,4 +348,9 @@ bool RasterSource::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
return true;
}
+RasterSource::PlaybackSettings::PlaybackSettings()
+ : playback_to_shared_canvas(false),
+ skip_images(false),
+ use_image_hijack_canvas(true) {}
+
} // namespace cc
« no previous file with comments | « cc/playback/raster_source.h ('k') | cc/playback/raster_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698