VR SLI
More actions
VR SLI is a VR rendering technology part of Nvidia's GameWorks VR, the developer toolkit that NVIDIA was promoting under the name VRWorks by March 2016.[1][2] VR SLI increases the performance of VR Apps by assigning 1 or more GPUs to each eye when stereo rendering (creating a different image for each eye).[3] Because VR utilizes 2 independent views, developers can parallelize the rendering across 2 different GPUs, then combine the images into a single frame that is sent to the HMD. It allows the app to have higher fps or graphical settings. Additionally, the VR SLI API allows developers to scale the entire system to more than 2 GPUs. Developers can split up the rendering any way they want across any number of GPUs they desire.[1][4]
NVIDIA introduced VR SLI in September 2014 as one component of "VR Direct", the set of virtual reality features it announced with the GeForce GTX 980 and GTX 970 graphics cards.[5][6] Unlike the alternate-frame rendering used by conventional SLI, in which each GPU draws a whole frame in turn, VR SLI splits a single stereo frame between GPUs so that each one draws one eye. NVIDIA graphics programmer Nathan Reed explained in 2015 that this improves both frame rate and latency relative to a single GPU, while alternate-frame rendering raises frame rate but "doesn't help with latency".[7] The technique is not automatic: an application or engine has to be written to use the VR SLI API.[7] NVIDIA's current documentation lists support for DirectX 11, OpenGL (through its multicast extension) and Vulkan on Maxwell and later GPUs.[8]
How it works
A VR application has to render the scene twice per frame, once from each eye's position, to produce correct parallax and depth cues. Reed wrote that this can almost double the CPU and GPU cost of a frame in the worst case, although some work such as physics simulation and shadow map rendering can be shared between the two views.[4] Since the two eye views do not depend on each other, VR SLI renders one eye on each GPU and then combines the two images into the frame sent to the headset. NVIDIA presented this as a way either to raise the frame rate or to use higher graphics settings while staying above a headset's 90 FPS refresh rate.[7]
Comparison with alternate-frame SLI
In NVIDIA's traditional alternate-frame SLI, the GPUs take turns: with two cards, one renders the even frames and the other the odd frames, with their start times staggered by half a frame. Reed described this as working "reasonably well to increase framerate relative to a single-GPU system", but not helping latency, and therefore not the best model for VR.[7] Because VR SLI gives the application explicit control, Reed noted that, in contrast to other SLI modes such as alternate-frame rendering, "it's not possible to automatically enable VR SLI in apps or games that haven't integrated it".[7]
GPU affinity masking
The simpler way to use VR SLI is GPU affinity masking. The application sets a bitmask of active GPUs, and every draw call it issues goes to those GPUs until the mask changes. An engine that already renders the two eyes one after the other can add dual-GPU support by setting the mask to the first GPU before drawing the left eye and to the second GPU before drawing the right eye. Work needed by both GPUs, such as shadow maps or GPU physics simulations, is sent to both by including both GPUs in the mask.[7] The same mechanism extends to more than two GPUs; NVIDIA gave four- and eight-GPU systems as examples.[7][4] NVIDIA's 2017 GDC slides show the mask being set with a SetGPUMask call and with the OpenGL function RenderGpuMaskNV.[9][10]
Broadcasting
Affinity masking still leaves the CPU submitting two full sets of draw calls, one per eye, so once rendering is split across two GPUs the CPU can become the main bottleneck.[7] VR SLI's second mode, broadcasting, submits one set of draw calls to both GPUs at once. Because the two eyes normally see the same geometry with the same shaders and textures, the main difference between them is the view position held in a constant buffer. VR SLI lets the application send a different constant buffer, viewport and scissor rectangle to each GPU, so each renders its own eye from a single command stream. NVIDIA said this cuts the number of draw calls per frame, and their CPU overhead, "roughly in half".[7] Broadcasting needs deeper engine changes than affinity masking, but the two modes can be mixed in the same application, so a developer can start with masking and convert parts of the renderer later.[4]
Cross-GPU transfers
After both eyes are rendered, the images must end up on one GPU to be sent to the display. VR SLI provides a call that copies a texture or buffer between two GPUs, or to and from system memory, over the PCI Express bus.[7] In the 2015 talk Reed noted that PCIe 2.0 x16 provides 8 GB/s, so transferring an eye view takes about a millisecond, "a significant fraction of your frame time at 90 Hz". The API therefore supports asynchronous copies that run in the background and are synchronized with fences, letting the transfer overlap other rendering work.[7]
Performance scaling
NVIDIA's VRWorks technical material states that how the GPUs are used is up to the application, that scaling "depends on the app", and that duplicated work such as shadow maps, GPU particles and physics simulations reduces the gain.[11] For the OpenGL version, NVIDIA reported that Autodesk VRED achieved a 1.7x speedup when rendering for the Oculus Rift and HTC Vive, and nearly a 2x speedup for stereo displays and projectors.[12]
History
| Date | Event |
|---|---|
| 19 September 2014 | NVIDIA announces "VR Direct" with the GeForce GTX 980 and 970, listing VR SLI among its features.[5][6] |
| 31 May 2015 | At Computex, NVIDIA moves its VR technologies under the GameWorks developer program and renames the collection GameWorks VR.[13] |
| 29 June 2015 | Nathan Reed publishes a technical description of VR SLI in a Road to VR guest article; the API is a DirectX 11 extension in a limited alpha program.[4] |
| 13 August 2015 | GameWorks VR enters beta; GeForce driver 355.60 enables VR SLI.[14] |
| 9 November 2015 | Epic Games and NVIDIA announce that GameWorks VR features, including VR SLI, will be integrated into Unreal Engine 4.[15] |
| 21 December 2015 | Driver 361.43 adds VR SLI for OpenGL through the GL_NVX_linked_gpu_multicast extension.[12][16]
|
| 16 March 2016 | At GDC 2016, NVIDIA announces industry partners for VRWorks; Valve says it is using VR SLI in The Lab.[2] |
| 14 July 2016 | NVIDIA releases VR Funhouse on Steam with VR SLI support.[17] |
| April 2017 | NVIDIA releases a VRWorks plugin, including VR SLI, on the Unity Asset Store for the Unity 2017.1 beta.[18][19] |
| July 2017 | Unity 2017.1 is released with VRWorks support on its main branch.[19] |
TweakTown's report on the September 2014 VR Direct announcement described VR SLI as a way to help a GeForce GTX SLI setup render the two eye views with better scaling between GPUs, and TechRadar wrote that developers could use SLI "to assign multiple GPUs to each eye".[5][6] When NVIDIA rebranded the program as GameWorks VR at Computex 2015, it also introduced Multi-res shading.[13] NVIDIA's 2015 GameWorks VR page listed VR SLI and multi-res shading as the features for game and application developers, while a separate SDK for headset developers covered Context priority, Direct mode and front buffer rendering.[1][14]
In his June 2015 article, Reed wrote that VR SLI then existed as a DirectX 11 extension, that DirectX 12 "already includes very similar multi-GPU support built in", and that NVIDIA hoped to add OpenGL and Vulkan extensions and eventually Linux support.[4] At that time the technology was available under a limited alpha program, with NVIDIA working with Oculus, Valve, Epic Games and others.[4] The beta SDK and the 355.60 driver followed in August 2015; Road to VR noted that every GameWorks VR feature, VR SLI included, had to be targeted and enabled within each piece of software before users would see any benefit.[14]
The OpenGL version arrived in December 2015. NVIDIA's GL_NVX_linked_gpu_multicast extension lets a single OpenGL context control several GPUs in an SLI group; ordinary OpenGL commands are broadcast to every GPU, and new functions allow per-GPU buffer uploads and copies of textures between GPUs.[12] It was later replaced by GL_NV_gpu_multicast, published in the OpenGL registry, which deprecates the earlier extension, gives an application "fine-grained, explicit application control over multiple GPUs with a single context" and ships in NVIDIA drivers from the 370 series onward.[9] Road to VR observed at the time that few applications had been written to use the new APIs.[16]
Hardware and API support
NVIDIA's requirements for VR SLI have changed over time. In June 2015 Reed wrote that, as a driver feature, it worked on NVIDIA GPUs "all the way back to the GeForce GTX 600 series".[4] NVIDIA's current VR SLI page lists Maxwell or newer GPUs, naming the GeForce GTX 900 series and Quadro M5000 and higher, and states that VR SLI is integrated with Unreal Engine and Unity.[8]
| Graphics API | Mechanism | Notes |
|---|---|---|
| DirectX 11 | Extension API with GPU affinity masking, broadcasting and cross-GPU copy calls | First implementation; under NDA in mid-2015, then released in the GameWorks VR beta.[7][14][10] |
| OpenGL | GL_NVX_linked_gpu_multicast, later GL_NV_gpu_multicast |
Driver 361.43 and newer for GeForce and Quadro GPUs.[12][9] |
| Vulkan | Multi-GPU support listed on NVIDIA's VRWorks pages | NVIDIA says VR SLI "supports OpenGL and now Vulkan VR applications" and lists a separate Vulkan XR Multi-GPU feature with code on GitHub.[3][8] |
Engine and application support
Because VR SLI must be integrated by developers, NVIDIA worked on engine support. After the November 2015 announcement with Epic Games, which Road to VR reported was expected to reach Unreal Engine 4.11,[15] NVIDIA made VR SLI available in a "VRWorks 4.12 Graphics branch of UE4" for developers with access to the Unreal Engine source on GitHub.[20] At GDC 2017 NVIDIA listed VR SLI among the features in its VRWorks branches for Unreal Engine 4.13 and 4.14.[10] For Unity, NVIDIA released a VRWorks plugin on the Unity Asset Store that supports Unity 2017.1 beta 2 and later; VR SLI was one of the features available from that first beta.[18][19]
Valve graphics programmer Alex Vlachos said in March 2016 that Valve was "seeing solid performance improvements using NVIDIA VRWorks and VR SLI technology in The Lab and other experiences we are developing for SteamVR".[2] NVIDIA's own VR Funhouse, released on Steam on 14 July 2016 for the HTC Vive, uses VR SLI with one GPU per eye and can add a third GPU dedicated to PhysX.[21][17] For the High graphics setting its store page lists a GeForce GTX 1080 or greater, or GTX 980 Ti cards in SLI or greater, each paired with a dedicated PhysX card of GTX 980 Ti class or greater.[17] Outside games, the OpenGL version was used in Autodesk VRED.[12]
Related technologies
AMD offered a comparable one-GPU-per-eye feature, Affinity Multi-GPU, in its LiquidVR SDK. Croteam developer Karlo Jez described adding it to Serious Sam VR: The Last Hope in 2016: each GPU received different per-eye constant buffer values while broadcast commands drew the scene on both cards. In Croteam's test scene a single Radeon RX 480 needed about 12 ms of GPU time per frame, triggering SteamVR reprojection at 45 FPS, while two RX 480 cards finished in about 8 ms and CPU time fell from about 8 ms to about 5.5 ms, enough for a steady 90 FPS.[22] In PC Perspective's test, adding a second RX 480 raised performance by about 55 percent.[23]
On 17 September 2020 NVIDIA announced it would stop adding new SLI driver profiles for RTX 20 series and earlier GPUs from 1 January 2021; games with DirectX 12 or Vulkan multi-GPU implementations would continue to work.[24] As of September 2026, NVIDIA's VRWorks for Graphics page still lists VR-SLI, alongside Vulkan XR Multi-GPU, among its features for application developers.[3]
See also
References
- ↑ 1.0 1.1 1.2 "GameWorks VR". NVIDIA Developer (archived 5 September 2015). NVIDIA. http://web.archive.org/web/20150905173324/https://developer.nvidia.com/virtual-reality-development. Retrieved 2026-09-27.
- ↑ 2.0 2.1 2.2 "Virtual Reality Ecosystem Embraces NVIDIA VRWorks, Making It the Gold Standard for Developers". NVIDIA Newsroom. NVIDIA. 2016-03-16. https://nvidianews.nvidia.com/news/virtual-reality-ecosystem-embraces-nvidia-vrworks-making-it-the-gold-standard-for-developers. Retrieved 2026-09-27.
- ↑ 3.0 3.1 3.2 "VRWorks for High-Performance VR Graphics". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/vrworks. Retrieved 2026-09-27.
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Nathan Reed (2015-06-29). "NVIDIA Takes the Lid Off 'Gameworks VR' - Technical Deep Dive and Community Q&A". Road to VR. https://www.roadtovr.com/nvidia-takes-the-lid-off-gameworks-vr-technical-deep-dive-and-community-qa/. Retrieved 2026-09-27.
- ↑ 5.0 5.1 5.2 Anthony Garreffa (2014-09-19). "NVIDIA bets on VR by announcing VR Direct, works with the Oculus Rift". TweakTown. http://web.archive.org/web/20140921061833/http://www.tweaktown.com:80/news/40194/nvidia-bets-on-vr-by-announcing-vr-direct-works-with-the-oculus-rift/index.html. Retrieved 2026-09-27.
- ↑ 6.0 6.1 6.2 Nick Pino, Lily Prasuethsut (2014-09-19). "Nvidia unveils GeForce GTX 980 and 970 GPUs with an eye towards VR". TechRadar. https://www.techradar.com/news/gaming/nvidia-announces-new-geforce-980-and-970-during-game24-event-1266150. Retrieved 2026-09-27.
- ↑ 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 7.10 7.11 Nathan Reed (2015-08-17). "NVIDIA GameWorks VR (SIGGRAPH 2015 slides with speaker notes)". Nathan Reed's coding blog. https://www.reedbeta.com/talks/gameworks-vr/GameWorks_VR_SIGGRAPH_2015.pdf. Retrieved 2026-09-27.
- ↑ 8.0 8.1 8.2 "VRWorks - VR SLI". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/vrworks/graphics/vrsli. Retrieved 2026-09-27.
- ↑ 9.0 9.1 9.2 "NV_gpu_multicast". Khronos OpenGL Registry. Khronos Group. 2019-04-02. https://registry.khronos.org/OpenGL/extensions/NV/NV_gpu_multicast.txt. Retrieved 2026-09-27.
- ↑ 10.0 10.1 10.2 Cem Cebenoyan, Edward Liu, Daniel Price (2017). "Accelerating Your VR Games with VRWorks". Game Developers Conference 2017 (slides). NVIDIA. http://behindthepixels.io/assets/files/VRWorks_GDC17.pdf. Retrieved 2026-09-27.
- ↑ "NVIDIA VRWorks SDK (technical overview slides)". NVIDIA Developer. NVIDIA. https://d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/VRWorks/VRWORKS_Technical.pdf. Retrieved 2026-09-27.
- ↑ 12.0 12.1 12.2 12.3 12.4 Ingo Esser (2015-12-21). "VR SLI: Accelerating OpenGL Virtual Reality with Multi-GPU Rendering". NVIDIA Technical Blog. NVIDIA. https://developer.nvidia.com/blog/vr-sli-accelerating-opengl-virtual-reality-multi-gpu-rendering. Retrieved 2026-09-27.
- ↑ 13.0 13.1 Ryan Smith (2015-05-31). "NVIDIA Announces GameWorks VR Branding, Adds Multi-Res Shading". AnandTech. http://web.archive.org/web/20150601233646/http://www.anandtech.com:80/show/9305/nvidia-announces-gameworks-vr-branding-adds-multires-shading. Retrieved 2026-09-27.
- ↑ 14.0 14.1 14.2 14.3 Paul James (2015-08-13). "NVIDIA 'Gameworks VR' Beta and New 'VR SLI' Enabled Drivers Now Available". Road to VR. https://roadtovr.com/nvidia-gameworks-vr-beta-and-new-vr-sli-enabled-drivers-now-available/. Retrieved 2026-09-27.
- ↑ 15.0 15.1 Paul James (2015-11-09). "Unreal Engine to Add NVIDIA Gameworks VR Support, Including VR SLI". Road to VR. https://roadtovr.com/unreal-engine-to-add-nvidia-multi-res-shading-and-vr-sli-support/. Retrieved 2026-09-27.
- ↑ 16.0 16.1 Paul James (2015-12-21). "NVIDIA Releases OpenGL Friendly 'VR SLI' Capable Driver". Road to VR. https://roadtovr.com/nvidia-releases-opengl-friendly-vr-sli-capable-driver/. Retrieved 2026-09-27.
- ↑ 17.0 17.1 17.2 "NVIDIA VR Funhouse on Steam". Steam. Valve. https://store.steampowered.com/app/468700/NVIDIA_VR_Funhouse/. Retrieved 2026-09-27.
- ↑ 18.0 18.1 "VRWorks Support for Unity Now Available". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/nvidia-vrworks-support-unity-engine-now-available. Retrieved 2026-09-27.
- ↑ 19.0 19.1 19.2 Dominic Brennan (2017-07-13). "Unity's Main Branch Now Supports NVIDIA VRWorks for Enhanced Rendering Features". Road to VR. https://roadtovr.com/nvidia-vrworks-coming-unity/. Retrieved 2026-09-27.
- ↑ "VRWorks Unreal Engine Branch adds support for VR SLI, Lens Matched Shading, and Single Pass Stereo". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/vrworks-unreal-engine-branch-adds-support-vr-sli-lens-matched-shading-and-single-pass-stereo. Retrieved 2026-09-27.
- ↑ "VR Funhouse packed with GameWorks technology". NVIDIA Developer. NVIDIA. https://developer.nvidia.com/vr-funhouse-packed-gameworks-technology. Retrieved 2026-09-27.
- ↑ Karlo Jez (2016-10-31). "Implementing LiquidVR Affinity Multi-GPU support in Serious Sam VR". AMD GPUOpen. AMD. https://gpuopen.com/learn/implementing-liquidvr-affinity-multigpu-in-serious-samvr/. Retrieved 2026-09-27.
- ↑ Ryan Shrout (2016-11-14). "Serious Sam VR: The Last Hope scales with multi-GPU". PC Perspective. https://pcper.com/2016/11/serious-sam-vr-the-last-hope-scales-with-multi-gpu/. Retrieved 2026-09-27.
- ↑ Brad Chacos (2020-09-18). "RIP: Nvidia slams the final nail in SLI's coffin, no new profiles after 2020". PCWorld. https://www.pcworld.com/article/393426/rip-nvidia-slams-the-final-nail-in-slis-coffin-no-new-profiles-after-2020.html. Retrieved 2026-09-27.