FPS tanks when VR is mirroring to desktop + mobile 3060 incapable of sustaining 90hz in empty scene

Edit: I’m running 2021.1.28f1 with URP, OpenXR, Single pass Instanced.

VR performance in my game (built) seems very poor on my 3060 laptop. Even in a nearly empty scene, particularly with mirror view open on the monitor. The game barely has anything to render (just a dozen cubes with lit/emissive shaders and bloom), yet the machine is right on the line of handling the load. When mirroring to the desktop, the FPS drops to 45hz. I’m looking for info on mirroring VR to the desktop, if it taxes the GPU and why, as well as anyone else having experiences with very poor VR performance in Unity in general on mobile GPU’s.

My VR game has been running fine on my dev machine (GTX 1070). it can run the game supersampled at 144hz on an Index. But a Lenovo Legion Pro GTX 3060 laptop just can’t handle it, even with Gen 1 HMD’s. We tried all sorts of profiling and troubleshooting and eventually came to the conclusion that the VR mirror view was tanking the FPS. When we minimized the player to the desktop and continued in VR, we found that the FPS returned to the native HMD FPS. So we came to a preliminary conclusion that the mirror view is somehow taxing the GPU more than we’d anticipated.

I could be mistaken, but I’ve always assumed that left and/or right eye mirroring to the monitor was virtually free; that it was just blitting the rendered image over to a second monitor. Why is the performance hit so high?

Moreover, I’m pretty surprised that my 1070 runs with plenty of headroom, while a mobile 3060 can barely keep up subsampled at 90hz on an O.G. Vive. It seems like something is wrong with the hardware, but I can’t figure out what’s going on.

Does anyone have any thoughts?

Bump

I can’t speak to the participates of your case, e.g. mirror mode having an effect on it or not, but from the number of the specific FPS (45) it dropped to it sounds like it overran the GPU budget by a fraction of a ms (or more). It “compensates” by throwing out the next frame, effectively bisecting the frame rate at best, as this cycle continues. It often will look like it’s not using all of the system resources in Task Manager (GPU usage rate of around 50% when the issue is active is a key indicator this is happening), that you’re running just beyond around the 11.1 ms cut off. This is particularly a problem with HDRP and URP as they don’t have great support for the Profilers GPU section (that’s improving with 2021.2+ in some regards).

Mirroring does have an GPU impact effect-- you’re right that it isn’t necessarily huge, it also doesn’t need to be too cause issues like this if it’s the straw that breaks the camel’s back. E.g. Just using the default HDRP post processing stack in an empty scene could use 80-90% of my GTX 1080 (Desktop) @ 90 Hz.

What unity versions, render pipelines, and XR plugins, render modes (e.g. Single Pass Instanced) are you using? That information is important for other people who might need to find this thread.

I’m running 2021.1.28f1 with URP, OpenXR, Single pass Instanced. (Adding it to the OP - you’re right, I should have included those specifications…)