Skip to main content

Unleashing the power of QPainterPath::addEllipse()

Comments

Up until recently, WebKit used to draw SVG circles and ellipses by breaking them down into 100-segment paths. This was done to get consistent auto-test results across different platforms and rendering libraries. Unfortunately, it wasn't very fast. With Qt 4.7's WebKit, my machine reaches a meager 17 FPS on the SVG version of The Man in Blue's benchmark which is pretty sad.

I spent some time digging into this issue and have finally landed a change upstream that makes WebKit take proper advantage of the underlying libraries - in our case by using QPainterPath::addEllipse() to compose the shapes instead of QPainterPath::lineTo(). This bumps our FPS on the aforementioned test to 51, three times faster!


New Ellipse vs. Old Ellipse. Dots mark the relevant path points.



For the specifically curious, here's the webkit.org commit: r69517

Comments

Subscribe to our blog

Try Qt 6.10 Now!

Download the latest release here: www.qt.io/download

Qt 6.10 is now available, with new features and improvements for application developers and device creators.

We're Hiring

Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.