Chromium Code Reviews| Index: chrome/browser/android/vr_shell/vr_shell_gl.cc |
| diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| index 65cc835187302e13ebd1d9266e54d0b50d144d13..ebc784c4bfb900c7642c7e26af55114794d0faf7 100644 |
| --- a/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| +++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
| @@ -423,15 +423,6 @@ void VrShellGl::OnWebVRFrameAvailable() { |
| TRACE_EVENT1("gpu", "VrShellGl::OnWebVRFrameAvailable", "frame", frame_index); |
| pending_frames_.pop(); |
| - // It is legal for the WebVR client to submit a new frame now, since |
| - // we've consumed the image. TODO(klausw): would timing be better if |
| - // we move the "rendered" notification after draw, or suppress |
| - // the next vsync until that's done? |
| - |
| - if (submit_client_) { |
| - submit_client_->OnSubmitFrameRendered(); |
| - } |
| - |
| DrawFrame(frame_index); |
| } |
| @@ -1066,6 +1057,14 @@ void VrShellGl::DrawFrame(int16_t frame_index) { |
| surface_->SwapBuffers(); |
| } |
| + // Report rendering completion to WebVR so that it's permitted to submit |
| + // a fresh frame. We could do this earlier, as soon as the frame got pulled |
| + // off the transfer surface, but that appears to result in overstuffed |
| + // buffers. |
| + if (submit_client_) { |
| + submit_client_->OnSubmitFrameRendered(); |
| + } |
| + |
| #if DCHECK_IS_ON() |
| // After saving the timestamp, fps will be available via GetFPS(). |
| // TODO(vollick): enable rendering of this framerate in a HUD. |
| @@ -1466,7 +1465,6 @@ void VrShellGl::OnVSync() { |
| SendVSync(time, base::ResetAndReturn(&callback_)); |
| } else { |
| pending_vsync_ = true; |
| - pending_time_ = time; |
| } |
| if (!ShouldDrawWebVr()) { |
| DrawFrame(-1); |
| @@ -1490,7 +1488,8 @@ void VrShellGl::GetVSync(const GetVSyncCallback& callback) { |
| return; |
| } |
| pending_vsync_ = false; |
| - SendVSync(pending_time_, callback); |
| + base::TimeDelta time = base::TimeTicks::Now() - vsync_timebase_; |
|
mthiesse
2017/05/23 00:14:17
I don't think we want to do this with the timestam
|
| + SendVSync(time, callback); |
| } |
| void VrShellGl::UpdateVSyncInterval(int64_t timebase_nanos, |