Steamworks Documentation
Performance Criteria Overlay (VR titles)
To help evaluate how your VR title is doing with regards to the Frame Compatibility Checklist, SteamVR offers a Performance Criteria overlay that measures resolution and frame rate.

Enabling the overlay

You can turn on the in-headset performance criteria overlay by opening the SteamVR Dashboard, toggling Advanced Settings (bottom left corner) to Show, then head to the Developer tab and enable Draw Performance Criteria Overlay in Headset.

Enabling the Performance Criteria overlay

With this option enabled, SteamVR also shows the Performance Graph. However, the Performance Criteria section of the overlay is only displayed while a VR title is running.

After exiting a VR title, the Performance Criteria section of the overlay remains visible for up to 30 seconds with the current results, even if a VR title is launched immediately.

Interpreting the overlay


The Performance Criteria section of the overlay is shown near the Performance Graph.

A look at the Performance Criteria overlay

On the right side of the Performance Graph, the Application Name and Steam Application ID are displayed.
Immediately above the Performance Graph, the Status is displayed and may be one of the following values:

VERIFIEDPerformance and resolution are satisfactory to receive the Verified badge Verified badge (subject to meeting the other requirements for the badge).
PLAYABLEPerformance is satisfactory, however the resolution is only adequate to receive the Playable badge Playable badge (subject to meeting the other requirements for the badge).
UNSUPPORTEDPerformance and/or resolution are not adequate.
PENDINGSteamVR is still collecting data to evaluate performance. This transient state typically lasts a few seconds.

Additional information for VERIFIED/PLAYABLE


Next to the VERIFIED/PLAYABLE status, the Average Frame Time (in milliseconds) is displayed. This average is a rolling window of the last 32 frames. Next to the it, the Target Frame Time (in milliseconds) is displayed. The target is calculated based on the minimum required display refresh rate and includes the required headroom for SteamVR.

Additional warnings are displayed if the game is not submitting depth buffers and motion vectors. These criteria do not affect the assignment of a badge for your title. We strongly recommend submitting both motion vector and depth suitable for reprojection. This will not automatically throttle your application, but will enable users to optionally run at higher refresh rates using improved reprojection techniques.

The depth and motion vectors shall be passed with the OpenVR or OpenXR API below.

OpenVR (Depth-assisted reprojection)IVRCompositor::Submit with VRTextureWithPoseAndDepth_t
OpenVR (Depth+Motion-assisted reprojection)IVRCompositor::Submit with VRTextureWithMotion_t
OpenXR (Depth-assisted reprojection)XR_KHR_composition_layer_depth
OpenXR (Depth+Motion-assisted reprojection) Vendor-agnosticXR_EXT_frame_synthesis
OpenXR (Depth+Motion-assisted reprojection) OculusXR_FB_space_warp

You can visualize the depth or motion vectors submitted by using the Draw Performance Criteria Game Textures in Headset option.

Additional information for UNSUPPORTED


If the VR title renders at a resolution that is too low, it will be indicated with the resolution is below [...] message. If the game uses dynamic resolution, this condition uses the minimum resolution observed frame-to-frame.

If the performance is not adequate, it will be indicated with the frame time > [...] message. The target is calculated based on the minimum required display refresh rate and includes the required headroom for SteamVR.

An additional warning is displayed if the game is using a resolution greater than the recommended resolution. If the game uses dynamic resolution, this condition uses the maximum resolution observed frame-to-frame.

SteamVR specifies the recommended resolution with the OpenVR or OpenXR API below.

OpenVRIVRSystem::GetRecommendedRenderTargetSize
OpenXRxrEnumerateViewConfigurationViews

To help troubleshoot transient frame time issues with your game, you can look at the perfcriteria.txt file in the SteamVR logs folder. The first 2 lines recapitulate the Application Name, Steam Application ID, target frame time, effective resolution, etc. The 3rd line is a list of frame times leading to the violation of the threshold set with the target frame time.

Clearing transient conditions


If a transient condition (eg: a loading screen that slows the rendering) or a well-understood issue is causing the overlay to mark the game as UNSUPPORTED, it is useful to clear this status on the overlay and resume evaluation.

This can be done by bringing up the SteamVR Now Playing screen, then selecting Clear Performance Criteria Status.

perf_criteria_clear.png