Package org.lwjgl.ovr

Class OVRPerfStatsPerCompositorFrame

  • All Implemented Interfaces:
    Pointer

    public class OVRPerfStatsPerCompositorFrame
    extends Struct
    Contains the performance stats for a given SDK compositor frame.

    All of the int fields can be reset via the ResetPerfStats call.

    Member documentation

    • HmdVsyncIndex – Vsync Frame Index - increments with each HMD vertical synchronization signal (i.e. vsync or refresh rate).

      If the compositor drops a frame, expect this value to increment more than 1 at a time.

    • AppFrameIndex – index that increments with each successive SubmitFrame call
    • AppDroppedFrameCount – if the app fails to call SubmitFrame on time, then expect this value to increment with each missed frame
    • AppMotionToPhotonLatency – motion-to-photon latency for the application

      This value is calculated by either using the SensorSampleTime provided for the OVRLayerEyeFov or if that is not available, then the call to GetTrackingState which has latencyMarker set to True.

    • AppQueueAheadTime – amount of queue-ahead in seconds provided to the app based on performance and overlap of CPU and GPU utilization.

      A value of 0.0 would mean the CPU & GPU workload is being completed in 1 frame's worth of time, while 11 ms (on the CV1) of queue ahead would indicate that the app's CPU workload for the next frame is overlapping the app's GPU workload for the current frame.

    • AppCpuElapsedTime – amount of time in seconds spent on the CPU by the app's render-thread that calls SubmitFrame.

      Measured as elapsed time between from when app regains control from SubmitFrame to the next time the app calls SubmitFrame.

    • AppGpuElapsedTime – amount of time in seconds spent on the GPU by the app.

      Measured as elapsed time between each SubmitFrame call using GPU timing queries.

    • CompositorFrameIndex – index that increments each time the SDK compositor completes a distortion and timewarp pass.

      Since the compositor operates asynchronously, even if the app calls SubmitFrame too late, the compositor will kick off for each vsync.

    • CompositorDroppedFrameCount – increments each time the SDK compositor fails to complete in time.

      This is not tied to the app's performance, but failure to complete can be related to other factors such as OS capabilities, overall available hardware cycles to execute the compositor in time and other factors outside of the app's control.

    • CompositorLatency – motion-to-photon latency of the SDK compositor in seconds.

      This is the latency of timewarp which corrects the higher app latency as well as dropped app frames.

    • CompositorCpuElapsedTime – the amount of time in seconds spent on the CPU by the SDK compositor.

      Unless the VR app is utilizing all of the CPU cores at their peak performance, there is a good chance the compositor CPU times will not affect the app's CPU performance in a major way.

    • CompositorGpuElapsedTime – the amount of time in seconds spent on the GPU by the SDK compositor. Any time spent on the compositor will eat away from the available GPU time for the app.
    • CompositorCpuStartToGpuEndElapsedTime – the amount of time in seconds spent from the point the CPU kicks off the compositor to the point in time the compositor completes the distortion & timewarp on the GPU.

      In the event the GPU time is not available, expect this value to be -1.0f.

    • CompositorGpuEndToVsyncElapsedTime – the amount of time in seconds left after the compositor is done on the GPU to the associated V-Sync time.

      In the event the GPU time is not available, expect this value to be -1.0f.

    • AswIsActive – Will be true if ASW is active for the given frame such that the application is being forced into half the frame-rate while the compositor continues to run at full frame-rate.
    • AswActivatedToggleCount – Increments each time ASW it activated where the app was forced in and out of half-rate rendering.
    • AswPresentedFrameCount – Accumulates the number of frames presented by the compositor which had extrapolated ASW frames presented
    • AswFailedFrameCount – Accumulates the number of frames that the compositor tried to present when ASW is active but failed

    Layout

    
     struct ovrPerfStatsPerCompositorFrame {
         int HmdVsyncIndex;
         int AppFrameIndex;
         int AppDroppedFrameCount;
         float AppMotionToPhotonLatency;
         float AppQueueAheadTime;
         float AppCpuElapsedTime;
         float AppGpuElapsedTime;
         int CompositorFrameIndex;
         int CompositorDroppedFrameCount;
         float CompositorLatency;
         float CompositorCpuElapsedTime;
         float CompositorGpuElapsedTime;
         float CompositorCpuStartToGpuEndElapsedTime;
         float CompositorGpuEndToVsyncElapsedTime;
         ovrBool AswIsActive;
         int AswActivatedToggleCount;
         int AswPresentedFrameCount;
         int AswFailedFrameCount;
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • HMDVSYNCINDEX, APPFRAMEINDEX, APPDROPPEDFRAMECOUNT, APPMOTIONTOPHOTONLATENCY, APPQUEUEAHEADTIME, APPCPUELAPSEDTIME, APPGPUELAPSEDTIME, COMPOSITORFRAMEINDEX, COMPOSITORDROPPEDFRAMECOUNT, COMPOSITORLATENCY, COMPOSITORCPUELAPSEDTIME, COMPOSITORGPUELAPSEDTIME, COMPOSITORCPUSTARTTOGPUENDELAPSEDTIME, COMPOSITORGPUENDTOVSYNCELAPSEDTIME, ASWISACTIVE, ASWACTIVATEDTOGGLECOUNT, ASWPRESENTEDFRAMECOUNT, ASWFAILEDFRAMECOUNT

        The struct member offsets.
    • Constructor Detail

      • OVRPerfStatsPerCompositorFrame

        public OVRPerfStatsPerCompositorFrame​(java.nio.ByteBuffer container)
        Creates a OVRPerfStatsPerCompositorFrame instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Description copied from class: Struct
        Returns sizeof(struct).
        Specified by:
        sizeof in class Struct
      • HmdVsyncIndex

        public int HmdVsyncIndex()
        Returns the value of the HmdVsyncIndex field.
      • AppFrameIndex

        public int AppFrameIndex()
        Returns the value of the AppFrameIndex field.
      • AppDroppedFrameCount

        public int AppDroppedFrameCount()
        Returns the value of the AppDroppedFrameCount field.
      • AppMotionToPhotonLatency

        public float AppMotionToPhotonLatency()
        Returns the value of the AppMotionToPhotonLatency field.
      • AppQueueAheadTime

        public float AppQueueAheadTime()
        Returns the value of the AppQueueAheadTime field.
      • AppCpuElapsedTime

        public float AppCpuElapsedTime()
        Returns the value of the AppCpuElapsedTime field.
      • AppGpuElapsedTime

        public float AppGpuElapsedTime()
        Returns the value of the AppGpuElapsedTime field.
      • CompositorFrameIndex

        public int CompositorFrameIndex()
        Returns the value of the CompositorFrameIndex field.
      • CompositorDroppedFrameCount

        public int CompositorDroppedFrameCount()
        Returns the value of the CompositorDroppedFrameCount field.
      • CompositorLatency

        public float CompositorLatency()
        Returns the value of the CompositorLatency field.
      • CompositorCpuElapsedTime

        public float CompositorCpuElapsedTime()
        Returns the value of the CompositorCpuElapsedTime field.
      • CompositorGpuElapsedTime

        public float CompositorGpuElapsedTime()
        Returns the value of the CompositorGpuElapsedTime field.
      • CompositorCpuStartToGpuEndElapsedTime

        public float CompositorCpuStartToGpuEndElapsedTime()
        Returns the value of the CompositorCpuStartToGpuEndElapsedTime field.
      • CompositorGpuEndToVsyncElapsedTime

        public float CompositorGpuEndToVsyncElapsedTime()
        Returns the value of the CompositorGpuEndToVsyncElapsedTime field.
      • AswIsActive

        public boolean AswIsActive()
        Returns the value of the AswIsActive field.
      • AswActivatedToggleCount

        public int AswActivatedToggleCount()
        Returns the value of the AswActivatedToggleCount field.
      • AswPresentedFrameCount

        public int AswPresentedFrameCount()
        Returns the value of the AswPresentedFrameCount field.
      • AswFailedFrameCount

        public int AswFailedFrameCount()
        Returns the value of the AswFailedFrameCount field.
      • nHmdVsyncIndex

        public static int nHmdVsyncIndex​(long struct)
        Unsafe version of HmdVsyncIndex().
      • nAppFrameIndex

        public static int nAppFrameIndex​(long struct)
        Unsafe version of AppFrameIndex().
      • nAppDroppedFrameCount

        public static int nAppDroppedFrameCount​(long struct)
        Unsafe version of AppDroppedFrameCount().
      • nAppMotionToPhotonLatency

        public static float nAppMotionToPhotonLatency​(long struct)
        Unsafe version of AppMotionToPhotonLatency().
      • nAppQueueAheadTime

        public static float nAppQueueAheadTime​(long struct)
        Unsafe version of AppQueueAheadTime().
      • nAppCpuElapsedTime

        public static float nAppCpuElapsedTime​(long struct)
        Unsafe version of AppCpuElapsedTime().
      • nAppGpuElapsedTime

        public static float nAppGpuElapsedTime​(long struct)
        Unsafe version of AppGpuElapsedTime().
      • nCompositorFrameIndex

        public static int nCompositorFrameIndex​(long struct)
        Unsafe version of CompositorFrameIndex().
      • nCompositorDroppedFrameCount

        public static int nCompositorDroppedFrameCount​(long struct)
      • nCompositorLatency

        public static float nCompositorLatency​(long struct)
        Unsafe version of CompositorLatency().
      • nCompositorCpuElapsedTime

        public static float nCompositorCpuElapsedTime​(long struct)
        Unsafe version of CompositorCpuElapsedTime().
      • nCompositorGpuElapsedTime

        public static float nCompositorGpuElapsedTime​(long struct)
        Unsafe version of CompositorGpuElapsedTime().
      • nAswIsActive

        public static boolean nAswIsActive​(long struct)
        Unsafe version of AswIsActive().
      • nAswActivatedToggleCount

        public static int nAswActivatedToggleCount​(long struct)
        Unsafe version of AswActivatedToggleCount().
      • nAswPresentedFrameCount

        public static int nAswPresentedFrameCount​(long struct)
        Unsafe version of AswPresentedFrameCount().
      • nAswFailedFrameCount

        public static int nAswFailedFrameCount​(long struct)
        Unsafe version of AswFailedFrameCount().