My engineering approach is, and always has been, to “reinvent the wheel”. (I literally have a US patent on a special purpose wheel design)
I do think I understand the system and iPlug2 is extremely compliant. The issue (for me) is how it handles bitmaps. AFAIK it “auto detects” using “GetScaleForScreen”, right? And when it detects a high-res screen doesn’t it switch to/require a second set of @2x bitmaps?
I am doing it the other way around - using only one set of 2x bitmaps from the start and then downscaling by 50% for low-res screens.
It seems I have - by replacing “GetScaleForScreen” with a fixed scale number (0.5f) in MakeGraphics(). That makes it static vs. “auto detect” as far as I can tell. The function definition allows a fixed scale and it appears to work without issue in practice.
Back to the OP, I have no way to test this myself but I have sent my build to a beta tester who does have 4k and he says it’s working nicely. The plugin does not “autoscale” - it opens slightly large on an HD screen and slightly small on 4k screen - but it does allow the user to resize as needed. The advantage of what I have done is: 1) no upscaling of bitmaps and 2) only one set of bitmaps required. It looks good everywhere and is easy to build and maintain. Maybe it will fail somewhere, but so far so good.
Now, if plugins only use vector graphics then scaling by nearly any amount is of no consequence and iPlug2 as-designed - with auto-detection and scaling over a large range - is certainly superior.