Blurry UI running VST in Ableton Live 10

Whenever I run my VST3 in Ableton I get blurry rendering, even though the default standalone version seems to render just fine. The weird thing is, it doesn’t seem to be just the text rendering, also the path rendering etc while the scaling is the same. Is there anything I should do regarding DPI awareness? Those were the closest posts I could find. In both cases I’m attaching an OpenGL context to the top level component.

It’s even happening in a minimal plugin test case. To reproduce the images below make a default JUCE plugin project and build it as VST3, load it into live 10 and as standalone (I added a rounded rect to show that it is not just the font rendering).

Screenshots were made on Windows 10 125% scaling (default).

The top image has no OpenGLContext attached for component painting, the bottom one does. So it doesn’t seem to have anything to do with the OpenGL Rendering. I feel like this should be a major issue that should’ve been noticed by many plugin developers?

I geuss it does have something to do with display scaling because this is how it looks at 100% scaling.

Live 10 opens plug-ins in non-DPI aware windows by default, so the plug-in is bitmap scaled by the OS causing the blurry rendering at scale factors > 100%. To disable this, right-click on the plug-in and deselect “Auto-Scale Plugin Window”.

I thought that was required anyway because this is what I get when I turn it off. @ed95 do I have to setup something in my plugin to indicate DPI awareness or anything like that?
NoAutoScalePlugin

No, DPI awareness is enabled unless you have explicitly disabled it by setting the JUCE_WIN_PER_MONITOR_DPI_AWARE flag to false in juce_gui_basics.

Are you on the latest version of JUCE? I’ve just built the AudioPluginDemo and loaded it in Live 10.1 as a VST2 and VST3 with “Auto-Scale Plugin Window” both enabled and disabled at 125% system scaling and I’m not seeing the cropping issue that you posted.

Juce 6.0.4. Projucer 6.0.4. Just pulled the latest JUCE, doesn’t seem to change anything, blurry with auto-scale, cropped without.

Does the same issue happen with any of the JUCE demo plug-ins?

With auto scale:

Without auto scale:

So what is the difference here with making a new audio plugin from the projucer by selecting new audio plugin project, and importing the header file as an automatic plugin project? I tried to make an audio plugin project again through the new project way in the latest Projucer but that one still ends up blurry. I geuss it’s something the default audio plugin components do in their setup?

Can you post the code from your test plug-in?

It’s just the default generated files.

PluginEditor.cpp (1.5 KB) PluginEditor.h (1.1 KB) PluginProcessor.cpp (6.0 KB) PluginProcessor.h (2.3 KB)

That renders fine for me - VST3 in Live 10.1, “Auto-Scale Plugin Window” disabled, 125% scaling. Does it appear cropped if you don’t use OpenGL? There have been reports of some Windows OpenGL driver issues in Live causing incorrect scaling.

Both with GL rendering and CPU rendering the UI appears cropped when I deactive auto scale.

WeirdCrop

This is just a freshly created JUCE audio plugin project. But when I create a project from loading a JUCE audio demo plugin header file, there is a default component that does appear to render fine. I was checking what that component is doing in it’s setup what might be fixing the issue, first I was geussing setResizeLimits, but that doesn’t seem to be it either. not sure what the difference is yet.

@ed95 Ok I can reproduce the issue now, when I add the openGL module to my plugin projucer project it will cause Live to render the plugin blurry with auto scale, and crop the plugin without auto scale. It doesn’t matter whether or not I attach an OpenGLContext anyhwere, just including the OpenGL module leads to this issue. When I remove the module it is blurry when auto scaling and rendering correctly when not auto scaling in Live (This is how the JUCE audio plugin demo rendered correctly aswell). I would like to use the GL module though, maybe some singleton or define in there is causing the behaviour?

That seems… odd. I can’t think of any places where just the presence of the OpenGL module will change the behaviour. Are you sure you aren’t loading an older build of the plug-in with the OpenGLContext attached? Are you cleaning the build folder and completely removing the old plug-in before reloading?

It does sound similar to this issue, which looks like an OpenGL driver issue in Live:

However as @cgleo pointed out in the thread that @ed95 mentioned, that’d be a ton of broken drivers… we have this issue on 4 different machines with Ableton Live, and not a single computer where it’s working. For that reason for now we’ve disabled OpenGL on Windows, but it’d be great to get it fixed.

It’d be even better if there were some other accelerated native solution on Windows, now that OpenGL has been deprecated on macOS

@ed95 I am sure that I rebuilt everything properly I remade the projects in many different ways through the juce plugin demo, through manual project creation, etc. The only thing that influences whether or not it works is including the OpenGL module. I made sure to not create any juce::OpenGLContext objects anywhere when testing whether or not including the GL module had any influence. It’s a weird one :wink:

@AndreasLoANjoe @ed95 The fundamental reason for this problem is that Live doesn’t support VST3’s interface for handling HiDPI properly on Windows.
I’ve added a bug report / feature request in their tracker.
If you want them to take notice please register there and upvote it :ok_hand:

3 Likes

Done