aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/CAPI/CAPI_LatencyStatistics.h
diff options
context:
space:
mode:
Diffstat (limited to 'LibOVR/Src/CAPI/CAPI_LatencyStatistics.h')
-rw-r--r--LibOVR/Src/CAPI/CAPI_LatencyStatistics.h178
1 files changed, 0 insertions, 178 deletions
diff --git a/LibOVR/Src/CAPI/CAPI_LatencyStatistics.h b/LibOVR/Src/CAPI/CAPI_LatencyStatistics.h
deleted file mode 100644
index 0c2f3bd..0000000
--- a/LibOVR/Src/CAPI/CAPI_LatencyStatistics.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/************************************************************************************
-
-Filename : CAPI_LatencyStatistics.h
-Content : Record latency statistics during rendering
-Created : Sept 23, 2014
-Authors : Chris Taylor, Kevin Jenkins
-
-Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved.
-
-Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License");
-you may not use the Oculus VR Rift SDK except in compliance with the License,
-which is provided at the time of installation or download, or which
-otherwise accompanies this software in either electronic or hard copy form.
-
-You may obtain a copy of the License at
-
-http://www.oculusvr.com/licenses/LICENSE-3.2
-
-Unless required by applicable law or agreed to in writing, the Oculus VR SDK
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-************************************************************************************/
-
-#ifndef OVR_CAPI_LatencyStatistics_h
-#define OVR_CAPI_LatencyStatistics_h
-
-#include "../OVR_CAPI.h"
-#include "../Kernel/OVR_Timer.h"
-#include "../Kernel/OVR_Lockless.h"
-#include "../Kernel/OVR_SysFile.h"
-#include "CAPI_FrameTimeManager.h"
-
-namespace OVR { namespace CAPI {
-
-
-// Define epoch period for lag statistics
-#define OVR_LAG_STATS_EPOCH 1.0 /* seconds */
-// Define seconds without frames before resetting stats
-#define OVR_LAG_STATS_RESET_LIMIT 2.0 /* seconds */
-
-
-//-------------------------------------------------------------------------------------
-// ***** LatencyStatisticsResults
-
-// Results from statistics collection
-struct LatencyStatisticsResults
-{
- // Number of seconds of data represented by these statistics.
- double IntervalSeconds;
-
- // Frames per second during the epoch.
- double FPS;
-
- // Measures average time for EndFrame() call over each of the frames.
- double EndFrameExecutionTime;
-
- // Measures the time between first scanline and first pose request before app starts rendering eyes.
- float LatencyRender;
-
- // Measures the time between first scanline and distortion/timewarp rendering.
- float LatencyTimewarp;
-
- // Time between Present() call and photon emission from first scanline of screen
- float LatencyPostPresent;
-
- // Measures the time from receiving the camera frame until vision CPU processing completes.
- double LatencyVisionProc;
-
- // Measures the time from exposure until the pose is available for the frame, including processing time.
- double LatencyVisionFrame;
-};
-
-//-----------------------------------------------------------------------------
-typedef Delegate1<void, LatencyStatisticsResults*> LatencyStatisticsSlot;
-
-// ***** LatencyStatisticsObserver
-class LatencyStatisticsCSV
-{
-public:
- LatencyStatisticsCSV();
- ~LatencyStatisticsCSV();
- bool Start(String fileName, String userData1);
- bool Stop();
- void OnResults(LatencyStatisticsResults *results);
-
- // Internal
- void WriteHeaderV1();
- void WriteResultsV1(LatencyStatisticsResults *results);
- ObserverScope<LatencyStatisticsSlot>* GetObserver() { return &_Observer; }
-
-protected:
- ObserverScope<LatencyStatisticsSlot> _Observer;
- String Guid, UserData1;
- String FileName;
- OVR::SysFile _File;
- String OS, OSVersion, ProcessInfo, DisplayDriverVersion, CameraDriverVersion, GPUVersion;
-};
-
-//-----------------------------------------------------------------------------
-// ***** LatencyStatisticsCalculator
-
-// Calculator for latency statistics
-class LagStatsCalculator
-{
- // Statistics instrumentation inputs:
-
- // Timestamp when the EndFrame() call started executing
- double EndFrameStartTime;
- // Timestamp when the EndFrame() call finished executing
- double EndFrameEndTime;
-
- // Latency statistics for the epoch
- LatencyStatisticsResults latencyStatisticsData;
-
- // Last latency data
- // float LatencyData[3]; // render, timewarp, median post-present
-
- // Last vision processing frame counter number
- uint32_t LastCameraFrameCounter;
-
- // Running statistics:
-
- void resetPerfStats(double resetTime = 0.);
-
- // Start of the current statistics epoch
- double EpochBegin;
- // Count of frames in this stats epoch, measured at EndFrame()
- int FrameCount;
- // Sum of end frame durations for this stats epoch
- //double EndFrameSum;
-
- // Sum of latencies
- // double LatencySum[3];
-
- // Sum of vision processing times
- //double VisionProcSum;
- // Sum of vision latency times
- //double VisionLagSum;
- // Count of vision frames
- int VisionFrames;
-
- // Statistics results:
-
- LocklessUpdater<LatencyStatisticsResults, LatencyStatisticsResults> Results;
-
- void calculateResults();
-
- OVR::ObserverScope<LatencyStatisticsSlot> calculateResultsSubject;
- OVR::Lock calculateResultsLock;
-
-public:
- LagStatsCalculator();
-
- void GetLatestResults(LatencyStatisticsResults* results);
- void AddResultsObserver(ObserverScope<LatencyStatisticsSlot> *calculateResultsObserver);
-
-public:
- // Internal instrumentation interface:
-
- // EndFrame() instrumentation
- void InstrumentEndFrameStart(double timestamp);
- void InstrumentEndFrameEnd(double timestamp);
-
- // DK2 latency tester instrumentation
- // Note: This assumes that it is called right before InstrumentEndFrameEnd()
- void InstrumentLatencyTimings(FrameTimeManager& ftm);
-
- // Eye pose instrumentation
- void InstrumentEyePose(const ovrTrackingState& state);
-};
-
-
-}} // namespace OVR::CAPI
-
-#endif // OVR_CAPI_LatencyStatistics_h