Closed Bug 1401609 Opened 8 years ago Closed 8 years ago

Some canvases on perf-html.io don't update

Categories

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

defect

Tracking

()

VERIFIED FIXED
mozilla58
Tracking Status
firefox57 --- unaffected
firefox58 --- unaffected

People

(Reporter: mstange, Assigned: sotaro)

References

Details

(Whiteboard: [wr-mvp] [gfx-noted])

Attachments

(3 files)

Steps to reproduce: 1. Enable webrender, webrendest, layers-free and blob images. 2. Open this profile: https://perfht.ml/2jM7NEH 3. Create a selection in the upper part of the page by dragging the mouse over the graphs. 4. "Zoom" into that selection by clicking the magnifying glass. The markers and the graphs should now be zoomed in to show only the selected time range. However, only the "marker" canvases update; the "stack graph" canvases still show the pre-zoom state.
Priority: -- → P3
Whiteboard: [gfx-noted]
Priority: P3 → P2
Whiteboard: [gfx-noted] → [wr-mvp] [gfx-noted]
This bug was not fixed by bug 1405481.
Attached file testcase
Click the canvas. Every time you click, the canvas should toggle between green and blue. With WebRender it seems to stay green forever. Whenever the canvas's internal surface gets reset because the canvas width or height gets changed, with WebRender we seem to fail to adopt the new surface. Instead, the original surface keeps being displayed forever. Sotaro, would you like to look into this?
Flags: needinfo?(sotaro.ikeda.g)
Thanks, I am going to look into it.
Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)
Status: NEW → ASSIGNED
Priority: P2 → P1
Non-WebRender case, CanvasRenderingContext2D recreates CanvasLayer and CanvasRenderer when after CanvasRenderingContext2D::ClearTarget() is called. But WebRender case, CanvasRenderer is not re-created, but CanvasRenderingContext2D assumes it.
CanvasRenderingContext2D::SetDimensions() calls CanvasRenderingContext2D::ClearTarget(). Then CanvasRenderingContext2D creates new BufferProvider for rendering, but WebRenderCanvasData(CanvasRenderer) continues to use old obsoleted BufferProvider.
See Also: → 1411472
attachment 8921771 [details] [diff] [review] was created by referencing GetCanvasLayer().
Attachment #8921771 - Attachment description: patch - Add UpdateWebRenderCanvasData() to handle CanvasRenderer re-creation → patch part 1 - Add UpdateWebRenderCanvasData() to handle CanvasRenderer re-creation
Attachment #8921771 - Flags: review?(jmuizelaar)
Attachment #8921798 - Flags: review?(jmuizelaar)
Attachment #8921771 - Flags: review?(jmuizelaar) → review+
jrmuizel, can you also review attachment 8921798 [details] [diff] [review]? Thanks!
Flags: needinfo?(jmuizelaar)
Attachment #8921798 - Flags: review?(jmuizelaar) → review+
Flags: needinfo?(jmuizelaar)
:mstange, thanks!
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/8cb78523022e Add UpdateWebRenderCanvasData() to handle CanvasRenderer re-creation r=jrmuizel,mstange
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
Has STR: --- → yes
OS: Mac OS X → All
(In reply to Markus Stange [:mstange] from comment #2) > Created attachment 8920661 [details] > testcase > > Click the canvas. Every time you click, the canvas should toggle between green and blue. With WebRender it seems to stay green forever. Verified fixed in Nightly 58 x64 20171029220112 de_DE @ Debian Testing (Radeon RX480). Thank you!
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: