VRC Validator

The Virtual Reality Check (VRC) Validator tool runs automated tests to determine whether your Oculus Rift application is ready for the Oculus Store technical review process. VRC Validator ensures that your app meets most of the Rift VRC guidelines and can reveal issues that must be addressed before your app can pass the review process. Using VRC Validator when your Rift app nears completion is a good way to make sure you are on the path to meet technical and performance-related requirements.

Some of the issues VRC Validator can assist you in identifying and fixing include:

  • Low frame rate issues in your app
  • Reserved interaction failures
  • Entitlement check functionality issues

In addition to providing results based on the various technical tests, VRC Validator provides guidance via relevant documentation and best practices to help you resolve issues.

VRC Validator is automatically installed with the Oculus PC runtime during Rift setup. It includes both a command-line interface and a GUI (through Oculus Debug Tool).

Run Tests from the Command Line

VRC Validator can run all default tests at once or selected tests based on which parts of your app concern you.

Before trying to run any tests, confirm that OculusVRCValidator.exe is in C:\Program Files\Oculus\Support\oculus-diagnostics (default installation). If the file is not present, reinstall the latest version of the Oculus runtime and the tool should be installed.

You do not need to wear the Rift during the tests, but one must be set up and connected to the PC running the tests. Each test should take between 10 to 30 seconds to complete. If a test does not complete in this time range, please re-run the test.

Run All Default Tests

To run all default VRC Validator tests, follow these steps:

  1. Open a Windows command prompt with administrative privileges.
  2. Go to C:\Program Files\Oculus\Support\oculus-diagnostics\.
  3. Run OculusVRCValidator.exe with the --path parameter set to the executable file of your Rift app. For example:
OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe"

The tests results are written to the command prompt window. You can also log the test results to a .txt file.

VRC Validator will retry the tests if any events were lost while the application was being evaluated.

Run a Selected Test

To run a selected test, append the --test <test name> option to your OculusVRCValidator.exe command with <test name> specifying a single test. To see the list of available tests, run OculusVRCValidator --list_tests or see the “Tests and Pass Criteria” section of this topic. For example, to run the TestEntitlementCheck test, you would enter the following command:

 OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --test TestEntitlementCheck

Run Multiple Selected Tests

If you want to run several selected tests, you can add more than one --test <test name> option.

For example, to run the TestFrameRate and TestAppShouldQuit tests, you would enter the following command:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --test TestFrameRate --test TestAppShouldQuit

The tests results are written to the command prompt window. You can also log the test results to a .txt file.

Log Test Results to a File

Append the -l option to the end of your OculusVRCValidator.exe command to log the test results to a text file in the same directory as the tool. For example:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-oculus-video\Cinema.exe" -l

If you want to write the test results to a different file, use --log_file "<full path>". For example:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-oculus-video\Cinema.exe" --log_file "C:\temp\log.txt"

In addition to providing test results, log files may also provide links to relevant documentation and best practices to help you resolve issues.

Delay the Start Time of Tests

In some cases, it may be necessary to add a delay before each test begins so you can navigate to a specific part of your app that needs testing. To do so, append the --load_time_ms <duration> option to your OculusVRCValidator.exe command. The duration is measured in milliseconds.

For example, the following command delays the start of tests for 30 seconds:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --load_time_ms 30000

To make the tests wait until you press Enter in the command prompt window, specify a duration of 0. The command prompt window must have focus. Here is an example:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --load_time_ms 0

Run Tests from the GUI

The Oculus Debug Tool provides access to a VRC Validator dialog to simplify testing. To use this GUI interface, follow these steps:

  1. Make sure the Oculus Windows app is running and the Rift is connected to the PC.
  2. Run the Oculus Debug Tool and select File > Validate App....

  3. The Validate App dialog appears. For Executable Path, browse to an executable VR application that you want to test. For Arguments, enter any of the command-line arguments that you want to specify for the VR application. Then select the VRC tests that you want to run. In this example, three VRC tests are selected.

  4. Click OK to run the tests. The Validating app dialog appears. In the left panel, a check mark indicates a successful test, an x indicates a failed test, and an animated clock icon indicates a test that is currently underway. Detailed results are shown in the right panel.

Tests and Pass Criteria

The default tests of VRC Validator test your app against specific Oculus Store technical review criteria. If your app fails any of these default tests, it is likely to fail its official Oculus Store technical review.

There are also a number of optional tests. These tests are not run during Oculus Store technical review, but ensuring that your app can pass them adds quality to your app.

Default Tests (in order they will be tested)

Test NamePass Criteria
TestSdkVersionYour app must use the correct versions of Oculus PC SDK, Unity, or Unreal Engine.
TestEntitlementCheckYour app must perform an Oculus Platform entitlement check within 10 seconds of launch.
TestOculusDLLIncludesYour app must not distribute its own copies of Oculus DLLs.
TestLaunchIntoVRYour app must launch into VR within 4 seconds and display a non-headlocked layer.
TestFrameRateYour app must maintain 90 frames per second.
TestSubmitFramesWhenVisibleYour app must submit frames when visible.
TestSubmitFramesWhenNotVisibleYour app must stop submitting frames when the Universal Menu is open.
TestResponseToRecenterRequestYour app must respond to requests to reset the view.
TestAppShouldQuitYour app must quit gracefully.
CheckForExtraneousFilesYour app must not contain DLLs from other platforms.
TestAudioOutputYour app must target the audio device specified in the Oculus app.

Optional Tests (in order they will be tested)

Test NamePass Criteria
TestMismatchedAdaptersYour app must run correctly when the HMD is connected to a different GPU than the main display.
TestResponseToDisplayLostYour app must either quit properly or stop submitting frames when the HMD is unplugged from the GPU.
TestPropertyAccessYour app must not use any deprecated properties.
RunErrorCaptureYour app must not generate runtime errors.
TestResponseToIadChangesYour app must respond to changes in the lens slider.

Individual Test Details

This section provides additional information on the tests run by VRC Validator.

TestSdkVersion

Tests if your app is built with the supported versions of Oculus PC SDK, Unity, or Unreal Engine.

TestEntitlementCheck

Tests if your app performs an Oculus Platform entitlement check within 10 seconds of launch.

TestOculusDLLIncludes

Tests if your app is distributing copies of the following Oculus DLLs instead of loading the DLLs from the Oculus runtime directory:

  • LibOVRRT32_1.dll
  • LibOVRRT64_1.dll
  • LibOVRPlatform32_1.dll
  • LibOVRPlatform64_1.dll
  • LibOVRP2P32_1.dll
  • LibOVRP2P64_1.dll
  • LibOVRAvatar32_1.dll
  • LibOVRAvatar64_1.dll

TestLaunchIntoVR

Tests if your app displays a non-headlocked graphic in VR and responds to head tracking within 4 seconds of launch. If you want to test a different duration, append the --max_time_to_frame **duration** option to your command line. Specify the duration in milliseconds.

Note: This test is known to fail every time if you are using Unity Personal (the free version of Unity). The issue is that Unity Personal takes a long time to load, and during this period it always displays a splash screen. However, the splash screen produced by Unity Personal does not render into VR, although it appears on the computer monitor. The workaround for this is to use one of the Pro versions of Unity to generate your app for submission to the Oculus Store.

TestFrameRate

Tests if your app displays graphics in the headset at 90 frames per second.

Note: If desired, you may add --output_fps to print the fps at 500ms intervals as the test runs.

TestSubmitFramesWhenVisible

Tests if your app renders when it is visible. The test counts the number of texture swap chains committed and reports it at the end of the test.

TestSubmitFramesWhenNotVisible

Tests if your app stops submitting frames when the Universal Menu is open.

TestResponseToRecenterRequest

Tests if your app resets the user’s position and orientation when a user selects Reset View in the Universal Menu.

TestAppShouldQuit

Tests if your app quits properly from the Universal Menu with ovr_Destroy when it receives a quit request.

CheckforExtraneousFiles

Tests if your app folder contains extraneous .pdb symbol files.

TestAudioOutput

Tests if your app targets the audio device selected in the Audio Output in VR setting in the Oculus app.

TestMismatchedAdapters

Tests if the application supports plugging the HMD and the primary display into different display adapters. To run this test, the system must have at least two separate display adapters, with the HMD and primary display connected to different display adapters.

TestResponseToDisplayLost

Tests if the application responds gracefully if the HMD cable is unplugged from the display adapter. Once the HMD display is lost, the application should either quit with ovr_Destroy, or pause and stop submitting frames to the HMD. For example:

OculusVRCValidator --path "C:\Program Files\Oculus\Software\Software\oculus-first-contact\TouchNUX.exe" --test TestResponseToDisplayLost

During this test, you will be asked to unplug the HMD from the display adapter, allow the test to run, and then plug the HMD back in.

TestPropertyAccess

Tests if your app calls any internal, deprecated, or otherwise unsupported API functions that are carryovers from DK2 development. Deprecated property functions include:

  • User
  • Name
  • Gender
  • PlayerHeight
  • EyeHeight
  • NeckEyeDistance
  • EyeNoseDist

RunErrorCapture

Tests if your app generates runtime errors. Some common errors include:

  • ovrError_InvalidParameter - Invalid parameter provided. More information is output about the function which is called with invalid parameter.
  • ovrError_MismatchedAdapters - Occurs when the HMD is not plugged in the primary display adapter and the application is not handling this.
  • ovrError_LeakingResources - Calling application has leaked resources.
  • ovrError_TextureSwapChainFull - ovr_CommitTextureSwapChain was called too many times on a texture swapchain without calling submit to use the chain.

TestResponseToIadChanges

Tests if your app correctly adjusts for Inter Axial Distance (IAD) changes by getting updated HmdToEyeOffset values from ovr_GetRenderDesc at least once every 500ms. It also tests that your app actually responds to IAD changes.