This was inspired from Jules response to the thread regarding hinting:
I hope that in the rush to make everything transformable, and allow the operating system to do most of the rendering work, we don’t lose the valuable ability to replace the LowLevelGraphicsSoftwareRenderer with one that is optimized for the application. I make extensive use of rectangle fills both solid and with opacity, with some proprietary effects thrown in there. A lot of the rectangles are horizontal and vertical lines. The performance using the built-in LowLevelSoftwareGraphicsRenderer is pretty bad.
I haven’t complained about it because optimization is a last step but I already know from my efforts in the previous iteration of my application (for which I am throwing away my home-brew GUI code and replacing it with Juce), that significant performance improvements result specifically from hand tuning the cases of drawing fully opaque, and partially transparent, rectangles, vertical lines, and horizontal lines. Note this includes vertical blends, which are merely a general case of many horizontal lines.
I highly doubt that Direct2D, or whatever Microsoft’s new-fangled proprietary GDI API flavor of the month, will outperform a hand tuned solution, since it will always be written for the general case and can usually not take advantage of properties unique to the individual application.
So I guess what I am saying is please let’s not ignore this use-case. Its true that the LowLevelGraphicsSoftwareRenderer can’t be changed for a heavyweight ComponentPeer in the current code base but making that change is fairly simple.