VRWorks - Context Priority
Context Priority provides headset developers with control over GPU scheduling to support advanced virtual reality features such as asynchronous time warp, which cuts latency and quickly adjusts images as gamers move their heads, without the need to re-render a new frame. Combined with the Pre-emption support of NVIDIA’s Pascal-based GPUs, Context Priority delivers faster, more responsive refreshes of the VR display.
|Hardware:||Compatible with: Maxwell (specific SKUs) and Pascal based GPUs. (GeForce GTX 900 series and Quadro M5000 and higher)|
|Software:||Compatible with the following APIs: DX11, DX12, OpenGL (Through Interop).|
Asynchronous time warp (ATW) is an innovative technique for reducing latency by adjusting a rendered (warped) image based on the latest head tracking input.
NVIDIA provides SDK support for setting context priority which gives developers finer control for switching between graphics contexts and warp contexts, enabling developers to do late warps based on the most recent head tracking input in order to further reduce head tracking latency.
In order to perform the timewarp, the GPU needs to be interrupted from it’s current rendering task via the VRWorks Context Priority API, and quickly re-tasked to perform the timewarp operation.
If we look at how this applies to Maxwell, the timewarp request needs to come slightly earlier than the theoretical limit to accommodate any variability in the time it takes for the GPU to finish the last draw call.
In Maxwell, the GPU can be interrupted as soon as a draw call (command pushbuffer) finishes. With Pascal, we’ve added pixel level pre-emption, so the GPU can be interrupted with a fine granularity.
With Pascal and support for pre-emption, we can interrupt the GPU with much finer granularity allowing us to reduce the buffer and do the timewarp closer to the display scanout, even further reducing perceived latency.