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 ...@@ -289,6 +289,8 @@ class AndroidOutputSurface
GetCommandBufferProxy()->SetSwapBuffersCompletionCallback( GetCommandBufferProxy()->SetSwapBuffersCompletionCallback(
base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted, base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
GetCommandBufferProxy()->SetPresentationCallback(base::BindRepeating(
&AndroidOutputSurface::OnPresentation, weak_ptr_factory_.GetWeakPtr()));
} }
void EnsureBackbuffer() override {} void EnsureBackbuffer() override {}
...@@ -349,6 +351,11 @@ class AndroidOutputSurface ...@@ -349,6 +351,11 @@ class AndroidOutputSurface
latency_info_cache_.OnSwapBuffersCompleted(params.swap_response); latency_info_cache_.OnSwapBuffersCompleted(params.swap_response);
} }
void OnPresentation(uint64_t swap_id,
const gfx::PresentationFeedback& feedback) {
client_->DidReceivePresentationFeedback(swap_id, feedback);
}
private: private:
viz::OutputSurfaceClient* client_ = nullptr; viz::OutputSurfaceClient* client_ = nullptr;
base::Closure swap_buffers_callback_; base::Closure swap_buffers_callback_;
......
...@@ -873,6 +873,23 @@ void RenderWidgetHostViewAndroid::DidReceiveCompositorFrameAck() { ...@@ -873,6 +873,23 @@ void RenderWidgetHostViewAndroid::DidReceiveCompositorFrameAck() {
RunAckCallbacks(); 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( void RenderWidgetHostViewAndroid::ReclaimResources(
const std::vector<viz::ReturnedResource>& resources) { const std::vector<viz::ReturnedResource>& resources) {
if (resources.empty()) if (resources.empty())
......
...@@ -235,6 +235,11 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid ...@@ -235,6 +235,11 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
// DelegatedFrameHostAndroid::Client implementation. // DelegatedFrameHostAndroid::Client implementation.
void SetBeginFrameSource(viz::BeginFrameSource* begin_frame_source) override; void SetBeginFrameSource(viz::BeginFrameSource* begin_frame_source) override;
void DidReceiveCompositorFrameAck() 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( void ReclaimResources(
const std::vector<viz::ReturnedResource>& resources) override; const std::vector<viz::ReturnedResource>& resources) override;
void OnFrameTokenChanged(uint32_t frame_token) override; void OnFrameTokenChanged(uint32_t frame_token) override;
......
...@@ -228,10 +228,14 @@ void DelegatedFrameHostAndroid::DidPresentCompositorFrame( ...@@ -228,10 +228,14 @@ void DelegatedFrameHostAndroid::DidPresentCompositorFrame(
uint32_t presentation_token, uint32_t presentation_token,
base::TimeTicks time, base::TimeTicks time,
base::TimeDelta refresh, base::TimeDelta refresh,
uint32_t flags) {} uint32_t flags) {
client_->DidPresentCompositorFrame(presentation_token, time, refresh, flags);
}
void DelegatedFrameHostAndroid::DidDiscardCompositorFrame( void DelegatedFrameHostAndroid::DidDiscardCompositorFrame(
uint32_t presentation_token) {} uint32_t presentation_token) {
client_->DidDiscardCompositorFrame(presentation_token);
}
void DelegatedFrameHostAndroid::OnBeginFrame(const viz::BeginFrameArgs& args) { void DelegatedFrameHostAndroid::OnBeginFrame(const viz::BeginFrameArgs& args) {
begin_frame_source_.OnBeginFrame(args); begin_frame_source_.OnBeginFrame(args);
......
...@@ -42,6 +42,11 @@ class UI_ANDROID_EXPORT DelegatedFrameHostAndroid ...@@ -42,6 +42,11 @@ class UI_ANDROID_EXPORT DelegatedFrameHostAndroid
virtual void SetBeginFrameSource( virtual void SetBeginFrameSource(
viz::BeginFrameSource* begin_frame_source) = 0; viz::BeginFrameSource* begin_frame_source) = 0;
virtual void DidReceiveCompositorFrameAck() = 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( virtual void ReclaimResources(
const std::vector<viz::ReturnedResource>&) = 0; const std::vector<viz::ReturnedResource>&) = 0;
virtual void OnFrameTokenChanged(uint32_t frame_token) = 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