Skip to main content
Up and Coming
June 18, 2013

Oculus Rift automatic down-sampling and Duplicated displays

This came up in the Half-Life thread, but it isn't specifically a Half-Life question, so I wanted to start a new thread for this issue.

The Rift exposes a bunch of different valid resolutions to Windows even the panel itself is 1280x800 and only 1280x800. It goes up to 1920x1200 (which is also 16:10). Not sure how far it goes down.

After some research (and measuring) it seems to us that the down-sampling occurs in the Rift converter box and that it doesn't introduce significant latency. The way we measure latency (with a high speed camera and some blinky LEDs) we have a minimum resolution of about 3ms, so a 0ms measurement means something less than 3ms. This is all just display latency and doesn't include any measurable rendering time or tracking. This was all under DX11, in case that's significant. (The Source games actually run under DX9.)

Full screen with the display extended to the Rift (not duplicated):
1280x800: 0ms
1920x1200: 0ms

Windowed without Aero and the display extended to the Rift:
1280x800: 10ms

When you switch to duplicating the desktop monitor and the Rift things get strange. The tester runs at something like 1000Hz, and it appears that Windows is actually dropping most of the frames and never sending them to the display at all. This happens in both Full-screen and Windowed, but the final swap in windowed is slow enough that fewer frames get dropped. It dropped so many frames that measuring the latency was actually hard to do.

So the verdict is:
1) Letting the Rift scale down the frames is more or less fine
2) I need to switch the Source games to use full screen instead of windowed to save 10ms
3) Cloning your main display is bad and is probably causing extra latency.

    32 replies

    joeAuthor
    Up and Coming
    June 19, 2013
    "tomf" wrote:
    The one bizarre issue I had was that one of the P4V screens (File Diff?) would insist on popping up on the secondary monitor (i.e. the Rift). No other program did this. I got used to hitting the magic key combo to retrieve my window: Alt+Space, M, Down cursor, then move the mouse.


    WindowsKey-Left or WindowsKey-Right will pop the window to the next monitor over too.

    Also, real programmers use P4Win, which doesn't have that problem.
    Participant
    June 19, 2013
    "joe" wrote:
    WindowsKey-Left or WindowsKey-Right will pop the window to the next monitor over too.

    Wait - you haven't already remapped the windows key to Ctrl-M?
    Tom Forsyth - OculusVR coder
    Up and Coming
    July 22, 2013
    "Pokey" wrote:
    Someone said windows-P was a fast way to switch primary monitors in another thread. Just switch every time you take off / put on the Rift


    Does this get rid of latency?

    @Joe, so if you set rift to primary dispaly through this method, is it same as running a splitter?

    Also, have you tested this on an ATI card?

    Thanks!

    ~Quake
    joeAuthor
    Up and Coming
    July 22, 2013
    "QUAKE" wrote:
    Does this get rid of latency?

    @Joe, so if you set rift to primary dispaly through this method, is it same as running a splitter?

    Also, have you tested this on an ATI card?


    No. The latency comes from splitting in software instead of hardware. There's a blit in windows in there somewhere.

    We haven't tried an ATI card. If you do, please post your results. I suspect they'll be the same, but you never know for sure until you try. Either way it's not something I would recommend people do because a large number of people have NVIDIA cards.
    Up and Coming
    November 12, 2013
    "crespo80" wrote:
    "joe" wrote:

    When you switch to duplicating the desktop monitor and the Rift things get strange. The tester runs at something like 1000Hz, and it appears that Windows is actually dropping most of the frames and never sending them to the display at all. This happens in both Full-screen and Windowed, but the final swap in windowed is slow enough that fewer frames get dropped. It dropped so many frames that measuring the latency was actually hard to do.

    This sounds really strange to me, are you sure you are setting the Rift as the Source of cloning? Because the strange behaviour you describe is exactly what I was perceiving the first time I tried the Rift, there was a really bad (and unusual) stuttering to the image; then I discovered I had to select the Rift as Source of the clone. After that I didn't notice any difference between cloning and extending.


    I just discovered this after being troubled by vsync issues with the Rift and my cloned monitor. No one else commented on your post so I'm not sure anyone picked up on it. At least in the Nvidia control pannel when you clone displays you can right click and pick which display is the source for the clone. This "clone source" display will get benefits like vsync. The other cloned display will not.

    See attached screenshot.
    Participant
    March 3, 2014
    So it's okay to set the resolution higher than 1280x800 in the res options. I noticed it went to 1080 as well but didn't want to mess anything up? Sorry if thats a stupid question i've been reading through the thread and just wanted to make sure i'm understanding it correctly
    Inspiring
    March 3, 2014
    You probably want to use 1920x1200 (not 1080P) since it's the same aspect ratio as the native resolution.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Participant
    March 4, 2014
    how do I go about getting games to open on the rift and not my main monitor? I've been doing it by mirroring both of them but apparently that's not the best way?
    Up and Coming
    March 4, 2014
    "DatMiyamoto" wrote:
    how do I go about getting games to open on the rift and not my main monitor? I've been doing it by mirroring both of them but apparently that's not the best way?


    just make a shortcut of your .exe open settings (right click) put -adapter 1 at the end!

    ------------ "H:\Oculus Rift Stuff\demos\RiftsCave25\Rift's Cave 2.5\Rift's Cave v2.5.exe" -adapter 1 --------------------
    My first unity steps: In A Distance | download/post: http://goo.gl/N90bUU A video collection of oculus rift related stuff: http://oculus.quitebeyond.de
    Inspiring
    March 10, 2014
    "cybereality" wrote:
    You probably want to use 1920x1200 (not 1080P) since it's the same aspect ratio as the native resolution.


    As long as you set up the projection matrix using the aspect ratio based on the Rift native resolution reported in HMDInfo, this doesn't matter. You get the effect of some small stretching if you're also displaying the output on another monitor that's running at 1920x1080 natively, but the stretching only applies to the other monitor. On the Rift the output will look correct.

    Of course this depends on the Rift's current property of scaling it's input to match the screen exactly. Some displays will only output to a subset of pixels if they receive a signal with a different aspect ratio than their native one.
    Brad Davis - Developer for High Fidelity Co-author of Oculus Rift in Action