| Index: third_party/WebKit/Source/modules/vr/VRDisplay.cpp
|
| diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
|
| index eaae511e56a9479733170cc50a4c25655e144898..22148df54ef5c8f7e5a6d91ff250d831e11a1893 100644
|
| --- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
|
| +++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
|
| @@ -489,7 +489,8 @@ void VRDisplay::updateLayerBounds() {
|
| m_layer.setRightBounds({0.5f, 0.0f, 0.5f, 1.0f});
|
| }
|
|
|
| - m_display->UpdateLayerBounds(std::move(leftBounds), std::move(rightBounds));
|
| + m_display->UpdateLayerBounds(m_frameId, std::move(leftBounds),
|
| + std::move(rightBounds));
|
| }
|
|
|
| HeapVector<VRLayer> VRDisplay::getLayers() {
|
| @@ -531,6 +532,12 @@ void VRDisplay::submitFrame() {
|
| return;
|
| }
|
|
|
| + // No frame Id to write before submitting the frame.
|
| + if (m_frameId < 0) {
|
| + m_display->SubmitFrame(m_framePose.Clone());
|
| + return;
|
| + }
|
| +
|
| // Write the frame number for the pose used into a bottom left pixel block.
|
| // It is read by chrome/browser/android/vr_shell/vr_shell.cc to associate
|
| // the correct corresponding pose for submission.
|
| @@ -547,12 +554,12 @@ void VRDisplay::submitFrame() {
|
| // since the final rendering hides the edges via a vignette effect.
|
| gl->Scissor(0, 0, 4, 4);
|
| gl->ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
| - int idx = m_framePose->poseIndex;
|
| // Careful with the arithmetic here. Float color 1.f is equivalent to int 255.
|
| // Use the low byte of the index as the red component, and store an arbitrary
|
| // magic number in green/blue. This number must match the reading code in
|
| // vr_shell.cc. Avoid all-black/all-white.
|
| - gl->ClearColor((idx & 255) / 255.0f, kWebVrPosePixelMagicNumbers[0] / 255.0f,
|
| + gl->ClearColor((m_frameId & 255) / 255.0f,
|
| + kWebVrPosePixelMagicNumbers[0] / 255.0f,
|
| kWebVrPosePixelMagicNumbers[1] / 255.0f, 1.0f);
|
| gl->Clear(GL_COLOR_BUFFER_BIT);
|
|
|
| @@ -608,7 +615,8 @@ void VRDisplay::OnDeactivate(
|
| }
|
|
|
| void VRDisplay::OnVSync(device::mojom::blink::VRPosePtr pose,
|
| - double timeSeconds) {
|
| + double timeSeconds,
|
| + int16_t frameId) {
|
| if (m_vrVSyncProvider.is_bound()) {
|
| m_vrVSyncProvider->GetVSync(convertToBaseCallback(
|
| WTF::bind(&VRDisplay::OnVSync, wrapWeakPersistent(this))));
|
| @@ -632,6 +640,7 @@ void VRDisplay::OnVSync(device::mojom::blink::VRPosePtr pose,
|
|
|
| AutoReset<bool> animating(&m_inAnimationFrame, true);
|
| m_framePose = std::move(pose);
|
| + m_frameId = frameId;
|
| m_scriptedAnimationController->serviceScriptedAnimations(m_timebase +
|
| timeSeconds);
|
| }
|
|
|