godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.09k stars 21.18k forks source link

Rendering performance regression after upgrading from Metal 3.1 to 3.2 (macOS Sequoia 15.0) #97164

Open p-7 opened 1 month ago

p-7 commented 1 month ago

Tested versions

Godot Engine v4.4.dev.custom_build.694d3c293 Metal 3.2 - Forward+ - Using Device #0: Apple - Apple M2 Pro (Apple8)

  1. Godot Engine v4.4.dev.custom_build.694d3c293 , Metal 3.1- Forward+ - Using Device #0: Apple - Apple M2 Pro (Apple8)

  2. Godot Engine v4.3.stable.official.77dcf97d8
    Vulkan 1.2.283 - Forward+ - Using Device #0: Apple - Apple M2 Pro

System information

macOS Sequoia 15.0 , Apple M2 Pro

Issue description

After upgrading macOS to -> macOS Sequoia 15.0
All running projects slow down in Metal 2.3 : 60fps -> 15fps

  1. In new system and Metal 3.2 running project decrease FPS frame rate cyclic : 60 -> 15fps … 5sec works 60fps … 5sec 15fps … and repeat editor : Godot Engine v4.4.dev.custom_build.694d3c293

  2. In old system and Metal 3.1 works the same projects OK 60fps all time editor: Godot Engine v4.4.dev.custom_build.694d3c293

  3. In editor : Godot Engine v4.3.stable.official.77dcf97d8 and Vulkan 1.2.283 all projects works OK :

    • in upgraded macOS Sequoia 15
    • and in old macOS 14

Steps to reproduce

  1. upgrade macOS to Sequoia 15.0 from old macOS 14 … Metal 3.1. change to Metal 3.2 in Godot 4.4 … in 4.3 is Vulkan 1.2

  2. open any old project , small scene like example Jolt Physics … in Godot 4.4 slow down cyclic for 5sec ,

Minimal reproduction project (MRP)

Open small project like Exmaples Jolt Physics , open any your old projects.

akien-mga commented 1 month ago

CC @stuartcarnie

stuartcarnie commented 1 month ago

I have been running Godot with Metal on Sequoia since the first public beta, and have not yet seen a regression in frame rates running any of my usual test projects or benchmarks. If you have an MRP, that would be helpful.

In the meantime, can you run your v4.4.dev.custom_build.694d3c293 version using Vulkan. To do this, open a terminal and cd to the test project. Run the following, to start the Godot editor with Vulkan:

<path_to_godot>/Godot.app/Contents/Macos/Godot --rendering-device vulkan --editor --print-fps

To run the game, drop the --editor argument:

<path_to_godot>/Godot.app/Contents/Macos/Godot --rendering-device vulkan --print-fps

[!NOTE]

When Godot reports Metal 3.2, it is showing the maximum supported API on the OS you are running. Godot currently generates Metal 3.0 shader source, regardless of OS version.

p-7 commented 1 month ago

Hi,

I preparing additional tests :

  1. For old project. Example project, Jolt example : joints.
  2. For new cleen project. Preparing new cleen , Jolt example : joints.

For old project :

BUT, I found difference in settings : V-Sync : OFF , in old project , ON in new cleen project.

To summarize the test :

1

2

Thanks! Maybe it's nothing special :)