Skip to content

[BUG] [Regression] Overlay Wobble/Jitter/Artifacting introduced in 1.15.X #395

@mcoffin

Description

@mcoffin

Description

Starting with SteamVR 1.15.X, overlays (via IVROverlay from a game client, and the "system" overlay displayed when you hit the "system" button on the index controllers), wobble, as if they are attached to the HMD with a rubber band. If you move around enough, there will also be significant artifacting ocurring in the overlays (though it's a little harder to induce with the system overlays compared to the IVROverlay instances created by ACC).

This only occurs when asynchronous reprojection is enabled.

Reproduction Steps

Steps to reproduce the behavior:

  1. Launch SteamVR 1.15.2
  2. Open system overlay
  3. Move your head around

Expected Behavior

The overlay should stay static in space, and not have artifacts, as it did in SteamVR 1.14.16.

System Information

  • Distribution: Arch Linux (amd-staging-drm-next kernel - f24cd554aacf4e989a0796c7d30d758115512732 rebased off of v5.9-rc6 from Linus' tree with rebased futex patches from mcoffin/linux@mcoffin-5.10-futex-wait-multiple, but this behavior is observed on stable channel kernels as well)
  • Exact kernel (though likely non-factor since reproducible on stable channel as well) - mcoffin/linux@7d4ad53
  • SteamVR version: 1.15.2 (working: 1.14.16)
  • Steam client version: Built: Sep 3 2020 at 21:18:20
  • Opted into Steam client beta?: No
  • Graphics driver version: Mesa 20.2.0 (git-663d464366) (ACO), AMD Radeon RX 5700 XT (NAVI10, DRM 3.40.0, 5.9.0-rc6-1-amd-staging-drm-next-git-00457-g3637df487bdb, LLVM 11.0.0). Mesa versions down to 20.1.4 were also tried, with no change in behavior. Regression still occurs between 1.14.X and 1.15.X.
  • Gist for SteamVR System Information: https://gist.github.com/mcoffin/bc4460030a4414e8929c78e252a80766
  • CPU: AMD Threadripper 3960X

Additional Context

A cpu profile with sysprof shows a significant amount of time being spent in clock_gettime compared to "working" versions. (~10% of samples for ACC with it open!). This could indicate a busy-wait somewhere that's misbehaving?

Mesa 20.2.0 released a whole bunch of RADV features for timeline syncobj's, and I chased down that path for a while, but observing the same behavior with previous mesa releases ruled the timing of this release out as the issue.

Under normal operation, I'm running a pretty hefty GPU overclock, and setting the min frequency to quite close to the max to achieve livable performance, but disabling this (clean boot with no writing to sysfs), did not affect the observed behavior in any way.

Screenshots

Unfortunately, overlays are only displayed in the HMD for me, so I cannot capture this behavior, though I can look in to alternative solutions if upstream developers cannot readily reproduce the issue.

In-progress debugging

  • Hook up a 2070 super from my GF's computer to see if the problem is isolated to amdgpu/mesa interactions with SteamVR
  • Downgrade mesa pre-timeline-syncobj implementation (result: no change)
  • Use stable kernels (result: no change)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions