Closed Bug 1348414 Opened 3 years ago Closed 3 years ago

reftest-wait seems to snapshot at the wrong time with WR


(Core :: Graphics: WebRender, defect)

51 Branch
Not set



Tracking Status
firefox55 --- fixed


(Reporter: mchang, Assigned: mchang)




(1 file, 1 obsolete file)

I'm getting failures not due to wrong rendering, but seems like it's snapshotting too early or before WR finishes rendering an update after a reftest-wait.

See /layout/reftests/bugs/1003425-1.html
Tracked this down. We keep sending an EmptyRect during invalidation detection in [1]. This empty rect is passed onto NotifyPaintEvent, which is fired after we paint. The reftest framework looks for client rects to determine that it should snapshot again. Since we return an empty rect, the reftest doesn't think it needs to snapshot again and dies.

I tried caching the display item geometry via a LayerTreeProperty and then call nsDisplayList::ComputeInvalidationRegion. However, the display item's lifetimes are shorter than the Layer trees. Also, since we recycle display item layers, there's no guarantee that the display item in a recycled layer would be the same time and the geometry would apply to check against anyway.

Going back through some old comments, I saw [2]. Specifically, I think we'd change the tests to just wait until there are no more scheduled paints.

See Also: → 1348755
Attachment #8849765 - Flags: review?(matt.woodrow)
Blocks: 1348755
Fixed a bug where we wouldn't detect if WR was enabled on non-windows platforms.
Attachment #8849765 - Attachment is obsolete: true
Attachment #8849765 - Flags: review?(matt.woodrow)
Attachment #8850194 - Flags: review?(matt.woodrow)
Attachment #8850194 - Flags: review?(matt.woodrow) → review+
Pushed by
Always snapshot after no more paints are pending if WR is enabled. r=mattwoodrow
Closed: 3 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.