OSVR / OSVR-Oculus-Rift

Oculus Rift tracking plugin for OSVR.
Apache License 2.0
41 stars 13 forks source link

OSVR not compatible with 1.x Oculus runtimes #20

Open TheDeveloperGuy opened 7 years ago

TheDeveloperGuy commented 7 years ago

I figured out what the issue seems to be with Oculus 1.x and OSVR. It turns out it's the way OSVR interacts with the Oculus 1.x runtime that causes the issue. When OSVR loads the Oculus plugin, it causes the Oculus runtime to display the health warning etc. on the HMD. In doing this, the HMD display is 'owned' by the Oculus runtime software, so that when OSVR tries to open the display it's not able to (you can replicate this issue on <= 0.8 runtimes by showing the Oculus demo scene from the config utility and then trying to run an OSVR app). If you shut down the Oculus 1.x runtime and remove the Oculus plugin from OSVR then it's able to work fine (except for tracking obviously). Not sure that there's an easy way around this (without having access to the closed source portions of RenderManager), but effectively, the client software has to do something, either shut down the Oculus display output before OSVR opens the display, or using the Oculus display context rather than trying to create a new one.

So, effectively OSVR is not compatible with Oculus 1.x runtimes.

In fact, there doesn't seem to be a way to decouple the Oculus sensors from the display in the 1.x runtimes, so if you want to use the Oculus sensors you need to submit frames via the Oculus APIs. If you don't start sensors (ie. an Oculus session), then OSVR can render directly to the HMD (if Oculus Home is not running). It seems that the solution would need to be Oculus providing a way to disable their compositor, or for OSVR to bypass RenderManager and pass eye textures directly to the Oculus compositor. So, anyone wanting to use Oculus HMDs with OSVR needs to use DK1 or DK2 with Oculus SDK 0.8 or earlier.

Assuming OSVR is set up correctly (Rendermanager config needs to be added to example server config supplied with Oculus plugin), the error is as follows:

error [RenderManager]: OSVR RenderManager Warning: Got error from NVIDIA API: NVAPI call returned -180 (hex: ffffff4c) error [RenderManager]: [NVAPI_INVALID_CONFIGURATION] error [RenderManager]: Could not acquire display access for vendor ID 53822 for display 0 Could not open display