Scaling issues with Retina and OpenGL on Windows in Ableton Live

I am having scaling issues with OpenGL on Windows 10 (via Boot Camp), latest JUCE master, latest MBP with Retina display, with Ableton Live 10.

In short, the scaling is wrong when using OpenGL and toggling Live’s “Auto-scale Plug-In Window”. For all details, please watch this 100 seconds video (please watch in highest quality to see the difference of non-Retina UI and Retina UI):

Is there anything the JUCE team could do on that?

Or anything I could do within my code?

It could be a driver related issue - I’m unable to reproduce the behaviour on a Dell XPS with an integrated Intel HD Graphics 5500 but I remember there being some issues with other GPUs relating to hiDPI scaling a while ago.

Just to narrow it down a bit - are you using the latest develop tip of JUCE? Can you still reproduce it by just attaching an OpenGLContext to the editor of the AudioPluginDemo?

Hey Ed, thank you very much for getting back to me so quickly!

So, I’ve tried it with the latest develop tip of JUCE and just attaching an OpenGLContext to the editor of the AudioPluginDemo - it has the same issues, but something interesting happens: First, it works fine after restarting Live, but then the issue starts as soon as I try to resize the UI. This video will explain it better than words… it’s just 1min long:

I should add that I am using VST 2.4.

Anything we can do to fix this?

That is odd. Like I said, I’m unable to reproduce it on my system but I’m using the latest Live 10 beta (10.1.25b2) so it could be that the issue is related to the Live version. Is Live the only host which has this bug? What scaling settings are you using in Windows (Settings->Display->Scale and Layout)?

It might also be worth setting a breakpoint here and inspecting what the value of nativeScaleFactor is set to as this will determine the internal scale factor that JUCE will use to draw the window. It could be that the OpenGL driver is already scaling things and so we end up scaling the window twice.

Thank you so much for your fast reply, Ed!

My scaling is set to 200%. It’s working fine in Reaper. I’ve just tried with the latest Live 10 beta (10.1.25b2), which gives me the same issue as the latest released Live (10.1.18).

I’ve set the breakpoint, and it’s never hit. auto newScale = peer->getPlatformScaleFactor(); is always set to 1.0, with and without Live’s “Auto-scale Plug-In Window”, and with and without a Live restart.

What might be noteworthy though is what I’ve shown in the previous video: If I set Live’s “Auto-scale Plug-In Window” to off, restart Live and then open your Demo plugin (with an attached OpenGLContext), then it looks correct until I drag the UI size… so it’s fine until the size is changed.

As said, f I set Live’s “Auto-scale Plug-In Window” to off, restart Live and then open your Demo plugin (with an attached OpenGLContext ), then the first instance looks correct.

And actually it gets scaled wrong if I do any of these:

  • Drag the UI size (as shown in the previous video),
  • close and reopen the UI,
  • or open another instance of the AudioPluginDemo.

It sounds like an issue with the Boot Camp OpenGL drivers as I’m unable to reproduce it on a Windows machine or in a Windows VM from macOS - this post on the Apple forums sounds similar (https://discussions.apple.com/thread/250239365). Can you try updating the drivers for your MBP and see if that fixes things?

I’m having a related issue on my Thinkpad with a Quadro card (should theoretically have good OpenGL support on windows). The scaling is correct, but when I open the plugin-UI in Ableton Live 10 the window is initially black, and I need to interact with it such that it redraws itself to make its content visible (a repaint() call some milliseconds after attaching the OpenGL context doesn’t do it, very odd). It only happens when my system scaling factor is not 100% and “Auto-Scale Plugin Window” is turned off in Ableton. Same as for Jakob, opening the UI in Reaper works fine (haven’t yet tried other DAWs).

It also doesn’t happen when I open Ableton with the integrated i7 graphics adapter (I can select that in Windows per app). So yes, it might be an issue with the driver, and I should maybe look for an update, but we can’t expect our customers to have their OpenGL drivers updated. We also have two other (very different) native Windows machines (not Bootcamp) which show basically the same scaling-issue as reported by Jakob. I think these are just too many different supposedly broken drivers.

I have since found out that it’s a problem with all nvidia cards and their drivers on windows 10. Reaper doesn’t have the issue, because in case of Reaper, the whole process is “per monitor dpi aware”, so other rules apply. With Live 10 (and also Cubase 10.5 with which I tested), the opengl context must respect the dpi mode of the window which has been created using SetThreadDpiAwarenessContext() to enable high dpi awareness. Latest JUCE seems to do everything textbook.

AMD and intel GPUs don’t reproduce the bug.

I’m trying to get more people to nag nvidia about this, see this thread in their forums: High-DPI scaling bug with NVIDIA drivers and OpenGL on Windows 10 - Visual, Game & Mobile Development / OpenGL - NVIDIA Developer Forums - it’s not a new issue.

1 Like

Thanks a ton for sharing the link to NVIDIA! It’s frustrating, but good to know what is causing the scaling issues. I’ve also posted in the NVIDIA forum now.