protonscr

[BUG] async reprojection non functional (no rendering in headset)

steamvrclosed bug
ValveSoftware/SteamVR-for-Linux#616 · opened 2023-09-26 by caseif · updated 2024-06-05 · 46 comments · github
Ccaseif 2023-09-26 github

Describe the bug
My headset display is black with the backlight turned on when using SteamVR 2.0.1 with asynchronous reprojection enabled via the enableLinuxVulkanAsync key in steamvr.vrsettings. The sole exception to this is the first time it runs after a reboot, upon which the interstitial "aurora" environment is visible along with the controllers and lighthouses (although vrdashboard fails to render). SteamVR Home fails to load in this case as well, although I'm having the same issue with SteamVR 1.27 so I presume it's a separate issue. I've verified that there are no leftover processes matching steamvr between SteamVR restarts that might otherwise explain this anomaly.

Disabling async reprojection fully resolves the issue, with the aurora environment being visible and vrdashbaord rendering properly (apart from #615 and something similar to #570).

On the first run, the artifacting usually present when async reprojection is enabled is absent. I had initially assumed that it might have been fixed in 2.0.1, but it now appears that it might just not be functioning at all on first run. I'm not clear on how to confirm whether it's actually functioning at a given moment in time so either scenario is possible.

The desktop VR view does work correctly (again, apart from #615 and the aforementioned SteamVR Home issue), and I'm able to interact with vrdashboard and launch games through it, but the headset display remains black. I've listed some attempted fixes below that haven't had any effect on the issue:

  • Restarting SteamVR
  • Restarting Steam
  • Restarting the headset via SteamVR
  • Disconnecting and reconnecting the DisplayPort cable
  • Connecting the DisplayPort cable to a different port
  • Disconnecting and reconnecting the USB cable
  • Disconnecting and reconnecting the power cable
  • Disabling base station power management
  • Switching the headset refresh rate from 120 Hz to 90 Hz
  • Opting out of the Steam client beta

To Reproduce
Steps to reproduce the behavior:

  1. In steamvr.vrsettings, set enableLinuxVulkanAsync to true
  2. Opt into Steam client beta
  3. Opt into SteamVR beta
  4. Launch SteamVR
  5. Close and re-launch SteamVR
  6. Headset display is black

Expected behavior
The headset should display the VR view instead of a black screen.

System Information (please complete the following information):

Note: Commenters who are also experiencing this issue are encouraged to include the "System Information" section in their replies.

Ccaseif 2023-09-26 github

On further testing I discovered that this seems to be related to async reprojection and have updated the issue title and body accordingly.

DDaeTheDerg 2023-09-30 github

I am experiencing the same issue
Note: this problem occurs on both native & runtime versions of steam

Distribution: Arch
SteamVR version: beta 2.0.2
GPU: MSI GeForce RTX 3060 GAMING X 12G
Graphics Driver: nvidia-dkms-535.113.01-2
DDaeTheDerg 2023-10-09 github

This is still an issue on SteamVR Beta 2.0.3

SSpengreb 2023-10-12 github

Still an issue on 2.0.5 too

Vvermeeren 2023-10-26 github

Still an issue on 2.0.8, I reverted to last version of SteamVR 1 see https://github.com/ValveSoftware/SteamVR-for-Linux/issues/623#issuecomment-1780358506 for how.

Eedwin-v 2023-10-26 github

Now that we got a forced "upgrade" to 2.0.8, I ran into this issues as well. (Ubuntu 23.04/Index/Nvidia 525)

Unfortunately no beta branch to downgrade, so now I have to do it manually.

CCorneliusCornbread 2023-10-28 github

Same issue on Fedora 38 here on SteamVR 2.0.8

Vvermeeren 2023-11-02 github

With SteamVR 2.0.10 any error messages from before are gone and the new UI works too, except for wrong colours #570. Turning on enableLinuxVulkanAsync still results in a black display, so I am back to 1.27.5 for now. (VRChat really needs async.)

DDaeTheDerg 2023-11-02 github

With SteamVR 2.0.10 any error messages from before are gone and the new UI works too, except for wrong colours #570. Turning on enableLinuxVulkanAsync still results in a black display, so I am back to 1.27.5 for now. (VRChat really needs async.)

Can confirm the same behaviour on my machine

Ccaseif 2023-11-10 github

This is still occurring in Steam VR beta 2.1.1.

DDaeTheDerg 2023-11-17 github

Hi all!
For me this is no longer a problem in steamvr 2.1.2, hooray!!
2.1.2 launches properly with the enableLinuxVulkanAsync variable set to true in the vrsettings config

Ccaseif 2023-11-17 github

SteamVR is being temperamental at the moment and won't recognize the headset display so I can't test and confirm, but I'll fiddle with it some more over the weekend when I have more time.

DDaeTheDerg 2023-11-17 github

I had that problem a few days ago - all I had to do was unplug the DP cable while the computer was off, turn it back on, and plug it back in before starting steamvr and it's been fine since!

Ccaseif 2023-11-17 github

@DaeTheDragon Thanks a lot, that did the trick! It seems like this issue crops up for me every few weeks or so so it's really great to have a workaround now.

Unfortunately, Valve has now pushed 2.1.3 which is causing me to run up against #639 so I still can't re-test this bug. Just a big ol' game of whack-a-mole with these betas, lol.

Ccaseif 2023-11-18 github

This is unfortunately still occurring for me with beta version 2.1.5.

Ccaseif 2023-11-22 github

This is still occurring with version 2.1.7.

DDaeTheDerg 2023-12-01 github

@DaeTheDragon Thanks a lot, that did the trick! It seems like this issue crops up for me every few weeks or so so it's really great to have a workaround now.

Unfortunately, Valve has now pushed 2.1.3 which is causing me to run up against #639 so I still can't re-test this bug. Just a big ol' game of whack-a-mole with these betas, lol.


This is unfortunately still occurring for me with beta version 2.1.5.


This is still occurring with version 2.1.7.


heya!! sorry I haven't replied here to your response, been pretty hectic!
anyway- actually for me, it has been working fine from version 2.1.2 up to version 2.1.7!
I've been able to turn on VulkanAsync in the settings file and have been using it without any problems since I made my last post here, strangely enough!!
how odd that you were still unable to!

anyway, since hotfix update 2.1.8, the issue you're experiencing has returned for me, black void again, and the only fix is to turn VulkanAsync back off again...

I'm probably going to drop back to 2.1.7 where my VulkanAsync was still working, until a newer update works for me!

HHisanatos 2023-12-05 github

Hey I'm also experincing this on 2.1.10 Beta

Distribution: EndeavourOS
SteamVR version: beta 2.1.10
GPU: MSI GeForce RTX 3060 12G
Graphics Driver: nvidia-dkms 545.29.06-1

But what I find interesting or maybe helpful, is if that is async reprojection based on Vulkan, I was learning it once, but then got booted off to another project, there are validation layers that could be turned on, and maybe they can pinpoint us to a root cause?

I'll try to find if that is possible, and leave this comment as is, as maybe some Vulkan expert can quickly say that it is/isn't possible.

EDIT: Found out you can very easliy download vkconfig fire it up (on EndeavourOS it was a vulkan-extra-tools package), and the rest takes care of itself, you just need to change the log filename to a absolute path and Vulkan pipes all the errors by itself, I know that SteamVR is build upon OpenVR, but can anyone say if the asyncreprojection is opensourced? If it is, I may poke and try to fix it just for pure experience.

I'm also attaching the file that was outputted.
vrstartup.txt

Ccaseif 2023-12-13 github

This is still occurring as of SteamVR 2.2.1.

HHisanatos 2023-12-20 github

Behaviour is still the same in SteamVR Beta 2.2.3

Ssoria-aurelien 2023-12-26 github

Hello, still happening with SteamVR Beta 2.2.4

Ppurplebar0 2024-01-03 github

AMD RX 6600 XT user.

Seemingly the best way to fix this for now is using temp_v1.27.5 beta and making sure nodcc is ~not~ set within RADV_DEBUG options. This will cause ~major~ noticeable graphical corruption of SteamVR overlays at the benefit of flawless reprojection in-game, at least from my testing.

I used to use v1.14 all the time and it is still the most stable version in regards to reprojection, rendering and just about everything else, but that one requires changing selected Proton version of many games to 5.13.

DDaeTheDerg 2024-01-04 github

@Hisanatos

can anyone say if the asyncreprojection is opensourced? If it is, I may poke and try to fix it just for pure experience.

I'm not sure, but I wish you luck! 💜

CCorneliusCornbread 2024-01-05 github

Replying to https://github.com/ValveSoftware/SteamVR-for-Linux/issues/616#issuecomment-1841243338

SteamVR is, in fact, fully closed source. This GitHub repo exists exclusively for reporting issues. There are open-source alternatives to SteamVR for Linux, see (https://gitlab.com/gabmus/envision). Though they're not quite as plug-and-play as SteamVR... well as SteamVR is supposed to be.

HHisanatos 2024-01-11 github

I've tested it on 1.27.5 and it works flawlessly on Nvidia hardware, I can even do some Expert+ Camilia songs in the Beat Saber, though I've noticed that it can "lose" the controllers, and even though I sliced through some boxes it doesn't register, will try to drill into why it happenes.

Beta 2.3.1 is still broken though, SteamVR startsup and Valve Index only show black (well more like grey) image. VR view shows that the headset is correctly tracked.

As there is a difference between 1.27.5 and 2.X.X maybe there is some information that would help Valve fix it? (Of course question to Valve :) )

Ccrocycroc 2024-01-23 github

Having the same issue here as well with 2.3.3. Hoping they fix it soon because currently if I revert to 1.27.5 and try to run any VR title it simply crashes Steam and SteamVR.

Without async re-projection most games have a ghosting effect making them unplayable.

Hopefully this gets fixed soon.

Ccaseif 2024-02-11 github

This is still occurring with version 2.4.1.

SScrumplex 2024-03-27 github

This seems to be fixed, with SteamVR Beta 2.5.1!

Ppurplebar0 2024-03-28 github

This seems to be fixed, with SteamVR Beta 2.5.1!

While I assumed the update announcement meant the issue was fixed, I am still observing the same happening on my end. Nothing is being displayed inside the headset on that beta.

RX 6600 XT, Mesa driver, Valve Index, recently updated Artix Linux, Steam client stable branch

SScrumplex 2024-03-28 github

Yup. I have to take back my comment up there. I thought I had enabled enableLinuxVulkanAsync again, but I forgot to save before testing :O

Still broken with Beta 2.5.1

Vvermeeren 2024-05-14 github

Today Steam updated for me and it seems that I lost async even with the temp_v1.27.5 branch of SteamVR, which has been working well for me for over half a year. Not sure if it is bad luck or if Steam and/or runtime changes are no longer compatible with the old SteamVR.

Specifically I got the warning about getcap not being in path despite the fact that I run all of Steam with PATH="$PATH:/usr/sbin:/sbin". So something is resetting the environment in a way that earlier Steam did not. Even though vrcompositor-launcher still has the capability set async is not turned on, as if the environment inhibits this in some way.

I also note my external overlay (WlxOverlay) no longer working (starting?) with this new setup, possibly the sandbox inhibits this as well.


Update: Running SteamVR manually, outside of Steam, makes both async and the overlay work again.

~/.steam/debian-installation/steamapps/common/SteamVR/bin$ ./vrstartup.sh

I hope async is fixed with SteamVR 2 soon.

Yyoyobuae 2024-05-14 github

@vermeeren You can try running SteamVR with Steam-Play-None to bypass the sandboxing that Steam does:
https://github.com/Scrumplex/Steam-Play-None

TTTimo 2024-05-16 github

@vermeeren You can try running SteamVR with Steam-Play-None [..]

Please don't do this. Or if you do, please do not report any issues you run into when you do this to us.

We are aware of the async repro issue. Currently being investigated.

Vvermeeren 2024-05-16 github

Please don't do this. Or if you do, please do not report any issues you run into when you do this to us.

@TTimo I am aware running it outside of Steam's environment is a big hack and will only do this for the temp_v1.27.5 branch. Indeed the old version has various issues but once actually in-game it does work well with perfect async repro.

VRChat very often is in the 30-50fps range, without async there is some very odd double vision blur-like implementation of repro, also when I tested early SteamVR 2 versions. Possibly #633 #613 not sure.

We are aware of the async repro issue. Currently being investigated.

Good to hear, I'll be glad to test any new versions that may fix this, without any env hacks, when possible!

TTTimo 2024-05-29 github

Hello,

SteamVR beta 2.6.2 addresses an issue observed when async support is enabled. Please retest. Make sure to include an updated set of logs with your new observations (see https://github.com/ValveSoftware/SteamVR-for-Linux/blob/master/.github/ISSUE_TEMPLATE/bug_report.md for details).

HHisanatos 2024-05-29 github

Hey, works for me
hehe

Vvrbandwagon 2024-05-30 github

Update: Running SteamVR manually, outside of Steam, makes both async and the overlay work again.

~/.steam/debian-installation/steamapps/common/SteamVR/bin$ ./vrstartup.sh

I hope async is fixed with SteamVR 2 soon.

I get an error message "vrstartup.sh[20259]: ERROR: no steam runtime environment set, please use sniper SLR"

Also, not sure if it's been the case for a while, but I remember adding " "enableLinuxVulkanAsync" : false " under the steamvr section used to work to make SteamVR games run smooth again. Now, it just deletes the line automatically.

JJJones780 2024-05-30 github

Works for me! Sure glad I didn't know what I was missing... quite an improvement!

The file to edit is ~/.steam/debian-installation/config/steamvr.vrsettings

...
   "steamvr" : {
      "enableLinuxVulkanAsync" : true,
...

and using Beta versions of both Steam and SteamVR:
Steam menu: Steam->Settings->Interface->Client Beta Participation->Steam Beta Update
Steam menu: View->Library ( or Hidden Games ),
SteamVR app, Gear Icon (Manage) to far right of Launch button->Properties
Betas->Beta Participation-> beta SteamVR Beta update

Ttingvarsson 2024-05-30 github

Just dropping it here for anyone else having similar issues; I didnt get Async to activate (error in logs trying to activate async) and it seems I at some point had manually setcap on vrcompositor.

And it seems (so unconfirmed really) that since I did set it manually/wrongly/but-not-wrong-enough the steamVR scripts thought it was okay but fails to actually get the capability. I removed the cap with setcap -r and let the script trigger the prompt for password to set the cap and after that it worked.
Maybe some interaction with pressure-vessel that gets confused due to how it was set or something.. or the check if it is set doesnt actually validate that it is correctly set?

Vvrbandwagon 2024-05-31 github

Works for me! Sure glad I didn't know what I was missing... quite an improvement!

The file to edit is ~/.steam/debian-installation/config/steamvr.vrsettings

...
   "steamvr" : {
      "enableLinuxVulkanAsync" : true,
...

and using Beta versions of both Steam and SteamVR: Steam menu: Steam->Settings->Interface->Client Beta Participation->Steam Beta Update Steam menu: View->Library ( or Hidden Games ), SteamVR app, Gear Icon (Manage) to far right of Launch button->Properties Betas->Beta Participation-> beta SteamVR Beta update

Yep, the smoothest experience is now is ""enableLinuxVulkanAsync" : true," not false, like a few years ago. It's still not perfect, or as good as it used to be back then, though. Amid Evil VR is barely playable, though VR Chat seems ok, in the hub at least.

Not sure if using the beta version of Steam makes a difference, though.

Vvermeeren 2024-05-31 github

Beta 2.6.2 works for me, without any environment hacks like Steam-Play-None. The async implementation seems different compared to 1.27.5 which is interesting. Very happy to see it working!

Ookawo80085 2024-06-01 github

Issue still present on Nvidia GPUs, even on the new 2.6.2 beta, feels particularly horrible in heavy worlds/worlds with a lot of heavy avatars in VRChat (altho it is also present in other graphically heavy games/bad performant games), it get a bit better if i got into video settings and lower my resolution all the way to 20%, but again only when there are not many avatars and the world is not heavy.

If there are many avatars or the world is heavy double frames and shakiness comes back if i try to move my head in the headset, and its worse when i move left and right than when i move up and down.

Altho i noticed something weird, when there is only one moderately heavy avatar, and the ghosting/double frame is not too bad, it actually gets better overtime, after about 30 minutes its practically gone, which leads me to this question for Valve (not really sure who to tag for that, @kisak-valve can you help out with that?): is there some filter thats dependent on frame rate of the application for the pose data of the headset before its used to actually reproject the frame? Because if there is, it really feels like its not tuned correctly :/

I'll try to attach a video of what i see in the headset later

Kkisak-valve maintainer 2024-06-01 github

Hello @okawo80085, the issue tracked here is an all-or-nothing render failure. Your issue should be evaluated separately.

Ookawo80085 2024-06-02 github

Gotcha, i'll open a separate issue with the video from the headset later then.

CCobaltSpace 2024-06-04 github

I think my crashing when enabling async reprojection was fixed with this as well. It is so smooth as well.

(RX 5700xt, Arch, Hyprland, Index)

TTTimo 2024-06-05 github

Closing per the last few comments. Thanks all.

Launch options