M1 Pro Sonoma Lag/Framerate drops anytime cursor appear/disappears

Hello,

I’ve been trying to play WoW Classic on my 16 inch M1 Pro macbook and have found it really annoying that the frame rate drops each time I click on something (external mouse or internal trackpad doesn’t matter) since the cursor disappears and reappears when you do this. Disabling hardware cursor seemed to fix that problem but now the pointer location doesn’t match what is displayed.

This only occurs in fullscreen mode (with MacOS game mode on OR off). In windowed mode everything works perfectly. I’ve tried with v-sync on and off.

Thanks!

EDIT: The slow down due to cursor disappearing/reappearing does actually happen in windowed mode, just at a less noticible extent given the frames are naturally higher at the lower resolution and absorb some of the effect. The nice thing about windowed is I can execute /console hardwareCursor 0 and the displayed pointer location continues to match up with the actual so gameplay isn’t affected.

1 Like

Tried with an external display and had the same issue. Although I can disable hardware cursor there without affecting the actual pointer location so that’s a solid workaround for external displays. I much prefer playing on the internal display so hope there can be some workaround for that

Just adding a +1 that it’s happening to me on my m2 max on 14.2.1

edit In some quick testing it seems that the the issue isn’t occurring for me when right clicking and moving the camera (which also makes the cursor disappear). It’s limited to left clicking and moving the camera.

2 Likes

There seems to be a 10mo old reddit thread where people were also experiencing this, so this isn’t something new. I really hope they can find time to look into this. https://www.reddit.com/r/wow/comments/11e47cd/fps_drop_when_clicking_with_mouse_mac/

1 Like

I thought i answered this already, or a duplicate thread on same issue. It’s a combination of hardware cursor and vsync and a misunderstood design.

When hardware cursor is enabled, the cursor takes priority on refresh rate and vsync sets the refresh rate to cursor refresh rate when it’s visible, which is generally desktop refresh rate. So if your display is say set to 60hz, but you have wow set to 120fps for some reason (wasteful IMO since display rate is 60 but whatever). any time you move cursor frame rate will drop from 120 down to 60 because cursor will be synced to refresh rate.

Now if it’s one of those situations where say your game framerate is 60, display is 60, but moving cursor drops it below 60, it’s probably that that metal supports variable refresh rates on vsync for game, but not cursor, so again hardware cursor will probably drop it to 15, 30, or 60 and not run it at 57fps like it would game. That’d be my guess.

TL/DR. Just disable vsync, or hardware cursor, it’s that combination that cause it. Or obviously if you are NOT in full screen, that effectively also disables vsync which is why that “work around” works.

Just a note though, disabling vsync and playing in full screen can cause metal instability on some hardware. I recommend just disabling hardware cursor over vsync. but note that the cursor might feel more sluggish at low fps, so avoid low fps.

I don’t think that this is correct. Disabling vsync and left clicking on an m2 max in the undercity (for example) goes from 340 fps to 100 fps. “but your monitor doesn’t refresh that fast”, also correct but it still results in a ~1 second lag moving the mouse.

Also, I have both my desktop and WoW set to 85fps which is the HDMI max of my display. Disabling the hardware cursor is, unfortunately, not a fix because it seems to make pointer trails in borderless windowed mode.

Interestingly, XIV on mac doesn’t have this issue or any other game really.

None of them are using a native full screen api, XiV is just a wine wrapper and wine apps (cause I run a lot) don’t support game mode or native full screen mode, so they never actually activate all native metal features

Vsync off does nothing to combat the issue I’m describing. With Vsync off, I still drop ~10 fps each time the cursor is rendered (i.e whenever I release a click). Disabling HW cursor is not an option because the actual cursor offset becomes different than the displayed cursor position, making it unusable.

With vsync off, if I open Sound Settings and minimize it to the dock (illuminating orange dot in top right corner of the screen, the flickering goes away. Found this workaround here: Mac OS M1 / 2 Flickering BUG - #57 by Scorpy-archimonde

Lil’ update.

Fortunately, I still had the M3 Max 14" that I was going to return to Apple today and was able to confirm no FPS drop issues on that device. That gave me enough determination to do a fresh Venture install using the Recovery tool on the M1 Max – and surprise, surprise, it doesn’t have the issue with the dipping FPS after much testing over the last hour.

Funnily, I ran into the unable to install WoW with Battle.net issue people are having here on the Mac forums. I found the solution was to enable Full Disk Access for the Battle.net application and the Agent application (credit: Cannot update or reinstall on Mac - #8 by Gembley-moon-guard)

I’ll try a Sonoma update next…

Edit:
Final (hopefully) update:

I upgraded to Sonoma and the issue with FPS drops seems to be resolved. Feel free to ask any questions if you have them. GL.

1 Like

Interesting. I’m already on Sonoma on my M1 Pro. Are you suggesting that a fresh install would solve it?

Ok, I think I have an answer. My wife and I were having the same problem as everyone in the thread and I quit bettertouchtool. The problem went away as far as the long lag when left clicking and moving the mouse. The framerate still dips but it “feels” less impactful. I know triple buffering should only help this (in conjuction with vsync) but it seems to make this game worse (and more divinity original sin).

So for clarity I did this:
Windowed WoW then clicked on the BTT icon on the menubar and disabled it for WoW. Left vsync on (because I can’t stand tearing), disabled triple buffering.

Is there a way to fix the problem of cursor offset?