Commit 770f56fa authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

Use SkCavnas::saveLayer() to implement backdrop effect.

The original implementation needs readback from the FBO, it doesn't work
with SkDDL, because the FBO will not have the content until the recorded
SkDDL is played back on the Gpu thread. This CL uses SkCanvas::saveLayer()
to implement the backdrop effect. It doesn't need read the FBO.


Test: Passed layeout tests css3/filters/*.html with and without SkDDL
Bug: 822857
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I213fdff5f73c13af34a0295c666b80353642de96
Reviewed-on: https://chromium-review.googlesource.com/1073664
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: default avatarenne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564993}
parent 94009951
......@@ -82,7 +82,6 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer {
void ClearCanvas(SkColor color);
void ClearFramebuffer();
void SetClipRect(const gfx::Rect& rect);
void DrawDebugBorderQuad(const DebugBorderDrawQuad* quad);
void DrawPictureQuad(const PictureDrawQuad* quad);
......@@ -95,24 +94,10 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer {
bool CalculateRPDQParams(sk_sp<SkImage> src_image,
const RenderPassDrawQuad* quad,
DrawRenderPassDrawQuadParams* params);
bool ShouldApplyBackgroundFilters(
const RenderPassDrawQuad* quad,
const cc::FilterOperations* background_filters) const;
gfx::Rect GetBackdropBoundingBoxForRenderPassQuad(
const RenderPassDrawQuad* quad,
const gfx::Transform& contents_device_transform,
const cc::FilterOperations* background_filters,
gfx::Rect* unclipped_rect) const;
sk_sp<SkImage> ApplyBackgroundFilters(SkImageFilter* filter,
const RenderPassDrawQuad* quad,
sk_sp<SkImage> src_image,
const gfx::Rect& rect) const;
sk_sp<SkImage> GetBackdropImage(const gfx::Rect& bounding_rect) const;
sk_sp<SkShader> GetBackgroundFilterShader(
const RenderPassDrawQuad* quad,
SkShader::TileMode content_tile_mode) const;
bool is_using_ddl() const { return !!skia_output_surface_; }
// A map from RenderPass id to the texture used to draw the RenderPass from.
struct RenderPassBacking {
......
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