| 127 | } |
| 128 | |
| 129 | ovrResult CompositorBase::WaitToBeginFrame(ovrSession session, long long frameIndex) |
| 130 | { |
| 131 | MICROPROFILE_SCOPE(WaitToBeginFrame); |
| 132 | |
| 133 | // Wait until one frame before the frame we're targeting |
| 134 | long long frames = frameIndex - session->FrameIndex - 1; |
| 135 | for (long long i = 0; i < frames; i++) |
| 136 | { |
| 137 | if (vr::VROverlay()->WaitFrameSync(m_Timeout) != vr::VROverlayError_None) |
| 138 | break; |
| 139 | } |
| 140 | |
| 141 | // Wait for the actual frame start |
| 142 | MICROPROFILE_SCOPE(WaitGetPoses); |
| 143 | vr::VRCompositorError error = vr::VRCompositor()->WaitGetPoses(nullptr, 0, nullptr, 0); |
| 144 | session->FrameIndex = frameIndex; |
| 145 | session->Input->UpdateInputState(); |
| 146 | return CompositorErrorToOvrError(error); |
| 147 | } |
| 148 | |
| 149 | ovrResult CompositorBase::BeginFrame(ovrSession session, long long frameIndex) |
| 150 | { |
no test coverage detected