Open Bug 1287986 Opened 8 years ago Updated 2 years ago

Follow up 1284440 - RefTest cannot detect some graphics error

Categories

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

defect

Tracking

()

People

(Reporter: cleu, Unassigned)

References

Details

(Whiteboard: [gfx-noted])

Attachments

(2 files, 3 obsolete files)

In bug1284440, the v1 patch broke nightly start page under safe mode in Linux, but our reftest cannot detect it.

I am investigating this issue now.
Assignee: nobody → cleu
Whiteboard: [gfx-noted]
Remove unnecessary fprintfs
Attachment #8774623 - Attachment is obsolete: true
Merge with other gfx reftest
Attachment #8774624 - Attachment is obsolete: true
Attachment #8774636 - Attachment description: WIP - a gfx reftest which reproduce gfx glitch in basic compositor0002-add-reftest-for-gfx.patch → WIP - a gfx reftest which reproduce gfx glitch in basic compositor
Hi Jeff,
We have some problem writing reftest for it.
It seems that reftest cannot detect some compositor bugs when the bug is related to frame buffer update.
I think it’s caused by 2 reasons.

1. Some of these bugs can only be reproduced with chrome window present, which means that the testcases are glitched when we open it with browser directly, but they just remain intact when running reftest.

2. The current screenshot mechanism cannot capture the exact content on screen even with USE_WIDGET_LAYER. We make screenshot via a private canvas API “DrawWindow” in CanvasRenderingContext2D. It reuses the lastest frame tree to redraw the window in a canvas element which cannot capture gfx glitches caused by malfunctioned frame buffer update. In other words, we can see the screen glitched, but the screenshot is clean.

To address to 1., We tried marionette test which comes with screenshot ability with chrome window present. However, this cannot overcome 2., so we can see the windows glitch but screenshot is clean.

We have tried workarounds below, but no luck yet.

1. Add DRAW_CARET flags in DrawWindow in marionette driver api.
2. Make marionette driver and CanvasRenderingContext2D always use same canvas and DrawTarget for snapshot and do snapshot twice to trigger framebuffer updates in the DrawTarget.

If we want to detect this kind of bug by reftest, I think we need a different snapshot mechanism. For example, using OS-provided snapshot to capture the whole window or we create a path allows us to copy snapshot from screen buffer inside compositor.

Do you have any suggestions?
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(jmuizelaar)
Assignee: cleu → nobody
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: