Closed Bug 1553571 Opened 5 years ago Closed 5 years ago

MotionMark 1.1 - test "Suits shape only": visualization errors with Webrender activated.

Categories

(Core :: Graphics: WebRender, defect, P3)

67 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla70
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)

Attached image webrender1.jpg

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

Nical, could you take a peak at this and let me know what you think?

Assignee: nobody → nical.bugzilla
Blocks: wr-68
Flags: needinfo?(nical.bugzilla)
Priority: -- → P3
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true

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?

Flags: needinfo?(nical.bugzilla) → needinfo?(jmuizelaar)
Blocks: wr-70
No longer blocks: wr-68
Flags: needinfo?(jmuizelaar)

I believe this is now fixed in Nightly. Rival, can you confirm?

Flags: needinfo?(ordinimg)

Sorry Jeff,
but with the latest build available to me on the channel, (70.0a1 build id: 20190826094255),
the problem is still unchanged.

Flags: needinfo?(ordinimg)

Timothy, this seems a bit like bug 1569215. Do you want to take a look when you get a chance?

Flags: needinfo?(tnikkel)

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.

Regressed by: 1519444

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.

(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.

Flags: needinfo?(tnikkel)
Assignee: nical.bugzilla → tnikkel

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. ;)

Pushed by tnikkel@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5395a79f7a0b
Pass the size of the display item to the StackingContextHelper constructor in nsDisplayTransform::CreateWebRenderCommands. r=jrmuizel

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.

Flags: needinfo?(tnikkel)
Backout by nerli@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2a39bef5e2ad
Backed out changeset 5395a79f7a0b for causing reftest failures
Attachment #9088310 - Attachment description: Bug 1553571. Pass the size of the display item to the StackingContextHelper constructor in nsDisplayTransform::CreateWebRenderCommands. r?jrmuizel → Bug 1553571. Pass the size of the display item to the StackingContextHelper constructor in nsDisplayTransform::CreateWebRenderCommands. r=jrmuizel
Pushed by tnikkel@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/934307ae011e
Pass the size of the display item to the StackingContextHelper constructor in nsDisplayTransform::CreateWebRenderCommands. r=jrmuizel
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: