Commit 246fda09 authored by Mike Reed's avatar Mike Reed Committed by Chromium LUCI CQ

Pass sampling options to async readback

Bug: skia:7650
Change-Id: Iaf0c83d593ab6a11164373cc9a858d6795c6c093
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2613144
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#842041}
parent 145bd277
......@@ -769,9 +769,10 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutput(
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;
SkSurface::RescaleMode rescale_mode =
is_downscale_or_identity_in_both_dimensions
? SkSurface::RescaleMode::kRepeatedLinear
: SkSurface::RescaleMode::kRepeatedCubic;
// Compute |source_selection| as a workaround to support |result_selection|
// with Skia readback. |result_selection| is a clip rect specified in the
......@@ -808,7 +809,7 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutput(
surface->asyncRescaleAndReadPixelsYUV420(
kRec709_SkYUVColorSpace, SkColorSpace::MakeSRGB(), src_rect,
{geometry.result_selection.width(), geometry.result_selection.height()},
SkSurface::RescaleGamma::kSrc, filter_quality, &OnYUVReadbackDone,
SkSurface::RescaleGamma::kSrc, rescale_mode, &OnYUVReadbackDone,
context.release());
} else if (request->result_format() ==
CopyOutputRequest::ResultFormat::RGBA_BITMAP) {
......@@ -834,7 +835,7 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutput(
// ReadbackCompleted is called immediately.
num_readbacks_pending_++;
surface->asyncRescaleAndReadPixels(
dst_info, src_rect, SkSurface::RescaleGamma::kSrc, filter_quality,
dst_info, src_rect, SkSurface::RescaleGamma::kSrc, rescale_mode,
&OnRGBAReadbackDone, context.release());
} else if (request->result_format() ==
CopyOutputRequest::ResultFormat::RGBA_TEXTURE) {
......@@ -878,7 +879,9 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutput(
}
SkPaint paint;
paint.setFilterQuality(filter_quality);
paint.setFilterQuality(is_downscale_or_identity_in_both_dimensions
? kMedium_SkFilterQuality
: kHigh_SkFilterQuality);
dest_canvas->clipRect(
SkRect::MakeXYWH(0, 0, src_rect.width(), src_rect.height()));
surface->draw(dest_canvas, -src_rect.x(), -src_rect.y(), &paint);
......
......@@ -233,10 +233,6 @@ SK_API void SkDebugf_FileLine(const char* file,
#define GR_OP_ALLOCATE_USE_NEW
#endif
#ifndef SK_SUPPORT_LEGACY_ASYNCRESCALE_QUALITY
#define SK_SUPPORT_LEGACY_ASYNCRESCALE_QUALITY
#endif
#ifndef SK_SUPPORT_LEGACY_IMPLICIT_FILTERQUALITY
#define SK_SUPPORT_LEGACY_IMPLICIT_FILTERQUALITY
#endif
......
......@@ -169,7 +169,7 @@ VideoFrame* VideoFrame::Create(ScriptState* script_state,
sk_image->asyncRescaleAndReadPixelsYUV420(
kRec709_SkYUVColorSpace, sk_color_space, src_rect,
{source->width(), source->height()}, SkImage::RescaleGamma::kSrc,
kHigh_SkFilterQuality, &OnYUVReadbackDone, &result);
SkImage::RescaleMode::kRepeatedCubic, &OnYUVReadbackDone, &result);
GrDirectContext* gr_context =
source->BitmapImage()->ContextProvider()->GetGrContext();
DCHECK(gr_context);
......
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