Commit b22ba4aa authored by Xu Xing's avatar Xu Xing Committed by Commit Bot

Make flush optional in SkiaHelper::ApplyImageFilter

Flush is necessary for GLRenderer but not SkiaRenderer. So make it optional.

Bug: 897838
Change-Id: I96df913b7afd1fb6bf84314e3bd7ee0ed25ac497
Reviewed-on: https://chromium-review.googlesource.com/c/1312298Reviewed-by: default avatarRobert Kroeger <rjkroege@chromium.org>
Commit-Queue: Xing Xu <xing.xu@intel.com>
Cr-Commit-Position: refs/heads/master@{#604775}
parent 6a1ba181
...@@ -15,7 +15,8 @@ sk_sp<SkImage> SkiaHelper::ApplyImageFilter(sk_sp<SkImage> src_image, ...@@ -15,7 +15,8 @@ sk_sp<SkImage> SkiaHelper::ApplyImageFilter(sk_sp<SkImage> src_image,
sk_sp<SkImageFilter> filter, sk_sp<SkImageFilter> filter,
SkIPoint* offset, SkIPoint* offset,
SkIRect* subset, SkIRect* subset,
const gfx::PointF& origin) { const gfx::PointF& origin,
bool flush) {
if (!filter) if (!filter)
return nullptr; return nullptr;
...@@ -48,7 +49,7 @@ sk_sp<SkImage> SkiaHelper::ApplyImageFilter(sk_sp<SkImage> src_image, ...@@ -48,7 +49,7 @@ sk_sp<SkImage> SkiaHelper::ApplyImageFilter(sk_sp<SkImage> src_image,
// Force a flush of the Skia pipeline before we switch back to the compositor // Force a flush of the Skia pipeline before we switch back to the compositor
// context. // context.
image->getBackendTexture(true); image->getBackendTexture(flush);
CHECK(image->isTextureBacked()); CHECK(image->isTextureBacked());
return image; return image;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
namespace viz { namespace viz {
class VIZ_COMMON_EXPORT SkiaHelper { class VIZ_COMMON_EXPORT SkiaHelper {
public: public:
// |flush| is necessary for GLRenderer but not SkiaRenderer.
static sk_sp<SkImage> ApplyImageFilter(sk_sp<SkImage> src_image, static sk_sp<SkImage> ApplyImageFilter(sk_sp<SkImage> src_image,
const gfx::RectF& src_rect, const gfx::RectF& src_rect,
const gfx::RectF& dst_rect, const gfx::RectF& dst_rect,
...@@ -23,7 +24,8 @@ class VIZ_COMMON_EXPORT SkiaHelper { ...@@ -23,7 +24,8 @@ class VIZ_COMMON_EXPORT SkiaHelper {
sk_sp<SkImageFilter> filter, sk_sp<SkImageFilter> filter,
SkIPoint* offset, SkIPoint* offset,
SkIRect* subset, SkIRect* subset,
const gfx::PointF& origin); const gfx::PointF& origin,
bool flush);
}; };
} // namespace viz } // namespace viz
......
...@@ -1152,7 +1152,7 @@ bool GLRenderer::UpdateRPDQWithSkiaFilters( ...@@ -1152,7 +1152,7 @@ bool GLRenderer::UpdateRPDQWithSkiaFilters(
use_gr_context->context(), params->flip_texture); use_gr_context->context(), params->flip_texture);
params->filter_image = SkiaHelper::ApplyImageFilter( params->filter_image = SkiaHelper::ApplyImageFilter(
src_image, src_rect, params->dst_rect, quad->filters_scale, src_image, src_rect, params->dst_rect, quad->filters_scale,
std::move(filter), &offset, &subset, quad->filters_origin); std::move(filter), &offset, &subset, quad->filters_origin, true);
} else { } else {
DisplayResourceProvider::ScopedReadLockGL DisplayResourceProvider::ScopedReadLockGL
prefilter_bypass_quad_texture_lock( prefilter_bypass_quad_texture_lock(
...@@ -1166,7 +1166,7 @@ bool GLRenderer::UpdateRPDQWithSkiaFilters( ...@@ -1166,7 +1166,7 @@ bool GLRenderer::UpdateRPDQWithSkiaFilters(
use_gr_context->context(), params->flip_texture); use_gr_context->context(), params->flip_texture);
params->filter_image = SkiaHelper::ApplyImageFilter( params->filter_image = SkiaHelper::ApplyImageFilter(
src_image, src_rect, params->dst_rect, quad->filters_scale, src_image, src_rect, params->dst_rect, quad->filters_scale,
std::move(filter), &offset, &subset, quad->filters_origin); std::move(filter), &offset, &subset, quad->filters_origin, true);
} }
if (!params->filter_image) if (!params->filter_image)
......
...@@ -898,7 +898,7 @@ bool SkiaRenderer::CalculateRPDQParams(sk_sp<SkImage> content, ...@@ -898,7 +898,7 @@ bool SkiaRenderer::CalculateRPDQParams(sk_sp<SkImage> content,
// TODO(xing.xu): Support flip_texture. (https://crbug.com/822859) // TODO(xing.xu): Support flip_texture. (https://crbug.com/822859)
params->filter_image = SkiaHelper::ApplyImageFilter( params->filter_image = SkiaHelper::ApplyImageFilter(
content, src_rect, dst_rect, quad->filters_scale, std::move(filter), content, src_rect, dst_rect, quad->filters_scale, std::move(filter),
&offset, &subset, quad->filters_origin); &offset, &subset, quad->filters_origin, false);
if (!params->filter_image) if (!params->filter_image)
return false; return false;
params->dst_rect = params->dst_rect =
......
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