ValveSoftware / openvr

OpenVR SDK
http://steamvr.com
BSD 3-Clause "New" or "Revised" License
6.07k stars 1.28k forks source link

Main monitor on different GPU prevents VR applications detecting Vive #394

Open jakedraddy opened 7 years ago

jakedraddy commented 7 years ago

If you have two GPU's, everything hooked up as in configuration [1] below, then applications do not detect a Vive via OpenVR. SteamVR works fine (can walk around in the home environment). But most games do not detect the display when launching, and it leaves you in the "waiting for application" environment.

I am running Windows 10, Radeon driver version 17.1.1.
Both GPUs are AMD 280X's.

Configuration [1] (Does not work): Vive plugged into GPU 1 via HDMI 1080p main monitor plugged into GPU 2 via HDMI

Configuration [2] (Does not work): Vive plugged into GPU 1 via HDMI 1080p main monitor plugged into GPU 2 via DVI

Configuration 3 (Works): Monitor via DVI on card 1 (1080p) Vive via HDMI on Card 1 2nd monitor on Card 2 (1080p)

Applications that do not work with [1] and [2]: "Desktop" in SteamVR overlay "OpenVR Advanced Settings" Menu in overlay Vive overlay menu

Accounting Google Earth VR The Lab

Games that DID work with [1] and [2]: Anyland Lazerbait Settings in SteamVR overlay

Any thoughts?

Balderick commented 7 years ago

This is due too GPU driver limitations and is not directly an openvr issue.

In recent years since the new APIs vulkan and dx12 were made available their multi GPU capabilities have been removed. Before these new APIs were out into the wild Valve were hoping steamvr apps could be accessible to steam users with lower end GPUs. Valve invested a lot to help make this happen but GPU vendors broke all the promised older GPU multi GPU support.

At one time benchmarks were published showing how a gt 520 was able to double its in game fps using dx12.

The missing multi vendor multi GPU support of the new APIs is a sore miss.

As discrete cards often come with just one HDMI port with multiple display ports the issues of no multi GPU support has caused a lot of confusion and inconvenience to new vr users. At the time I first tried using steamvr using dvi was not recommended. The wait on passive display port to HDMI adapter arriving was a long one for me.

Make sure both of your HDMI cables are 1.4b spec or newer and use a passive display port to HDMI adapter; if you can, too allow monitor and hmd be connected to same GPU.

For now AFAIK all PC vr hmds need to be connected to same GPU as main monitor

jakedraddy commented 7 years ago

If this is the case, then why did some apps work as intended? I was able to play Lazerbait, Richie's Plank Experience, and MasterpieceVR with configuration [1]. Is it because they weren't using Vulkan/dx12?

Balderick commented 7 years ago

It is probably related to which game engine is used for vr app. Is there a common denominator for those games's choice of game engine?

jakedraddy commented 7 years ago

They are all unity based games

Balderick commented 7 years ago

Are they all nvidia vrworks unity games and not just unity games? https://developer.nvidia.com/vrworks

Looks like nvidia vrworks games have same vendor multi GPU support after all. Though vrsli is not true vulkan or dx12 multi vendor multi GPU support.

tgraupmann commented 7 years ago

I may be having this same issue with OSVR HDK2. I have multiple graphics cards. I've had success with extended mode (headset as monitor). But when running in direct mode, SteamVR is stuck always waiting to load the application.

vrmirror

I've tried the SteamVR tutorial and games and it's the same.

I have two graphics cards, ASUS NV GTX 1080, and EVGA NV GTX 680.

desktopgpus

Might be related...

tgraupmann commented 7 years ago

I was able to get my headset working by connecting to the slower second card. So if there's some enumeration, maybe the settings could make the device selectable so it uses the faster graphics card?

One developer suggests physically swapping the graphics cards to change the order...

tgraupmann commented 7 years ago

I was able to verify that swapping video card slot order made the NV 1080 work in Direct Mode with SteamVR.

The display adapters still show in the same order in device manager.

Balderick commented 7 years ago

Windows games bar conflicts with steamvr. Kill and disable windows games bar.

Your home button on controller should now activate and deactivate steamvr dashboard as expected.

patricknelson commented 6 years ago

For now AFAIK all PC vr hmds need to be connected to same GPU as main monitor

I think this is key. I had the same bug, but in my particular setup I was able to reliably workaround it by ensuring that my primary monitor is on a display which is also directly connected to my GPU. In my case, I have a laptop with an eGPU (GTX 1080 Ti) with integrated Intel graphics. If I switch my main display from my laptop's monitor (controlled by the Intel integrated graphics) to the discrete eGPU (e.g. a second attached monitor connected to the eGPU case) then it will work reliably. Another method is to simply disable the display on other GPU's or, if on a laptop, just close the lid.

DJ1ce commented 6 years ago

It took me 3 days of searching and piecing posts together, running useless tests with Microsoft support, but I have finally solved the Headset plugged into wrong video card error! Specifically when playing Skyrim VR on Steam.

I have a Surface Book 2 with the NVIDIA 1060 GTX chip. I am also using the Samsung Odyssey Windows Mixed Reality headset. And the OS is Windows 10.

This is a multi-step process and I will try to explain in great detail, since no one else has taken the time as of yet.

First - Log into the NVIDIA Control Panel. Sounds easy, right? Not so much. Typing NVIDIA in the start menu brings up nothing of use. You may be thinking, I have the NVIDIA GeForce Experience... well that will not help you here. First go to the Windows Control Panel, then select Hardware and Sound, then at the bottom you will see NVIDIA Control Panel. That's where you want to be!

Second - On the taskbar to the left you will see 3 items under the only topic, 3D Settings. Select Manage 3D Settings. That opens the main screen (may take a minute) into the Global Settings tab. So I bet you're thinking, let's just change the global settings to use the NVIDIA chip, all my apps will run with super power and we can get this thing started. Well, that's what I thought to, but not so much. It will allow you to play the game, but forget about ever multi-tasking. This setting uses up all your system resourses and will cripple your pc.

What you want to do is go to the Program Settings tab. From here you can select the program you want to use the high end chip, but be careful. I have the regular Skyrim installed as well so I saw Elder Scrolls V Skyrim, Skyrimlauncher, Skyrim Test, a bunch of stuff. I changed them all, but that didn't do it.

What you will likely have to do is click Add and find the game you are looking for, in my case SkyrimVR. It will load with the entire pathname of the file, not pretty, but go ahead and select the high end chip and then exit. For some reason they felt like the 3 options were too overwhelming so there is no save option that I could find, but when you exit it will ask if you want to save.

Last thing to do is plug in and get started. I have read a lot of posts about use this and don't use that. If you have the SB2, you know there are 3 options to plug things in, USB-A, USB-C, and another USB-A. Which means you need a converter plug or a docking station. I have the Surface Dock, and of course, it does not come with an HDMI plug. 2 Mini Display ports and 2 USB-A ports, but no HDMI or even USB-C. I will list the ways that I have connected and I can tell you after hours of playing in each of them, I have not noticed any of them to be better, less latent, higher quality, or whatever than any of the others.

The Surface dock gives you 2 mini-display ports so you can VR and have another monitor plugged in. It does requires an HDMI to Mini Displayport adapter which is about $40 on top of the $200 for the dock. This is by far the most expensive option. It does use the power slot to plug in leaving all your other ports open, but the power is a slight bit lower than the regular charger.

If you don't know this already, when you are pushing your graphics chip and you hear the fans come on, your SB2 laptop is not charging... well, it's charging, but it's using more power than you can give it. Luckily I tend to feel ill and want to take a break before the charge is out and it does charge back up pretty quick when you disconnect the headset. I don't know why they can't just ship 120 watt chargers, but I'm sure there's a reason. Also the 2 bricks on the Surface Dock are pretty heavy compared to the single charging brick, and you have the power to brick one, then the cord from brick one to brick two, then another cord from brick two to the laptop. What I'm saying is it has lots of cords, yes it is better than those oldschool giant docks that the laptop sits on, but still not as travel friendly as I had hoped it would be.

Moving on, next is the Microsoft Surface USB-C to HDMI adapter. This works well, I can leave it on the HDMI on my headset and forget it's there. The only thing that is a pain is that the USB-C is on the opposite side of the USB-A, so even though it comes with a long cord, every inch I can get out of that thing could allow me to get out of the way of something coming at me, and less chance of me pulling the laptop off of the table.

Last thing I tried (and the one I currently use) is a n Insignia USB Type-C Multiport Adapter. I found this in the Apple section of Best Buy, it plugs in using USB-C, and it has an HDMI, USB-A and another USB-C output. This allows my to keep the USB-A and HDMI cables plugged in so when I want to play all I do is plug in the single USB-C adapter and I'm good to go.

Hopefully this helps and saves someone time, even though I know a lot of people will be upset at the length of the post. I just kept getting close, and then kept failing, so I wanted to put it all out there. Plus I never post anything, so I have a lot stored up. Good luck and enjoy!

jschwarzwalder commented 6 years ago

Thank you DJ1ce I had an issue with WebVR using Firefox and an HTC Vive.

I have Alienware with an Nvidia card on Windows 10 and your solution fixed an issue I was having that prevented me from accessing anything on aframe.io or other WebVR projects.

I was getting an error that my headset was plugged into the wrong video card even though SteamVR was working fine.

Thank you for your detailed solution.

Mrs-Feathers commented 4 years ago

i have this issue but i'm using an external graphics card.. i physically cannot plug my headset into the "onboard" grahpics card.. everything in the oculus suite runs fine but anything using SteamVR tells me "wrong graphics card".. i dont know how to do this because again... external graphics card. its a laptop so its not like i can take the on board card out or anything.. VR works amazing and i want to try it out on steam VR.

Mrs-Feathers commented 4 years ago

my on board is a NVIDIA and my eGPU is an AMD. can't get a new laptop.. and since at work we use macs and tbh this whole eGPU rig is for work [recording studio] i had to get an AMD because apple doesn't allow NVIDIA cards in their new OSes. so i'm stuck with not being able to physically plug-in to the same card.. and i'm stuck with having to use two different brands of cards [just before anyone says anything about that]... and i'm not sure what to do.