Surface synchronization: Simplify SurfaceLayer and dependencies
Surface scaling is now determined in SurfaceAggregator and so SurfaceLayer
and SurfaceLayerImpl no longer need to know about SurfaceInfo. This CL
replaces SurfaceLayer::SetPrimarySurfaceInfo with
SurfaceLayer::SetPrimarySurfaceId. ui::Layer::SetShowPrimarySurface takes in a
SurfaceId and frame rect in DIP instead of a SurfaceInfo.
Bug: 672962
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Idb24e7bcb5e905a3131b40f7d5fe67792b9ec695
Reviewed-on: https://chromium-review.googlesource.com/769930
Commit-Queue: Fady Samuel <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Antoine Labour <[email protected]>
Cr-Commit-Position: refs/heads/master@{#517360}
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc
index 9f918ae..c9d8866 100644
--- a/content/renderer/child_frame_compositing_helper.cc
+++ b/content/renderer/child_frame_compositing_helper.cc
@@ -209,21 +209,6 @@
web_layer_ = std::move(layer);
}
-void ChildFrameCompositingHelper::CheckSizeAndAdjustLayerProperties(
- const viz::SurfaceInfo& surface_info,
- cc::Layer* layer) {
- if (last_surface_size_in_pixels_ == surface_info.size_in_pixels())
- return;
-
- last_surface_size_in_pixels_ = surface_info.size_in_pixels();
- // The container size is in DIP, so is the layer size.
- // Buffer size is in physical pixels, so we need to adjust
- // it by the device scale factor.
- gfx::Size device_scale_adjusted_size = gfx::ScaleToFlooredSize(
- surface_info.size_in_pixels(), 1.0f / surface_info.device_scale_factor());
- layer->SetBounds(device_scale_adjusted_size);
-}
-
void ChildFrameCompositingHelper::OnContainerDestroy() {
UpdateWebLayer(nullptr);
}
@@ -261,18 +246,19 @@
UpdateWebLayer(std::move(layer));
}
-void ChildFrameCompositingHelper::SetPrimarySurfaceInfo(
- const viz::SurfaceInfo& surface_info) {
- if (last_primary_surface_id_ == surface_info.id())
+void ChildFrameCompositingHelper::SetPrimarySurfaceId(
+ const viz::SurfaceId& surface_id,
+ const gfx::Size& frame_size_in_dip) {
+ if (last_primary_surface_id_ == surface_id)
return;
- last_primary_surface_id_ = surface_info.id();
+ last_primary_surface_id_ = surface_id;
surface_layer_ = cc::SurfaceLayer::Create(surface_reference_factory_);
surface_layer_->SetMasksToBounds(true);
surface_layer_->SetDefaultBackgroundColor(SK_ColorTRANSPARENT);
- surface_layer_->SetPrimarySurfaceInfo(surface_info);
+ surface_layer_->SetPrimarySurfaceId(surface_id);
surface_layer_->SetFallbackSurfaceId(fallback_surface_id_);
std::unique_ptr<cc_blink::WebLayerImpl> layer(
@@ -285,18 +271,19 @@
UpdateVisibility(true);
- CheckSizeAndAdjustLayerProperties(
- surface_info,
- static_cast<cc_blink::WebLayerImpl*>(web_layer_.get())->layer());
+ static_cast<cc_blink::WebLayerImpl*>(web_layer_.get())
+ ->layer()
+ ->SetBounds(frame_size_in_dip);
}
-void ChildFrameCompositingHelper::SetFallbackSurfaceInfo(
- const viz::SurfaceInfo& surface_info,
+void ChildFrameCompositingHelper::SetFallbackSurfaceId(
+ const viz::SurfaceId& surface_id,
+ const gfx::Size& frame_size_in_dip,
const viz::SurfaceSequence& sequence) {
- if (fallback_surface_id_ == surface_info.id())
+ if (fallback_surface_id_ == surface_id)
return;
- fallback_surface_id_ = surface_info.id();
+ fallback_surface_id_ = surface_id;
// The RWHV creates a destruction dependency on the surface that needs to be
// satisfied. The reference factory will satisfy it when a new reference has
// been created.
@@ -313,11 +300,11 @@
}
if (!surface_layer_) {
- SetPrimarySurfaceInfo(surface_info);
+ SetPrimarySurfaceId(surface_id, frame_size_in_dip);
return;
}
- surface_layer_->SetFallbackSurfaceId(surface_info.id());
+ surface_layer_->SetFallbackSurfaceId(surface_id);
}
void ChildFrameCompositingHelper::UpdateVisibility(bool visible) {