Commit 652377a4 authored by Bo Liu's avatar Bo Liu Committed by Commit Bot

Deflake pixel tests on android webview

Issue is sometimes synchronous compositor can drop
PresentationFeedback if renderer did not request a begin frame.
Fix this by always supplying the PresentationFeedback.

Bug: 948114
Change-Id: I75275eee17e03704dfff4406c141c68299af3ae6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1546875
Commit-Queue: Bo <boliu@chromium.org>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#647118}
parent 28116425
...@@ -294,8 +294,11 @@ void SynchronousCompositorProxy::BeginFrame( ...@@ -294,8 +294,11 @@ void SynchronousCompositorProxy::BeginFrame(
needs_begin_frame_for_animate_input_ = false; needs_begin_frame_for_animate_input_ = false;
input_handler_proxy_->SynchronouslyAnimate(args.frame_time); input_handler_proxy_->SynchronouslyAnimate(args.frame_time);
} }
if (needs_begin_frame_for_frame_sink_ && layer_tree_frame_sink_) if (layer_tree_frame_sink_) {
layer_tree_frame_sink_->BeginFrame(args, presentation_feedbacks); layer_tree_frame_sink_->DidPresentCompositorFrame(presentation_feedbacks);
if (needs_begin_frame_for_frame_sink_)
layer_tree_frame_sink_->BeginFrame(args);
}
SyncCompositorCommonRendererParams param; SyncCompositorCommonRendererParams param;
PopulateCommonParams(&param); PopulateCommonParams(&param);
......
...@@ -543,14 +543,17 @@ void SynchronousLayerTreeFrameSink::OnNeedsBeginFrames( ...@@ -543,14 +543,17 @@ void SynchronousLayerTreeFrameSink::OnNeedsBeginFrames(
} }
} }
void SynchronousLayerTreeFrameSink::BeginFrame( void SynchronousLayerTreeFrameSink::DidPresentCompositorFrame(
const viz::BeginFrameArgs& args,
const viz::PresentationFeedbackMap& presentation_feedbacks) { const viz::PresentationFeedbackMap& presentation_feedbacks) {
if (client_) { if (!client_)
for (const auto& pair : presentation_feedbacks) { return;
client_->DidPresentCompositorFrame(pair.first, pair.second); for (const auto& pair : presentation_feedbacks) {
} client_->DidPresentCompositorFrame(pair.first, pair.second);
} }
}
void SynchronousLayerTreeFrameSink::BeginFrame(
const viz::BeginFrameArgs& args) {
if (external_begin_frame_source_) if (external_begin_frame_source_)
external_begin_frame_source_->OnBeginFrame(args); external_begin_frame_source_->OnBeginFrame(args);
} }
......
...@@ -122,8 +122,9 @@ class SynchronousLayerTreeFrameSink ...@@ -122,8 +122,9 @@ class SynchronousLayerTreeFrameSink
// viz::ExternalBeginFrameSourceClient overrides. // viz::ExternalBeginFrameSourceClient overrides.
void OnNeedsBeginFrames(bool needs_begin_frames) override; void OnNeedsBeginFrames(bool needs_begin_frames) override;
void BeginFrame(const viz::BeginFrameArgs& args, void DidPresentCompositorFrame(
const viz::PresentationFeedbackMap& presentation_feedbacks); const viz::PresentationFeedbackMap& presentation_feedbacks);
void BeginFrame(const viz::BeginFrameArgs& args);
void SetBeginFrameSourcePaused(bool paused); void SetBeginFrameSourcePaused(bool paused);
void SetMemoryPolicy(size_t bytes_limit); void SetMemoryPolicy(size_t bytes_limit);
void ReclaimResources(uint32_t layer_tree_frame_sink_id, void ReclaimResources(uint32_t layer_tree_frame_sink_id,
......
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