Commit e300850a authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

Fix SkiaRenderer + DDL related crash.

Skia has a problem to with GrResourceCache. This CL workaround the issue
by not keep a SkPaint object during frames.

Bug: 905337
Change-Id: I0f44eb7502d41cd54015fe651a373d8bae65fda8
Reviewed-on: https://chromium-review.googlesource.com/c/1342501
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: default avatarweiliangc <weiliangc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609426}
parent 59b5f94b
...@@ -96,21 +96,22 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer { ...@@ -96,21 +96,22 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer {
const gfx::QuadF* draw_region, const gfx::QuadF* draw_region,
const gfx::Rect* scissor_rect, const gfx::Rect* scissor_rect,
base::Optional<SkAutoCanvasRestore>* auto_canvas_restore); base::Optional<SkAutoCanvasRestore>* auto_canvas_restore);
void DrawDebugBorderQuad(const DebugBorderDrawQuad* quad); void DrawDebugBorderQuad(const DebugBorderDrawQuad* quad, SkPaint* paint);
void DrawPictureQuad(const PictureDrawQuad* quad); void DrawPictureQuad(const PictureDrawQuad* quad, SkPaint* paint);
void DrawRenderPassQuad(const RenderPassDrawQuad* quad); void DrawRenderPassQuad(const RenderPassDrawQuad* quad, SkPaint* paint);
void DrawRenderPassQuadInternal(const RenderPassDrawQuad* quad, void DrawRenderPassQuadInternal(const RenderPassDrawQuad* quad,
sk_sp<SkImage> content_image); sk_sp<SkImage> content_image,
SkPaint* paint);
void DrawSolidColorQuad(const SolidColorDrawQuad* quad); void DrawSolidColorQuad(const SolidColorDrawQuad* quad, SkPaint* paint);
void DrawTextureQuad(const TextureDrawQuad* quad); void DrawTextureQuad(const TextureDrawQuad* quad, SkPaint* paint);
bool MustDrawBatchedTileQuadsBeforeQuad(const DrawQuad* new_quad, bool MustDrawBatchedTileQuadsBeforeQuad(const DrawQuad* new_quad,
const gfx::QuadF* draw_region); const gfx::QuadF* draw_region);
void AddTileQuadToBatch(const TileDrawQuad* quad, void AddTileQuadToBatch(const TileDrawQuad* quad,
const gfx::QuadF* draw_region); const gfx::QuadF* draw_region);
void DrawBatchedTileQuads(); void DrawBatchedTileQuads();
void DrawYUVVideoQuad(const YUVVideoDrawQuad* quad); void DrawYUVVideoQuad(const YUVVideoDrawQuad* quad, SkPaint* paint);
void DrawUnsupportedQuad(const DrawQuad* quad); void DrawUnsupportedQuad(const DrawQuad* quad, SkPaint* paint);
bool CalculateRPDQParams(sk_sp<SkImage> src_image, bool CalculateRPDQParams(sk_sp<SkImage> src_image,
const RenderPassDrawQuad* quad, const RenderPassDrawQuad* quad,
DrawRenderPassDrawQuadParams* params); DrawRenderPassDrawQuadParams* params);
...@@ -164,7 +165,6 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer { ...@@ -164,7 +165,6 @@ class VIZ_SERVICE_EXPORT SkiaRenderer : public DirectRenderer {
bool disable_picture_quad_image_filtering_ = false; bool disable_picture_quad_image_filtering_ = false;
bool is_scissor_enabled_ = false; bool is_scissor_enabled_ = false;
gfx::Rect scissor_rect_; gfx::Rect scissor_rect_;
SkPaint current_paint_;
// Specific for overdraw. // Specific for overdraw.
sk_sp<SkSurface> overdraw_surface_; sk_sp<SkSurface> overdraw_surface_;
......
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