Commit 289b725b authored by Vasiliy Telezhnikov's avatar Vasiliy Telezhnikov Committed by Commit Bot

aw: Fix SkiaRenderer without viz

This CL ports some fixes for SkiaRenderer/WebView for case when viz is
not enabled. This is not very well supported configuration, fixing to
avoid crashes.

Bug: 1057623
Change-Id: Ideb473d7c36bde4034a311c27e1210c27ee9acac
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083732Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#746087}
parent 3c80d3aa
...@@ -120,15 +120,28 @@ viz::FrameSinkManagerImpl* SurfacesInstance::GetFrameSinkManager() { ...@@ -120,15 +120,28 @@ viz::FrameSinkManagerImpl* SurfacesInstance::GetFrameSinkManager() {
return frame_sink_manager_.get(); return frame_sink_manager_.get();
} }
void SurfacesInstance::DrawAndSwap(const gfx::Size& viewport, void SurfacesInstance::DrawAndSwap(gfx::Size viewport,
const gfx::Rect& clip, gfx::Rect clip,
const gfx::Transform& transform, gfx::Transform transform,
const gfx::Size& frame_size, const gfx::Size& frame_size,
const viz::SurfaceId& child_id, const viz::SurfaceId& child_id,
float device_scale_factor, float device_scale_factor,
const gfx::ColorSpace& color_space) { const gfx::ColorSpace& color_space) {
DCHECK(base::Contains(child_ids_, child_id)); DCHECK(base::Contains(child_ids_, child_id));
// Support for SkiaRenderer
if (output_surface_provider_.renderer_settings().use_skia_renderer) {
output_surface_provider_.gl_surface()->RecalculateClipAndTransform(
&viewport, &clip, &transform);
bool using_fbo0 =
output_surface_provider_.gl_surface()->GetBackingFramebufferObject() ==
0;
bool force_reshape = was_fbo0_ != using_fbo0;
was_fbo0_ = using_fbo0;
if (force_reshape)
display_->ForceReshapeOnNextDraw();
}
gfx::ColorSpace display_color_space = gfx::ColorSpace display_color_space =
color_space.IsValid() ? color_space : gfx::ColorSpace::CreateSRGB(); color_space.IsValid() ? color_space : gfx::ColorSpace::CreateSRGB();
display_->SetDisplayColorSpaces(gfx::DisplayColorSpaces(display_color_space)); display_->SetDisplayColorSpaces(gfx::DisplayColorSpaces(display_color_space));
......
...@@ -44,9 +44,9 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>, ...@@ -44,9 +44,9 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>,
viz::FrameSinkId AllocateFrameSinkId(); viz::FrameSinkId AllocateFrameSinkId();
viz::FrameSinkManagerImpl* GetFrameSinkManager(); viz::FrameSinkManagerImpl* GetFrameSinkManager();
void DrawAndSwap(const gfx::Size& viewport, void DrawAndSwap(gfx::Size viewport,
const gfx::Rect& clip, gfx::Rect clip,
const gfx::Transform& transform, gfx::Transform transform,
const gfx::Size& frame_size, const gfx::Size& frame_size,
const viz::SurfaceId& child_id, const viz::SurfaceId& child_id,
float device_scale_factor, float device_scale_factor,
...@@ -112,6 +112,7 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>, ...@@ -112,6 +112,7 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>,
viz::FrameTokenGenerator next_frame_token_; viz::FrameTokenGenerator next_frame_token_;
gfx::Size surface_size_; gfx::Size surface_size_;
bool was_fbo0_ = false;
DISALLOW_COPY_AND_ASSIGN(SurfacesInstance); DISALLOW_COPY_AND_ASSIGN(SurfacesInstance);
}; };
......
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