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

Unified Diff: cc/playback/display_list_raster_source.cc

Issue 1839143004: Limit image filtering during scale animations 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/display_list_raster_source.h ('k') | cc/playback/image_hijack_canvas.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/playback/display_list_raster_source.cc
diff --git a/cc/playback/display_list_raster_source.cc b/cc/playback/display_list_raster_source.cc
index 970648fbade4d25790a02b26f342a4002f9c5c62..0a8469b8783fe026bb2914996e091a90b247c828 100644
--- a/cc/playback/display_list_raster_source.cc
+++ b/cc/playback/display_list_raster_source.cc
@@ -47,7 +47,8 @@ DisplayListRasterSource::DisplayListRasterSource(
slow_down_raster_scale_factor_for_debug_(
other->slow_down_raster_scale_factor_for_debug_),
should_attempt_to_use_distance_field_text_(false),
- image_decode_controller_(nullptr) {
+ image_decode_controller_(nullptr),
+ image_scaling_optimization_(ImageScalingOptimization::Static) {
// In certain cases, ThreadTaskRunnerHandle isn't set (Android Webview).
// Don't register a dump provider in these cases.
// TODO(ericrk): Get this working in Android Webview. crbug.com/517156
@@ -107,8 +108,12 @@ void DisplayListRasterSource::PlaybackToSharedCanvas(
RasterCommon(&canvas, nullptr, canvas_rect, canvas_rect, contents_scale);
} else if (display_list_->MayHaveDiscardableImages()) {
const SkImageInfo& info = raster_canvas->imageInfo();
+ const SkFilterQuality max_quality =
+ image_scaling_optimization_ == ImageScalingOptimization::Static
+ ? kHigh_SkFilterQuality
+ : kMedium_SkFilterQuality;
ImageHijackCanvas canvas(info.width(), info.height(),
- image_decode_controller_);
+ image_decode_controller_, max_quality);
canvas.addCanvas(raster_canvas);
RasterCommon(&canvas, nullptr, canvas_rect, canvas_rect, contents_scale);
@@ -139,8 +144,12 @@ void DisplayListRasterSource::PlaybackToCanvas(
contents_scale);
} else if (display_list_->MayHaveDiscardableImages()) {
const SkImageInfo& info = raster_canvas->imageInfo();
+ const SkFilterQuality max_quality =
+ image_scaling_optimization_ == ImageScalingOptimization::Static
+ ? kHigh_SkFilterQuality
+ : kMedium_SkFilterQuality;
ImageHijackCanvas canvas(info.width(), info.height(),
- image_decode_controller_);
+ image_decode_controller_, max_quality);
canvas.addCanvas(raster_canvas);
RasterCommon(&canvas, nullptr, canvas_bitmap_rect, canvas_playback_rect,
contents_scale);
@@ -371,6 +380,11 @@ void DisplayListRasterSource::SetImageDecodeController(
image_decode_controller_ = image_decode_controller;
}
+void DisplayListRasterSource::SetImageScalingOptimization(
+ ImageScalingOptimization opt) {
+ image_scaling_optimization_ = opt;
+}
+
bool DisplayListRasterSource::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* pmd) {
« no previous file with comments | « cc/playback/display_list_raster_source.h ('k') | cc/playback/image_hijack_canvas.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698