MotionMark 1.1 - test "Suits shape only": visualization errors with Webrender activated.
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr60 | --- | unaffected |
firefox-esr68 | --- | disabled |
firefox68 | --- | wontfix |
firefox69 | --- | wontfix |
firefox70 | --- | fixed |
People
(Reporter: ordinimg, Assigned: tnikkel)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression)
Attachments
(2 files)
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Steps to reproduce:
With the landing of Webrender on Firefox stable, in my opinion, the most used benchmark to highlight the performance improvements obtained thanks to Webrender, will be MotionMark.
Of course it is desirable that Webrender works in the best way with this benchmark.
With my configuration, with tests run with Webrender enabled and not, I noticed some problems.
MotionMark ver1.1 and ver1.0
Firefox 67.0 64bit
Windows 10 build 1803 (display: 2560x1440 60hz)
GPU GTX1600 - 6GB (driver: 430.64)
CPU i5 6600K - 16GB
Actual results:
By activating Webrender the scores are excellent, but the "shape only" figures are horribly visualized, they appear to be displayed at a much lower resolution and then enlarged and blurred, or as if they have suffered extreme compression.
You can see attached image.
Instead, no problem with the "clip only" figures of the same type of subtest:
https://browserbench.org/MotionMark1.1/developer.html?test-interval=30&display=minimal&tiles=big&controller=ramp&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Suitssuite&test-name=Suitscliponly
The same problem also in the 1.0 version of MotionMark, in which the "Suits" test simultaneously uses figures "shape" and "clip", in fact only SOME figures (those "shape") are not correctly displayed:
https://browserbench.org/MotionMark/developer.html?test-interval=30&display=minimal&tiles=big&controller=ramp&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=Animometer&test-name=Suits
Comment 1•6 years ago
|
||
Nical, could you take a peak at this and let me know what you think?
Updated•6 years ago
|
Comment 2•6 years ago
|
||
On this test we have a number of svg paths with a translatlation and a scale. It's hard to see if the scale is animated but the translation obviously is. We do a good job at layerizing a blob per moving element, but the blobs are obviously rasterized at the pre-scale resolution which makes them look like a blurry mess.
Jeff, you better know how the blob layerization works, any idea/pointer?
Updated•5 years ago
|
Updated•5 years ago
|
Comment 3•5 years ago
|
||
I believe this is now fixed in Nightly. Rival, can you confirm?
Sorry Jeff,
but with the latest build available to me on the channel, (70.0a1 build id: 20190826094255),
the problem is still unchanged.
Comment 5•5 years ago
|
||
Timothy, this seems a bit like bug 1569215. Do you want to take a look when you get a chance?
Assignee | ||
Comment 6•5 years ago
|
||
Regressed by bug 1519444. But I'm assuming that just exposed a regression from bug 1415987 by applying that bug to smaller layers. Checking that now.
Assignee | ||
Comment 7•5 years ago
|
||
In FrameLayerBuilder::ChooseScale we hit this line https://searchfox.org/mozilla-central/rev/325c1a707819602feff736f129cb36055ba6d94f/layout/painting/FrameLayerBuilder.cpp#6124 and aVisibleRect is empty (because every call site except for nsDisplayMasksAndClipPaths::CreateWebRenderCommands (which doesn't need to) passes empty for the size of the bounds) and so the maxScale stays at 4, and we clamp to 4 instead of something 30-50.
The call to ChooseScale in StackingContextHelper::StackingContextHelper is the only place the size of aBounds is ever looked at. And we only ever call ChooseScale if we are passed a mBoundTransform which only nsDisplayTransform does. So this change should be quite safe.
Assignee | ||
Comment 8•5 years ago
|
||
(In reply to Timothy Nikkel (:tnikkel) from comment #6)
Regressed by bug 1519444. But I'm assuming that just exposed a regression from bug 1415987 by applying that bug to smaller layers. Checking that now.
Indeed, if you revert bug 1415987 but leave bug 1519444 then the bug doesn't appear.
Assignee | ||
Updated•5 years ago
|
I don't know, if you can use this information to investigate the cause of the bug,
but the graphic problem does not occur, setting in firefox 68:
gfx.webrender.blob.invalidation = false
Naturally, with this setting, the performances (scores) fall by 70%, even lower than the scores
obtained with a completely disabled webrender. ;)
Updated•5 years ago
|
Comment 10•5 years ago
|
||
Comment 11•5 years ago
|
||
Backed out changeset 5395a79f7a0b (Bug 1553571) for causing reftest failures
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=264122154&repo=autoland&lineNumber=26537
Backout: https://hg.mozilla.org/integration/autoland/rev/b1248ff798589712c53e7d5de49eebf596ee67ed
Assignee | ||
Comment 12•5 years ago
|
||
Oh yeah, I figured it might need some fuzz to pass but it passed locally on my machine without. I'll add fuzz and reland as we don't need pixel perfect rendering here, just testing to make sure it's not a vastly lower resolution image upscaled larger.
Comment 13•5 years ago
|
||
Updated•5 years ago
|
Comment 14•5 years ago
|
||
Comment 15•5 years ago
|
||
bugherder |
Updated•5 years ago
|
Comment 16•5 years ago
|
||
bugherder uplift |
Updated•3 years ago
|
Description
•