Commit 69624e75 authored by Brian Anderson's avatar Brian Anderson Committed by Commit Bot

android: Plumb PresentationFeedback to the Renderer

Bug: 776877, 790761
Change-Id: Ia64b43faaf21368eb44fbc85b1320c593291ad8a
Reviewed-on: https://chromium-review.googlesource.com/944259
Commit-Queue: Brian Anderson <brianderson@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarPeng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540343}
parent 3c0edd97
......@@ -289,6 +289,8 @@ class AndroidOutputSurface
GetCommandBufferProxy()->SetSwapBuffersCompletionCallback(
base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted,
weak_ptr_factory_.GetWeakPtr()));
GetCommandBufferProxy()->SetPresentationCallback(base::BindRepeating(
&AndroidOutputSurface::OnPresentation, weak_ptr_factory_.GetWeakPtr()));
}
void EnsureBackbuffer() override {}
......@@ -349,6 +351,11 @@ class AndroidOutputSurface
latency_info_cache_.OnSwapBuffersCompleted(params.swap_response);
}
void OnPresentation(uint64_t swap_id,
const gfx::PresentationFeedback& feedback) {
client_->DidReceivePresentationFeedback(swap_id, feedback);
}
private:
viz::OutputSurfaceClient* client_ = nullptr;
base::Closure swap_buffers_callback_;
......
......@@ -873,6 +873,23 @@ void RenderWidgetHostViewAndroid::DidReceiveCompositorFrameAck() {
RunAckCallbacks();
}
void RenderWidgetHostViewAndroid::DidPresentCompositorFrame(
uint32_t presentation_token,
base::TimeTicks time,
base::TimeDelta refresh,
uint32_t flags) {
DCHECK(using_browser_compositor_);
renderer_compositor_frame_sink_->DidPresentCompositorFrame(
presentation_token, time, refresh, flags);
}
void RenderWidgetHostViewAndroid::DidDiscardCompositorFrame(
uint32_t presentation_token) {
DCHECK(using_browser_compositor_);
renderer_compositor_frame_sink_->DidDiscardCompositorFrame(
presentation_token);
}
void RenderWidgetHostViewAndroid::ReclaimResources(
const std::vector<viz::ReturnedResource>& resources) {
if (resources.empty())
......
......@@ -235,6 +235,11 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
// DelegatedFrameHostAndroid::Client implementation.
void SetBeginFrameSource(viz::BeginFrameSource* begin_frame_source) override;
void DidReceiveCompositorFrameAck() override;
void DidPresentCompositorFrame(uint32_t presentation_token,
base::TimeTicks time,
base::TimeDelta refresh,
uint32_t flags) override;
void DidDiscardCompositorFrame(uint32_t presentation_token) override;
void ReclaimResources(
const std::vector<viz::ReturnedResource>& resources) override;
void OnFrameTokenChanged(uint32_t frame_token) override;
......
......@@ -228,10 +228,14 @@ void DelegatedFrameHostAndroid::DidPresentCompositorFrame(
uint32_t presentation_token,
base::TimeTicks time,
base::TimeDelta refresh,
uint32_t flags) {}
uint32_t flags) {
client_->DidPresentCompositorFrame(presentation_token, time, refresh, flags);
}
void DelegatedFrameHostAndroid::DidDiscardCompositorFrame(
uint32_t presentation_token) {}
uint32_t presentation_token) {
client_->DidDiscardCompositorFrame(presentation_token);
}
void DelegatedFrameHostAndroid::OnBeginFrame(const viz::BeginFrameArgs& args) {
begin_frame_source_.OnBeginFrame(args);
......
......@@ -42,6 +42,11 @@ class UI_ANDROID_EXPORT DelegatedFrameHostAndroid
virtual void SetBeginFrameSource(
viz::BeginFrameSource* begin_frame_source) = 0;
virtual void DidReceiveCompositorFrameAck() = 0;
virtual void DidPresentCompositorFrame(uint32_t presentation_token,
base::TimeTicks time,
base::TimeDelta refresh,
uint32_t flags) = 0;
virtual void DidDiscardCompositorFrame(uint32_t presentation_token) = 0;
virtual void ReclaimResources(
const std::vector<viz::ReturnedResource>&) = 0;
virtual void OnFrameTokenChanged(uint32_t frame_token) = 0;
......
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