Commit 80399580 authored by Brian Ho's avatar Brian Ho Committed by Commit Bot

SkiaRenderer: Fix RGBA_TEXTURE copy scaling

This CL fixes a bug where SkiaRenderer was improperly interpreting
the scaling from CopyOutputRequests. For example, if we want to
scale from 2 -> 1, we should shrink the SkCanvas by invoking
canvas->scale(0.5, 0.5). Currently, SkiaRenderer inverts the
operands so we actually end up zooming with a scale factor of 2.

Also, this CL removes an extraneous `makeImageSnapshot` that I
used for debugging but forgot to remove. Oops...

Bug: 1098435
Change-Id: Ibb5f55721a243f10230b8840a5ce8836ee789ad5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2385930
Commit-Queue: Brian Ho <hob@chromium.org>
Reviewed-by: default avatarPeng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#803909}
parent 5f0d4d4d
...@@ -830,13 +830,14 @@ bool SkiaOutputSurfaceImplOnGpu::CopyOutput( ...@@ -830,13 +830,14 @@ bool SkiaOutputSurfaceImplOnGpu::CopyOutput(
dest_surface->wait(begin_semaphores.size(), begin_semaphores.data()); dest_surface->wait(begin_semaphores.size(), begin_semaphores.data());
SkCanvas* dest_canvas = dest_surface->getCanvas(); SkCanvas* dest_canvas = dest_surface->getCanvas();
if (request->is_scaled()) { if (request->is_scaled()) {
dest_canvas->scale(request->scale_from().x() / request->scale_to().x(), dest_canvas->scale(static_cast<SkScalar>(request->scale_to().x()) /
request->scale_from().y() / request->scale_to().y()); request->scale_from().x(),
static_cast<SkScalar>(request->scale_to().y()) /
request->scale_from().y());
} }
SkPaint paint; SkPaint paint;
paint.setFilterQuality(filter_quality); paint.setFilterQuality(filter_quality);
sk_sp<SkImage> image = surface->makeImageSnapshot(src_rect);
dest_canvas->clipRect( dest_canvas->clipRect(
SkRect::MakeXYWH(0, 0, src_rect.width(), src_rect.height())); SkRect::MakeXYWH(0, 0, src_rect.width(), src_rect.height()));
surface->draw(dest_canvas, -src_rect.x(), -src_rect.y(), &paint); surface->draw(dest_canvas, -src_rect.x(), -src_rect.y(), &paint);
......
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