Direct Driver Mode

Direct to Rift mode

What exactly does "direct to Rift mode" do?
Ensures that Rift software finds the Rift's display for less complex setup.
Ensures that Rift runs at native 75Hz refresh rate to reduce latency.
Ensures that vsync syncs to the Rift's display, not the main display, to prevent tearing.
Bypasses desktop compositing to reduce latency.

From :

The main function of "DirectToRift.exe" is to load the direct mode driver before Unity initializes D3D. You can accomplish that with the "naked" executable by loading our driver instead of the usual D3D DLLs. However, you'll have to ensure the app starts at 1920x1080 and in the right full-screen state. That means passing the "-window" argument in direct mode and the "-fullscreen" argument in extended mode. Or you can hold ALT the first time the application runs to force the resolution dialog to appear. There, you can choose the resolution, full-screen state, and (4.5.3+ only) the target monitor. For Unity 4.5.2 and earlier, when in extended mode, this won't work. Unity would have to include the "-adapter N" argument, where N is the display number of the Rift.

Note that if you're running in extended mode, our driver will actually cause crashes and force the wrong resolution if you load it. So only do the following if you're running in direct mode:
1) copy C:\Windows\SysWOW64\OVRDisplayRT32.dll or C:\Windows\system32\OVRDisplayRT64.dll to the same directory as the app binary.
2) Make two copies of the DLL in that directory.
3) Name the first copy "d3d9.dll"
4) Name the second copy "dxgi.dll"
5) Make sure you are using direct mode.
6) If you want to run in extended mode, delete or rename both of the DLLs.

Now if you select "build & run", it should work as expected.

Since 0.4.2 issues around Direct-to-Rift mode fall into one of three categories:
- Desktop multi-gpu config (SLI, heterogenous, etc.)
- Laptop multi-gpu config (Optimus, et. al.)
- Software incompatibility from ASUS Gamer OSD, DisplayLink, Virtu MVP, etc. etc,. etc.


Optimus and DisplayLink introduce further elements of randomness to our operation and the goal of the driver is to standardize the experience with/in the Rift.

DisplayLink is bad news right now. They interfere with the fundamental operation of the Rift. Either uninstall DisplayLink completely or avoid using Direct mode.
DisplayLink directly interferes with rendering. You'll have to remove it completely if you want to use Direct Mode.

Black or white screen
It's going white or black because mirroring has been disabled to that window. Enable mirroring and you should see your content as expected mirrored to the Rift.

Dual GPU
Dual GPU configs are fairly hard to support. The problem is that often the game picks the device that doesn't have the Rift attached to it. There's not an easy or fast way to get the rendered data to the Rift to scan out. It has to cross the PCIe bus and there's no standard, fast way of doing this. With Nvidia-to-Nvidia you might be ok via CUDA but that's vendor specific. Suffice to say we're working on it but this will almost always be a suboptimal setup for VR.

Directx 9
Yeah, that's due to our drivers supporting DX11 much, much better than DX9. DX9 unifies the display enumeration and rendering API's. They split them out in DX11 and this helps our model greatly.
It's 2014, we should be using DX11. It's an oddity of Unity that it doesn't by default use DX11.