Page MenuHome

VR Support through OpenXR - TODO's
Open, NormalPublic

Description

VR Support through OpenXR - TODO's

This task is to list open ToDo's for the Core Support of Virtual Reality Headsets through OpenXR GSoC project. Most of the items here should be tackled as part of the GSoC coding period.
New features to be added are not listed here.

Rendering

  • Dark VR session rendering on Windows Mixed Reality runtime (rB5350015d51)
  • Lighting changes with head movements (rB091cc94379)
  • Head position seems to move upon rolling view (rBfc31be5ab0)
  • OpenGL support is not done (rB3a4034a741)
  • OpenGL swap calls cause issues with frame syncing, throtteling drawing in some cases (rB62bbd2e37d).
  • Use a separate thread VR rendering. OpenXR blocks threads for frame rate synchronization, which probably makes other rendering lag a bit. This way we can also keep a single OpenGL context alive on this thread, which avoids expensive context switches.

General Stability

  • Memory leak (rB55362436d9)
  • Monado OpenXR runtime crashes at swapchain creation (Appears to be a limitation of NVidia optimus on Linux. Monado team is checking.)

Build System

  • Automatically set environment variables required to find API-layers
  • More generic CMake variables (e.g. autodetect OpenXR version)
  • Pre-master-merge: Remove bundled OpenXR sources support (rB0dd3f3925b)

Miscellaneous

  • Remove support for non-OpenGL windows? Useful for testing, but unused by now (rB873223f38d).

Details

Type
To Do

Event Timeline

Julian Eisel (Severin) updated the task description. (Show Details)
Julian Eisel (Severin) triaged this task as Normal priority.
Julian Eisel (Severin) renamed this task from = VR Support through OpenXR - TODO's to VR Support through OpenXR - TODO's.
LazyDodo (LazyDodo) added a comment.EditedJul 16 2019, 10:05 PM

OpenGL swap call seems to hurt perfomance quite a bit? (@LazyDodo (LazyDodo) (LazyDodo) reports, didn't check myself)

The actual drawing hurts the performance the most, however, when in DX11 mode, calling swapbuffers on the OGL offscreen buffer for some reason vsyncs to the regular display (60hz) followed by a swap buffer on the DX Surface which vsyncs to 90hz on the rift.

So when in DX mode (and only in DX mode) we can as far as I can see skip the swap on the ogl back buffer and side step a 60hz vsync there.

This lifted my framerate when drawing nothing from 45 to 90 fps. (but since it wasn't drawing anything, i couldn't check for any visual issues)

However as soon as actual drawing is involved frame rate falls to 15ish fps regardless, even with just a simple cube in the scene.

Julian Eisel (Severin) updated the task description. (Show Details)
Julian Eisel (Severin) updated the task description. (Show Details)
Julian Eisel (Severin) updated the task description. (Show Details)