Valve Wants To Improve AMDGPU Linux Driver For VR To Avoid Motion Sickness

Andres Rodriguez of Valve issued the proposal and is willing to do the actual work to implement high priority scheduling in AMDGPU. He explained, "We are interested in feedback for a mechanism to effectively schedule high priority VR reprojection tasks (also referred to as time-warping) for Polaris10 running on the amdgpu kernel driver."
Enhancing the driver is being driven to avoid AMD Linux gamers from experiencing motion sickness. The Valve developer went on to explain, "The main objective of reprojection is to avoid motion sickness for VR users in scenarios where the game or application would fail to finish rendering a new frame in time for the next VBLANK. When this happens, the user's head movements are not reflected on the Head Mounted Display (HMD) for the duration of an extra frame. This extended mismatch between the inner ear and the eyes may cause the user to experience motion sickness. The VR compositor deals with this problem by fabricating a new frame using the user's updated head position in combination with the previous frames. This avoids a prolonged mismatch between the HMD output and the inner ear. Because of the adverse effects on the user, we require high confidence that the reprojection task will complete before the VBLANK interval. Even if the GFX pipe is currently full of work from the game/application (which is most likely the case)."
Valve is planning for this work to be predictable from submission to fence signaling and also work for compute workloads, support low-submission latencies, and other wish-list items. The main concept is to provide a "high priority compute queue" that is exposed to user-space. Once work is going, Valve is also willing to work on it to see it implemented within the RADV Vulkan driver, since Vulkan is playing a big role with Valve's VR initiative.
More details via this mailing list thread.
19 Comments