Skip to content

Commit aaee690

Browse files
committed
SessionDetails: Add some helper function for common display data.
1 parent 5fdfd93 commit aaee690

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

Revive/REV_CAPI.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,16 +1021,15 @@ OVR_PUBLIC_FUNCTION(double) ovr_GetPredictedDisplayTime(ovrSession session, long
10211021
if (session->FrameIndex == 0)
10221022
return ovr_GetTimeInSeconds();
10231023

1024-
float fVsyncToPhotons = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_SecondsFromVsyncToPhotons_Float);
1025-
double predictAhead = vr::VRCompositor()->GetFrameTimeRemaining() + fVsyncToPhotons;
1024+
double predictAhead = vr::VRCompositor()->GetFrameTimeRemaining() + session->Details->GetVsyncToPhotons();
10261025
if (session)
10271026
{
10281027
// Some applications ask for frames ahead of the current frame
1029-
const ovrHmdDesc* pHmd = session->Details->GetHmdDesc();
1028+
float refreshRate = session->Details->GetRefreshRate();
10301029
if (frameIndex > 0)
1031-
predictAhead += double(frameIndex - session->FrameIndex) / pHmd->DisplayRefreshRate;
1030+
predictAhead += double(frameIndex - session->FrameIndex) / refreshRate;
10321031
else
1033-
predictAhead += 1.0 / pHmd->DisplayRefreshRate;
1032+
predictAhead += 1.0 / refreshRate;
10341033
}
10351034
return ovr_GetTimeInSeconds() + predictAhead;
10361035
}

Revive/SessionDetails.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ SessionDetails::HackInfo SessionDetails::m_known_hacks[] = {
1717
};
1818

1919
SessionDetails::SessionDetails()
20-
: HmdDesc()
20+
: TrackerCount(0)
21+
, fVsyncToPhotons(0.0f)
22+
, HmdDesc()
23+
, RenderDesc()
2124
, TrackerDesc()
22-
, TrackerCount(0)
2325
{
2426
char filepath[MAX_PATH];
2527
GetModuleFileNameA(NULL, filepath, MAX_PATH);
@@ -137,6 +139,7 @@ void SessionDetails::UpdateHmdDesc()
137139
HmdDesc.Resolution = size;
138140
HmdDesc.Resolution.w *= 2; // Both eye ports
139141
HmdDesc.DisplayRefreshRate = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_DisplayFrequency_Float);
142+
fVsyncToPhotons = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_SecondsFromVsyncToPhotons_Float);
140143
}
141144

142145
void SessionDetails::UpdateTrackerDesc()

Revive/SessionDetails.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ class SessionDetails
7070
return index < vr::k_unMaxTrackedDeviceCount ? &TrackerDesc[index] : nullptr;
7171
}
7272

73+
float GetRefreshRate() const { return HmdDesc.DisplayRefreshRate; }
74+
float GetVsyncToPhotons() const { return fVsyncToPhotons; }
75+
7376
private:
7477
struct HackInfo
7578
{
@@ -82,6 +85,7 @@ class SessionDetails
8285
static HackInfo m_known_hacks[];
8386
std::map<Hack, HackInfo> m_hacks;
8487

88+
float fVsyncToPhotons;
8589
ovrHmdDesc HmdDesc;
8690
ovrEyeRenderDesc RenderDesc[ovrEye_Count];
8791
ovrTrackerDesc TrackerDesc[vr::k_unMaxTrackedDeviceCount];

0 commit comments

Comments
 (0)