ValveSoftware / Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
471 stars 38 forks source link

MacOS Catalina 10.15.5 (Post Battle Pass) - In game micro stutters make game unplayable, iMac 27 inch #1772

Open ryz0xy opened 4 years ago

ryz0xy commented 4 years ago

Your system information

Please describe your issue in as much detail as possible:

After the TI10 Battle pass update that fixed the Dota 2 launch issue, almost every game has a large amount of microstutters in game (every 0.5 - 1sec), making it virtually unplayable.

I have a mid 2017 5K iMac, and Dota used to run perfectly fine at high settings before the battle pass update.

Here's a console dump from a custom lobby - https://gist.github.com/ryz0xy/98a20d96cd79e5b89ccf70f990c99601

Height map file (maps/start.vhcg) not found, this will make ground height traces more expensive! Recompile the map to generate a height map.
[Client] Created physics for maps/dota/world_physics.vphys
Height map file (maps/prefabs/promotional_radiant_fountain.vhcg) not found, this will make ground height traces more expensive! Recompile the map to generate a height map.
Height map file (maps/prefabs/promotional_dire_fountain.vhcg) not found, this will make ground height traces more expensive! Recompile the map to generate a height map.
[Entity System] ExecuteQueuedCreation() took 120793us [ Spawned: 221, Activated 0, PostDataUpdate: 221, Destroyed: 0, Deallocated: 0, PvsUpdate: 0 ]
[Entity System] ExecuteQueuedCreation() took 46315us [ Spawned: 3453, Activated 3453, PostDataUpdate: 0, Destroyed: 0, Deallocated: 0, PvsUpdate: 0 ]
[Entity System] ExecuteQueuedCreation() took 1078us [ Spawned: 79, Activated 79, PostDataUpdate: 0, Destroyed: 0, Deallocated: 0, PvsUpdate: 0 ]
[Networking]       client =[A:1:3931797507:1484[0]:  NetChan Setting Timeout to 30.00 seconds
[Client] CL:  Signon traffic "client":  incoming 148.595 KB [21 pkts], outgoing 2.776 KB [444 pkts]
C:Gamerules: entering state 'DOTA_GAMERULES_STATE_PRE_GAME'
[Client] CDOTA_Hud_Main::EventGameRulesStateChanged DOTA_GAMERULES_STATE_PRE_GAME
[Panorama] DispatchAsyncEvent backlog, failed to dispatch all this frame. Remaining queue depth: 4049 (was 11369)
CSwapChainBase::QueuePresentAndWait() looped for 21 iterations without a present event.
CSwapChainBase::QueuePresentAndWait() looped for 21 iterations without a present event.
CSwapChainBase::QueuePresentAndWait() looped for 22 iterations without a present event.
CSwapChainBase::QueuePresentAndWait() looped for 23 iterations without a present event.
CSwapChainBase::QueuePresentAndWait() looped for 24 iterations without a present event.

I tried experimenting with Vulkan/OpenGL and a variety of launch options (-high -map dota) and display options (use current resolution/exclusive fullscreen) but the spikes still persist.

It seems like a shader/render issue with something recently introduced?

Steps for reproducing this issue:

  1. Update to latest version of Dota 2
  2. Launch +. find game normally
danginsburg commented 4 years ago

I do expect the OpenGL version to have micro-stutters because macOS does not support caching binary shaders. Regarding Vulkan - I do expect stuters on first encounters with shaders but after that they should be cached. The update would have triggered invalidating your cache. Does it get better as time goes on? We do have some possibility of fixing the Vulkan micro stutters using the Steam Shader Pre-Caching we are doing for Windows/Linux but haven't yet ported it to macOS.

ryz0xy commented 4 years ago

It's pretty intermittent - using Vulkan has generally been worse, but then I haven't tried consecutive games because it's much more unplayable.

With OpenGL, I occasionally get very smooth games consecutively, but I can't consistently reproduce the conditions. I tried starting with a dummy lobby game to minimize stutters in a real match, but it doesn't always work.