SteamVR

SteamVR

roc_boc May 12, 2018 @ 6:31pm
VR SLI and how it works
Hi guys,

I saw several discussions about this, like here and wanted to clarify how VR SLI works since I recently added support in VR Toolbox and had to learn the details of it. I decided to document my findings in hope you find it useful / interesting :-)

Game Support

Unlike traditional SLI, for VR the GPU drivers do not automatically enable SLI without explicit support in the game. The game needs to render the left eye on GPU0 and the right eye on GPU1 (or vice-versa). There are two ways how this can be done:

  1. The game masks the render commands such that when it renders to left eye, it disables rendering on GPU1. Then when it renders the right eye, it disables GPU0.
  2. Or... the game configures the camera parameters differently on both GPUs, and then renders the scene only once.

Doing #1 is almost trivial, but it doesn't result in optimal performance because the CPU still has to process the two eyes separately. #2 is where 2x gains can be expected, as now the CPU generates only the command stream for a single scene render and it gets broadcast to the 2 GPUs.

Note that traditional alternate frame rendering SLI is in general not as useful for VR. If we were to use it, GPU0 will render both eyes for frame N, followed by GPU1 rendering both eyes for frame N+1. This will increase the frame rate, but will not #1 improve latency nor #2 decrease CPU load.

Runtime Support

After the game completes rendering, there is a problem: different GPUs hold the left and right eye images, but the HMD is connected to only one of them. There are 3 ways to address this:

  1. The game explicitly copies the right eye from GPU1 to GPU0.
  2. The runtime performs late / lens warp on the corresponding GPU and then copies the now smaller surface from GPU1 to GPU0. (faster)
  3. The runtime performs late / lens warp on the corresponding GPU and then composits the final image through the SLI bridge in hardware. (fastest, 2x scaling)

Currently, as far as I can observe neither SteamVR nor Oculus support VR SLI at all, meaning we are at option #1.

Unlike traditional monitor SLI, this transfer cannot be overlapped with the next frame render because of the VR low latency requirements. Therefore the GPUs just sit idle waiting for the frame to get transferred from one GPU to the other vie PCI Express. This can take significant time, especially in higher resolutions HMD and completely negate any benefit of VR SLI. This for example happens in VR Toolbox and the Vive Pro. Because of the increased resolution of the Vive Pro, the frame transfer time is about as long as the now halved render time.

Option #3 I believe is easy to implement because the VR SLI API has a flag that automatically enables composition through the bridge. I have posted on the SteamVR developer portal detailing how this can be done. Hopefully the busy Valve engineers coming up with awesome stuff will find a couple days to add support for us, the SLI fans.

- R
Last edited by roc_boc; May 14, 2018 @ 11:28am
< >
Showing 1-6 of 6 comments
+1 i want sli in my vr game
rhylos May 13, 2018 @ 2:36am 
+1
Ghanth May 13, 2018 @ 4:42am 
+1 VR and SLI has so much benefit to work jointly. But the way things are designed for now is holding back the adoption of it.

The lowest level to handle SLI, the better. I'm convinced that it's at nVidia to redesign VR SLI properly. (Games developpers are busy enough with their own stuff, so it's on nVidia's side to handle to complexity of this...).

Option #4 nVidia update their driver to handle SLI as a PLUG AND PLAY feature. When more than 1 card is detected, nVidia SLI heads its renderings on proper GPUs and that's done at nVidia driver's level whitout the need for 3rd party software to bother with that.

Everyone wins: Every existing VR games will benefit the SLI feature, VR experiences will be enhanced, Game studios will unleach their creativeness, VR will attract more people, VR gamers will want a second GPU, nVidia will sell more cards
Last edited by Ghanth; May 13, 2018 @ 7:52am
--ranXerox-- May 13, 2018 @ 12:19pm 
gtx1080 for 540 right now. prices dropped. dirt cheap! I hate sli
--ranXerox-- Apr 7, 2019 @ 5:08pm 
I upgraded to 2080ti. Screw sli.
KONCRETEMONKI Jan 20, 2024 @ 5:00pm 
I upgraded to 2080ti sli. +! for vr sli
< >
Showing 1-6 of 6 comments
Per page: 1530 50

Date Posted: May 12, 2018 @ 6:31pm
Posts: 6