secondlife / viewer

🖥️ Second Life's official client
GNU Lesser General Public License v2.1
200 stars 47 forks source link

[WebRTC] Mac frame stall when voice channel changes #1120

Open maestrolinden opened 3 months ago

maestrolinden commented 3 months ago

Environment

Second Life Test 7.1.4.8414833386 (64bit) Release Notes

You are at 232.4, 198.9, 31.6 in webRTC1 located at simhost-07f5f7ddf45b02732.aditi SLURL: secondlife://Aditi/secondlife/webRTC1/232/199/32 (global coordinates 260072.0, 245447.0, 31.6) WebRTC-Voice 2024-03-25.8414560025 Release Notes

CPU: Apple M1 Pro (2400 MHz) Memory: 16384 MB OS Version: Mac OS X 14.4.1 Darwin 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000 x86_64 Graphics Card Vendor: Apple Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 88

Window size: 2472x1762 Font Size Adjustment: 96pt UI Scaling: 0.75 Draw distance: 96m Bandwidth: 10000kbit/s LOD factor: 1.125 Render quality: 1 Advanced Lighting Model: Enabled Texture memory: 10922MB Disk cache: Max size 3993.6 MB (27.6% used) HiDPI display mode: 1

J2C Decoder Version: KDU v7.10.4 Audio Driver Version: FMOD Studio 2.02.13 Dullahan: 1.14.0.202310131309 CEF: 118.4.1+g3dd6078+chromium-118.0.5993.54 Chromium: 118.0.5993.54 LibVLC Version: 3.0.16 Voice Server Version: Secondlife WebRTC Gateway

Packets Lost: 0/3185 (0.0%) April 02 2024 18:04:52

Description

When changing the active voice channel on a Mac viewer, there is a very long (approximately 1000ms) frame stall. This occurs when the agent moves to a parcel on a different voice channel on the region (including parcels with voice channel at all) or when the agent is in local voice chat and initiates a peer-to-peer call to another agent.

I cannot reproduce this stall on the same Mac when using the Second Life Release 7.1.4.8149792635 viewer and performing the same actions on a Vivox-voice region. I also cannot reproduce this issue with the same WebRTC viewer build on Win10.

Reproduction steps

Repro 1:

  1. Visit secondlife://Aditi/secondlife/webRTC1/182/149/29 (webRTC region, on a public voice channel)
  2. Move the agent into the adjacent private voice channel parcels (marked with magenta and yellow boxes) or the 'no voice' parcel (marked with a black box)

Expected results: Movement should be smooth, with barely a spike in frame time at at all as the agent crosses into the other parcel.

Actual results: There's a noticeable stall (often with the cursor 'beachballing' from the OS) on parcel crossing. I haven't yet found the source of the stall, but 'Fast Timers' showed a 460ms frame, immediately followed by an 850ms frame.

Repro 2:

  1. Visit a webRTC region, and have a friend connect to a webRTC region as well.
  2. Right click on the friend's name in People -> Friends, and select 'Voice call' from the context menu

Expected results: The viewer should leave nearby (spatialized) voice upon calling the friend, but there should be no noticeable dip in performance.

Actual results: The voice call is initiated as expected, but there's a ~1000ms frame stall just as the 'Call' operation initiates.

roxanneskelly commented 1 month ago

It would be good to run tracy on this. Unfortunately, I cannot get a tracy-enabled build via github actions, as the actions machines have an incompatibility that the tracy code complains about when building. Perhaps we can do a tracy build locally on the machine on which this is happening?

maestrolinden commented 2 weeks ago

(cross-posted from #1022 )

I cannot reproduce this on my Mac with a recent webRTC build:

Second Life Release 7.1.9.9477703110 (64bit)
Release Notes

You are at 158.5, 173.3, 23.0 in webRTC1 located at simhost-07c23d76c83837d55.aditi
SLURL: secondlife://Aditi/secondlife/webRTC1/159/173/23
(global coordinates 259998.0, 245421.0, 23.0)
WebRTC-Voice 2024-06-12.9490472357
Release Notes

CPU: Apple M1 Pro (2400 MHz)
Memory: 16384 MB
OS Version: Mac OS X 14.5.0 Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May  1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000 x86_64
Graphics Card Vendor: Apple
Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 88.1

Window size: 1086x710
Font Size Adjustment: 96pt
UI Scaling: 1
Draw distance: 128m
Bandwidth: 3000kbit/s
LOD factor: 1.25
Render quality: 2
Texture memory: 10922MB
Disk cache: Max size 1638.4 MB (0.6% used)
HiDPI display mode: 0

J2C Decoder Version: KDU v7.10.4
Audio Driver Version: FMOD Studio 2.02.13
Dullahan: 1.14.0.202310131309
  CEF: 118.4.1+g3dd6078+chromium-118.0.5993.54
  Chromium: 118.0.5993.54
LibVLC Version: 3.0.16
Voice Server Version: Secondlife WebRTC Gateway 

Packets Lost: 2/11946 (0.0%)
June 14 2024 15:50:27

@roxanneskelly I'm happy to close this issue if you're also having difficulty reproducing it with recent builds.

maestrolinden commented 2 weeks ago

I ran a quick test of the original repro viewer build, https://github.com/secondlife/viewer/actions/runs/8414833386 , against the same location ( secondlife://Aditi/secondlife/webRTC1/232/199/32 ). I cannot reproduce the stalls anymore.

The full environment for this test was:

Second Life Test 7.1.4.8414833386 (64bit)
Release Notes

You are at 132.6, 128.4, 23.0 in webRTC1 located at simhost-07c23d76c83837d55.aditi
SLURL: secondlife://Aditi/secondlife/webRTC1/133/128/23
(global coordinates 259973.0, 245376.0, 23.0)
WebRTC-Voice 2024-06-12.9490472357
Release Notes

CPU: Apple M1 Pro (2400 MHz)
Memory: 16384 MB
OS Version: Mac OS X 14.5.0 Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May  1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000 x86_64
Graphics Card Vendor: Apple
Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 88.1

Window size: 1261x820
Font Size Adjustment: 96pt
UI Scaling: 0.75
Draw distance: 96m
Bandwidth: 10000kbit/s
LOD factor: 1.125
Render quality: 1
Advanced Lighting Model: Enabled
Texture memory: 10922MB
Disk cache: Max size 1638.4 MB (7.2% used)
HiDPI display mode: 0

J2C Decoder Version: KDU v7.10.4
Audio Driver Version: FMOD Studio 2.02.13
Dullahan: 1.14.0.202310131309
  CEF: 118.4.1+g3dd6078+chromium-118.0.5993.54
  Chromium: 118.0.5993.54
LibVLC Version: 3.0.16
Voice Server Version: Secondlife WebRTC Gateway 

Packets Lost: 0/2282 (0.0%)
June 18 2024 13:44:44

Obviously, some things have changed on my machine since the original bug report - Mac OS has updated from 14.4.1 to 14.5.0, which could be a factor.

Dan-Linden commented 2 weeks ago

This needs a solid repro.