Commit c1684b5c authored by Florin Malita's avatar Florin Malita Committed by Chromium LUCI CQ

SkiaRenderer/CopyOutput: avoid bicubic filtering for identity scale

Only use kHigh_SkFilterQuality when actually upscaling.  For identity
scale, bicubic filtering is unnecessarily expensive and changes the
output (not a no-op).

Note: Skia used to catch the identity case and downgrade to
kMedium_SkFilterQuality internally.  That behavior is being removed, and
this CL unblocks
https://chromium-review.googlesource.com/c/chromium/src/+/2562751/12.

Bug: skia:7650
Change-Id: If72511c690df8ad010fe3bd730d1bf81ecfb2958
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2566777Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Reviewed-by: default avatarMike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Cr-Commit-Position: refs/heads/master@{#832451}
parent 7bc21edc
......@@ -750,10 +750,10 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutput(
// For downscaling, use the GOOD quality setting (appropriate for
// thumbnailing); and, for upscaling, use the BEST quality.
bool is_downscale_in_both_dimensions =
request->scale_to().x() < request->scale_from().x() &&
request->scale_to().y() < request->scale_from().y();
SkFilterQuality filter_quality = is_downscale_in_both_dimensions
bool is_downscale_or_identity_in_both_dimensions =
request->scale_to().x() <= request->scale_from().x() &&
request->scale_to().y() <= request->scale_from().y();
SkFilterQuality filter_quality = is_downscale_or_identity_in_both_dimensions
? kMedium_SkFilterQuality
: kHigh_SkFilterQuality;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment