I noticed that 6000.5.0a6 has now been released. Issue tracker still says “In Progress in 6000.5.X”, but the fix is in the release notes for this version.
I gave it a go on my Intel iMac. I created a new project using the URP template and did a few test builds with different settings. I made development builds with automatic profiler attaching.
I added a sphere into the URP template’s default empty scene and attached the following script to it:
using UnityEngine;
public class VsyncTest : MonoBehaviour
{
void Awake()
{
// Application.targetFrameRate = 60;
Debug.Log(Screen.currentResolution);
Debug.Log(QualitySettings.vSyncCount);
Debug.Log(Application.targetFrameRate);
}
void Update()
{
transform.position = new Vector3(Mathf.Cos(Time.time) * 5, Mathf.Sin(Time.time) * 5, 0);
}
}
27" iMac 2019
3,7 GHz 6-Core Intel Core i5
Radeon Pro 580X
5120 x 2880 @ 59.9928644487025Hz (internal display, no external displays connected)
Unity 6000.5.0a6
macOS Sequoia 15.7.3
Test 1 — MetalDisplayLink OFF / Vsync count 0 / Target frame rate -1
Constant stuttering and ridiculous screen tearing, which has been the normal state of Unity on at least this iMac model for years now. Playerloop under 6ms, but rendering looks like it’s done at 15 fps. Useless.
Test 2 — MetalDisplayLink OFF / Vsync count 1 / Target frame rate -1
A slideshow. One massive, show-stopping stutter per second, like clockwork. A brief moment of smooth rendering, then a pause. Once again, the default Unity experience on this Mac for years, one macOS and Unity version after another. Profiler Highlights reports a median frame time of 16.9ms, but 0% of frames going over CPU / GPU budget.
Test 3 — MetalDisplayLink OFF / Vsync count 0 / Target frame rate 60
Quite identical to test 1. Gives me a headache. Tearing, stuttering, all the time. Moving object almost appears to travel in time, movement is very erratic.
Test 4 — MetalDisplayLink ON / Vsync count 0 / Target frame rate -1
Oh wow! It’s so smooth! No tearing or stuttering! This is the first smooth Unity performance I’ve seen on this machine since 2021.1.20! That version was released years ago! Median frametime is 16.67ms.
51% of CPU frames go over budget, but judging by these test results, the more red you see in the Highlights timeline, the smoother the performance. The vast majority of the CPU time goes into Others, which apparently includes “Wait for MetalDisplayLink update” itself doing its thing for 14ms.
Test 5 — MetalDisplayLink ON / Vsync count 1 / Target frame rate -1
This is the big one… And I’m happy to say that it appears to work very well! Smooth sailing. I saw a couple of hiccups, but those may have been caused by the profiler connection or something? Very good, at least in this test scenario.
Test 6 — MetalDisplayLink ON / Vsync count 0 / Target frame rate 60
Quite smooth! Median frametime 16.667ms. No tearing, mostly no stuttering, apart from an occasional hiccup which appears in the profiler as a Vsync spike with time spent in TimeUpdate.WaitForLastPresentationAndUpdateTime increasing gradually over a few frames up to 14ms. Then smooth again.
I’m going to tell everybody that gaming on a Mac is once again possible. Or will one day be, once the fix is out of alpha.
Now it would be fantastic if you could bring this fix to older Unity versions also. Most of my stuff is still stuck in 2021.1 and I’d really like to move on with the times. I’m basically sitting on a 99% ready demo of a game right now, but it’s unreleasable due to Unity’s security flaw patching tool not reaching that far back in time. I also can’t upgrade the project, because that makes it undevelopable. It’s a damned-if-you-do-damned-if-you-don’t scenario.