RESOLVED WONTFIX 102563
Add an SVG repaint test
https://bugs.webkit.org/show_bug.cgi?id=102563
Summary Add an SVG repaint test
Florin Malita
Reported 2012-11-16 14:46:40 PST
Existing tests don't measure paint performance, adding one to track improvements in https://bugs.webkit.org/show_bug.cgi?id=102272.
Attachments
Patch (103.52 KB, patch)
2012-11-16 15:06 PST, Florin Malita
rniwa: review-
Florin Malita
Comment 1 2012-11-16 15:06:41 PST
Ryosuke Niwa
Comment 2 2012-11-16 15:28:35 PST
Comment on attachment 174765 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174765&action=review > PerformanceTests/SVG/SvgPainting.html:736 > + testRunner.display(); display() does much more than just painting.
Ryosuke Niwa
Comment 3 2012-11-16 15:28:36 PST
Comment on attachment 174765 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174765&action=review > PerformanceTests/SVG/SvgPainting.html:736 > + testRunner.display(); display() does much more than just painting.
Florin Malita
Comment 4 2012-11-16 15:52:04 PST
(In reply to comment #2) > > PerformanceTests/SVG/SvgPainting.html:736 > > + testRunner.display(); > > display() does much more than just painting. That's OK as long as paint regressions/progressions are observable in the results (and they are for the parent patch). Or is there a better way to isolate paint-only times?
Florin Malita
Comment 5 2012-11-26 09:52:46 PST
Bump.
Ryosuke Niwa
Comment 6 2012-11-26 09:56:38 PST
Comment on attachment 174765 [details] Patch I don't think we should be using testRunner.display() for this.
Florin Malita
Comment 7 2012-11-26 09:59:46 PST
So the previous question still stands: what is the better way for measuring paint performance?
Ryosuke Niwa
Comment 8 2012-11-26 10:06:01 PST
(In reply to comment #7) > So the previous question still stands: what is the better way for measuring paint performance? See other SVG tests.
Florin Malita
Comment 9 2012-11-26 10:24:04 PST
(In reply to comment #8) > (In reply to comment #7) > > So the previous question still stands: what is the better way for measuring paint performance? > > See other SVG tests. The existing tests don't paint. Try this: --- a/Source/WebCore/rendering/svg/RenderSVGShape.cpp +++ b/Source/WebCore/rendering/svg/RenderSVGShape.cpp @@ -271,6 +271,7 @@ void RenderSVGShape::fillAndStrokeShape(GraphicsContext* context) void RenderSVGShape::paint(PaintInfo& paintInfo, const LayoutPoint&) { + fprintf(stderr, "*** paint\n"); if (paintInfo.context->paintingDisabled() || style()->visibility() == HIDDEN || isEmpty return; FloatRect boundingBox = repaintRectInLocalCoordinates(); Nothing comes out unless display() is called.
Ryosuke Niwa
Comment 10 2012-11-26 10:58:42 PST
(In reply to comment #9) > (In reply to comment #8) > > (In reply to comment #7) > > > So the previous question still stands: what is the better way for measuring paint performance? > > > > See other SVG tests. > > The existing tests don't paint. Try this: > > --- a/Source/WebCore/rendering/svg/RenderSVGShape.cpp > +++ b/Source/WebCore/rendering/svg/RenderSVGShape.cpp > @@ -271,6 +271,7 @@ void RenderSVGShape::fillAndStrokeShape(GraphicsContext* context) > > void RenderSVGShape::paint(PaintInfo& paintInfo, const LayoutPoint&) > { > + fprintf(stderr, "*** paint\n"); > if (paintInfo.context->paintingDisabled() || style()->visibility() == HIDDEN || isEmpty > return; > FloatRect boundingBox = repaintRectInLocalCoordinates(); > > > Nothing comes out unless display() is called. Then we don't have a way to test paints. In general, using DRT is a terrible way of testing painting performance. It doesn't even use real graphics context.
Florin Malita
Comment 11 2012-11-26 11:21:04 PST
(In reply to comment #10) > Then we don't have a way to test paints. In general, using DRT is a terrible way of testing painting performance. It doesn't even use real graphics context. OK. Not sure about other platforms, but CR/DRT seems to use a regular off-screen canvas, and thus paint performance variations are noticeable in display() timings.
Note You need to log in before you can comment on or make changes to this bug.