You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Somewhere between https://gfx-rs.github.io/2018/08/10/dota2-macos-performance.html and today we regressed the benchmark significantly. We used to get 33.9 / 3.5 (in the table), but now we are closer to just 30 (in immediate mode).
Here are the things to try:
new swapchain model is less efficient at fullscreen? Tried with "-sw" parameter, no change.
Dota doesn't discover some of the features we have, it needs to support VK_KHR_portability_subset
on macOS 11 we aren't using some of the Metal features we are supposed to use
we are locking too much, and that hurts on macOS11 beta, possibly because of parking_lot regression? Tried parking_lot-0.6, no change.
macOS 11 beta has some strange scheduling issues. Maybe background apps interfere too much? 🥇 disabling Firefox in the background gets us from 30 to 32fps in average.
setting labels on internal encoders is slow - hid them behind a flag now, not sure if changed any metrics
ExactSizeIterator bounds are confusing the compiler and making us heap-allocate more?
Rust optimization regression?
creating and filling MTLRenderPassDescriptor is too slow - implemented a pool for reusing them in gfx-rs/gfx@bbf55ff
binding descriptor sets is still to slow - rewritten in gfx-rs/gfx@15e456b
we are doing many redundant passes - investigated, no clear picture of why that would happen
we are rebinding too many resources - testing a fix but it gave no performance difference. We are binding them in ranges, anyway, so Metal run-time possibly does this for us.
we are using mutable pixel views too often - fixed in gfx-rs/gfx@22e2f4d
Dota doesn't discover some of the features we have
I just noticed that it does indeed print the following lines when ran on gfx-portability:
Vulkan physical device (0): does not support Metal depthSampleCompare.
Vulkan physical device (0): using transform constant buffer: false
Vulkan physical device (0): supports shader clip distance: true
Vulkan physical device (0): using secondary command buffers: false
I imagine working around the comparison samplers has a solid GPU performance cost, and on Intel GPU it would show up as an overall regression. So I believe this issue is blocked on ValveSoftware/Dota-2-Vulkan#351
Somewhere between https://gfx-rs.github.io/2018/08/10/dota2-macos-performance.html and today we regressed the benchmark significantly. We used to get
33.9 / 3.5
(in the table), but now we are closer to just30
(in immediate mode).Here are the things to try:
VK_KHR_portability_subset
parking_lot
regression? Tried parking_lot-0.6, no change.ExactSizeIterator
bounds are confusing the compiler and making us heap-allocate more?MTLRenderPassDescriptor
is too slow - implemented a pool for reusing them in gfx-rs/gfx@bbf55ffRelated to gfx-rs/gfx#3378, gfx-rs/gfx#3382, gfx-rs/gfx#3381, gfx-rs/gfx#3383
The text was updated successfully, but these errors were encountered: