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() {
return frame_sink_manager_.get();
}
void SurfacesInstance::DrawAndSwap(const gfx::Size& viewport,
const gfx::Rect& clip,
const gfx::Transform& transform,
void SurfacesInstance::DrawAndSwap(gfx::Size viewport,
gfx::Rect clip,
gfx::Transform transform,
const gfx::Size& frame_size,
const viz::SurfaceId& child_id,
float device_scale_factor,
const gfx::ColorSpace& color_space) {
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 =
color_space.IsValid() ? color_space : gfx::ColorSpace::CreateSRGB();
display_->SetDisplayColorSpaces(gfx::DisplayColorSpaces(display_color_space));
......
......@@ -44,9 +44,9 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>,
viz::FrameSinkId AllocateFrameSinkId();
viz::FrameSinkManagerImpl* GetFrameSinkManager();
void DrawAndSwap(const gfx::Size& viewport,
const gfx::Rect& clip,
const gfx::Transform& transform,
void DrawAndSwap(gfx::Size viewport,
gfx::Rect clip,
gfx::Transform transform,
const gfx::Size& frame_size,
const viz::SurfaceId& child_id,
float device_scale_factor,
......@@ -112,6 +112,7 @@ class SurfacesInstance : public base::RefCounted<SurfacesInstance>,
viz::FrameTokenGenerator next_frame_token_;
gfx::Size surface_size_;
bool was_fbo0_ = false;
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