Commit 4d60b40e authored by Karolina Soltys's avatar Karolina Soltys Committed by Commit Bot

Removed several levels of calls to RenderWidget::DidReceiveCompositorFrameAck.

Bug: 725061
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I9bec1e76635379dd7a09a5160e1dff69074692f9
Reviewed-on: https://chromium-review.googlesource.com/1183232Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Karolina Soltys <ksolt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595498}
parent 62a3108f
...@@ -8917,5 +8917,40 @@ class LayerTreeHostTestNewLocalSurfaceIdForcesDraw : public LayerTreeHostTest { ...@@ -8917,5 +8917,40 @@ class LayerTreeHostTestNewLocalSurfaceIdForcesDraw : public LayerTreeHostTest {
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNewLocalSurfaceIdForcesDraw); SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNewLocalSurfaceIdForcesDraw);
// Verifies that DidReceiveCompositorFrameAck does not get sent with PostTask
// when not needed.
class DidReceiveCompositorFrameAckNotSentWhenNotNeeded
: public LayerTreeHostTest {
public:
DidReceiveCompositorFrameAckNotSentWhenNotNeeded() {}
void InitializeSettings(LayerTreeSettings* settings) override {
settings->send_compositor_frame_ack = false;
}
void BeginTest() override { PostSetNeedsCommitToMainThread(); }
void DidReceiveCompositorFrameAck() override { ADD_FAILURE(); }
// DrawLayersOnThread gets called after the conditional call to
// DidReceiveCompositorFrameAck, so we wait for it to end the test.
void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
if (!received_first_frame_) {
received_first_frame_ = true;
PostSetNeedsCommitToMainThread();
} else {
EndTest();
}
}
void AfterTest() override {}
private:
bool received_first_frame_ = false;
};
SINGLE_AND_MULTI_THREAD_TEST_F(
DidReceiveCompositorFrameAckNotSentWhenNotNeeded);
} // namespace } // namespace
} // namespace cc } // namespace cc
...@@ -160,6 +160,11 @@ class CC_EXPORT LayerTreeSettings { ...@@ -160,6 +160,11 @@ class CC_EXPORT LayerTreeSettings {
// When false, sync tokens are expected to be present, and are verified, // When false, sync tokens are expected to be present, and are verified,
// before transfering gpu resources to the display compositor. // before transfering gpu resources to the display compositor.
bool delegated_sync_points_required = true; bool delegated_sync_points_required = true;
// When true, LayerTreeHostImplClient will be posting a task to call
// DidReceiveCompositorFrameAck, used by the Compositor but not the
// LayerTreeView.
bool send_compositor_frame_ack = true;
}; };
} // namespace cc } // namespace cc
......
...@@ -69,6 +69,7 @@ ProxyImpl::ProxyImpl(base::WeakPtr<ProxyMain> proxy_main_weak_ptr, ...@@ -69,6 +69,7 @@ ProxyImpl::ProxyImpl(base::WeakPtr<ProxyMain> proxy_main_weak_ptr,
host_impl_ = layer_tree_host->CreateLayerTreeHostImpl(this); host_impl_ = layer_tree_host->CreateLayerTreeHostImpl(this);
const LayerTreeSettings& settings = layer_tree_host->GetSettings(); const LayerTreeSettings& settings = layer_tree_host->GetSettings();
send_compositor_frame_ack_ = settings.send_compositor_frame_ack;
SchedulerSettings scheduler_settings(settings.ToSchedulerSettings()); SchedulerSettings scheduler_settings(settings.ToSchedulerSettings());
...@@ -291,9 +292,11 @@ void ProxyImpl::DidReceiveCompositorFrameAckOnImplThread() { ...@@ -291,9 +292,11 @@ void ProxyImpl::DidReceiveCompositorFrameAckOnImplThread() {
"ProxyImpl::DidReceiveCompositorFrameAckOnImplThread"); "ProxyImpl::DidReceiveCompositorFrameAckOnImplThread");
DCHECK(IsImplThread()); DCHECK(IsImplThread());
scheduler_->DidReceiveCompositorFrameAck(); scheduler_->DidReceiveCompositorFrameAck();
MainThreadTaskRunner()->PostTask( if (send_compositor_frame_ack_) {
FROM_HERE, base::BindOnce(&ProxyMain::DidReceiveCompositorFrameAck, MainThreadTaskRunner()->PostTask(
proxy_main_frame_sink_bound_weak_ptr_)); FROM_HERE, base::BindOnce(&ProxyMain::DidReceiveCompositorFrameAck,
proxy_main_frame_sink_bound_weak_ptr_));
}
} }
void ProxyImpl::OnCanDrawStateChanged(bool can_draw) { void ProxyImpl::OnCanDrawStateChanged(bool can_draw) {
......
...@@ -153,6 +153,8 @@ class CC_EXPORT ProxyImpl : public LayerTreeHostImplClient, ...@@ -153,6 +153,8 @@ class CC_EXPORT ProxyImpl : public LayerTreeHostImplClient,
bool inside_draw_; bool inside_draw_;
bool input_throttled_until_commit_; bool input_throttled_until_commit_;
bool send_compositor_frame_ack_;
TaskRunnerProvider* task_runner_provider_; TaskRunnerProvider* task_runner_provider_;
DelayedUniqueNotifier smoothness_priority_expiration_notifier_; DelayedUniqueNotifier smoothness_priority_expiration_notifier_;
......
...@@ -442,12 +442,14 @@ void SingleThreadProxy::DidReceiveCompositorFrameAckOnImplThread() { ...@@ -442,12 +442,14 @@ void SingleThreadProxy::DidReceiveCompositorFrameAckOnImplThread() {
"SingleThreadProxy::DidReceiveCompositorFrameAckOnImplThread"); "SingleThreadProxy::DidReceiveCompositorFrameAckOnImplThread");
if (scheduler_on_impl_thread_) if (scheduler_on_impl_thread_)
scheduler_on_impl_thread_->DidReceiveCompositorFrameAck(); scheduler_on_impl_thread_->DidReceiveCompositorFrameAck();
// We do a PostTask here because freeing resources in some cases (such as in if (layer_tree_host_->GetSettings().send_compositor_frame_ack) {
// TextureLayer) is PostTasked and we want to make sure ack is received after // We do a PostTask here because freeing resources in some cases (such as in
// resources are returned. // TextureLayer) is PostTasked and we want to make sure ack is received
task_runner_provider_->MainThreadTaskRunner()->PostTask( // after resources are returned.
FROM_HERE, base::Bind(&SingleThreadProxy::DidReceiveCompositorFrameAck, task_runner_provider_->MainThreadTaskRunner()->PostTask(
frame_sink_bound_weak_ptr_)); FROM_HERE, base::Bind(&SingleThreadProxy::DidReceiveCompositorFrameAck,
frame_sink_bound_weak_ptr_));
}
} }
void SingleThreadProxy::OnDrawForLayerTreeFrameSink( void SingleThreadProxy::OnDrawForLayerTreeFrameSink(
......
...@@ -669,10 +669,6 @@ void LayerTreeView::DidCommitAndDrawFrame() { ...@@ -669,10 +669,6 @@ void LayerTreeView::DidCommitAndDrawFrame() {
delegate_->DidCommitAndDrawCompositorFrame(); delegate_->DidCommitAndDrawCompositorFrame();
} }
void LayerTreeView::DidReceiveCompositorFrameAck() {
delegate_->DidReceiveCompositorFrameAck();
}
void LayerTreeView::DidCompletePageScaleAnimation() { void LayerTreeView::DidCompletePageScaleAnimation() {
delegate_->DidCompletePageScaleAnimation(); delegate_->DidCompletePageScaleAnimation();
} }
......
...@@ -192,7 +192,7 @@ class CONTENT_EXPORT LayerTreeView ...@@ -192,7 +192,7 @@ class CONTENT_EXPORT LayerTreeView
void WillCommit() override; void WillCommit() override;
void DidCommit() override; void DidCommit() override;
void DidCommitAndDrawFrame() override; void DidCommitAndDrawFrame() override;
void DidReceiveCompositorFrameAck() override; void DidReceiveCompositorFrameAck() override {}
void DidCompletePageScaleAnimation() override; void DidCompletePageScaleAnimation() override;
void DidPresentCompositorFrame( void DidPresentCompositorFrame(
uint32_t frame_token, uint32_t frame_token,
......
...@@ -65,10 +65,6 @@ class LayerTreeViewDelegate { ...@@ -65,10 +65,6 @@ class LayerTreeViewDelegate {
// Called by the compositor when page scale animation completed. // Called by the compositor when page scale animation completed.
virtual void DidCompletePageScaleAnimation() = 0; virtual void DidCompletePageScaleAnimation() = 0;
// Notifies that the last submitted CompositorFrame has been processed and
// will be displayed.
virtual void DidReceiveCompositorFrameAck() = 0;
// Requests that a UMA and UKM metric be recorded for the total frame time. // Requests that a UMA and UKM metric be recorded for the total frame time.
// Call this as soon as the total frame time becomes known for a given frame. // Call this as soon as the total frame time becomes known for a given frame.
// For example, ProxyMain::BeginMainFrame calls it immediately before aborting // For example, ProxyMain::BeginMainFrame calls it immediately before aborting
......
...@@ -1013,9 +1013,6 @@ void RenderWidget::DidCompletePageScaleAnimation() { ...@@ -1013,9 +1013,6 @@ void RenderWidget::DidCompletePageScaleAnimation() {
owner_delegate_->DidCompletePageScaleAnimationForWidget(); owner_delegate_->DidCompletePageScaleAnimationForWidget();
} }
void RenderWidget::DidReceiveCompositorFrameAck() {
}
bool RenderWidget::IsClosing() const { bool RenderWidget::IsClosing() const {
// TODO(ajwong): There is oddly 2 closing states. This API is used by // TODO(ajwong): There is oddly 2 closing states. This API is used by
// LayerTreeView only as part of the LayerTreeViewDelegate interface and // LayerTreeView only as part of the LayerTreeViewDelegate interface and
...@@ -2782,6 +2779,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings( ...@@ -2782,6 +2779,9 @@ cc::LayerTreeSettings RenderWidget::GenerateLayerTreeSettings(
settings.always_request_presentation_time = settings.always_request_presentation_time =
cmd.HasSwitch(cc::switches::kAlwaysRequestPresentationTime); cmd.HasSwitch(cc::switches::kAlwaysRequestPresentationTime);
settings.send_compositor_frame_ack = false;
return settings; return settings;
} }
......
...@@ -270,7 +270,6 @@ class CONTENT_EXPORT RenderWidget ...@@ -270,7 +270,6 @@ class CONTENT_EXPORT RenderWidget
void DidCommitAndDrawCompositorFrame() override; void DidCommitAndDrawCompositorFrame() override;
void DidCommitCompositorFrame() override; void DidCommitCompositorFrame() override;
void DidCompletePageScaleAnimation() override; void DidCompletePageScaleAnimation() override;
void DidReceiveCompositorFrameAck() override;
void RecordEndOfFrameMetrics(base::TimeTicks frame_begin_time) override; void RecordEndOfFrameMetrics(base::TimeTicks frame_begin_time) override;
bool IsClosing() const override; bool IsClosing() const override;
void RequestScheduleAnimation() override; void RequestScheduleAnimation() override;
......
...@@ -26,7 +26,6 @@ class StubLayerTreeViewDelegate : public LayerTreeViewDelegate { ...@@ -26,7 +26,6 @@ class StubLayerTreeViewDelegate : public LayerTreeViewDelegate {
void DidCommitAndDrawCompositorFrame() override {} void DidCommitAndDrawCompositorFrame() override {}
void DidCommitCompositorFrame() override {} void DidCommitCompositorFrame() override {}
void DidCompletePageScaleAnimation() override {} void DidCompletePageScaleAnimation() override {}
void DidReceiveCompositorFrameAck() override {}
bool IsClosing() const override; bool IsClosing() const override;
void RequestScheduleAnimation() override {} void RequestScheduleAnimation() override {}
void UpdateVisualState() override {} void UpdateVisualState() override {}
......
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