Just wanted to pitch in as we would like to see the JUCE team taking this topic seriously.
OSX
The OSX implementation translates into CoreGraphics calls, the OS turns those into Metal calls when possible. Letting the OS handle this is a good thing, if there is a good and optimised translation into native calls you don’t need a Vulkan or SKIA back-end.
When you enable the async drawing macro on OSX the drawing is even done on a background thread, freeing the Message Thread from it. So let the OS do the work and make sure we have an optimised mapping from JUCE to native calls is the way to go in my opinion.
Windows
But all of this does not work on Windows, we are still stuck with the software renderer ( if i’m correct the Direct2D was never completed), any chance a proper hardware accelerated back-end is on the planning? Can’t imagine Windows not providing a similar mechanism like OSX does.
Optimisation
I think it’s important to find the current bottlenecks and see what can be improved, learn from the tools that are out there and see how they can be applied to JUCE. Caching is probably one of them.
I’m not sure how REACT JS does it but it might be good to dig around.
We recently created a rest-api interface for our software, and as an example we made a REACT JS clone of our UI. Speed wise it runs circles around the JUCE UI. It’s funny to see the REACT JS UI running in a browser on a different machine respond quicker to changes in our app than the JUCE UI itself does. So there are big gains out there, let’s try to find them!
