Closed Bug 1647167 Opened 2 months ago Closed 1 month ago

Basic compositor: Graphical glitches on Speedtest.net on Nightly

Categories

(Core :: Canvas: 2D, defect, P1)

Desktop
All
defect

Tracking

()

VERIFIED FIXED
mozilla80
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox77 --- unaffected
firefox78 --- unaffected
firefox79 + verified
firefox80 --- verified

People

(Reporter: smaug, Assigned: jgilbert)

References

(Regression, )

Details

(Keywords: correctness, regression)

Attachments

(2 files)

The "speedometer" isn't always painted properly. Resizing the window seems to help.
Firefox release and Chrome seem to work fine.

I'm on 64 bit linux,
Compositing: Basic
WEBRENDER
opt-in by default: WebRender is an opt-in feature
disabled by user: User force-disabled WR

Gnome Xwayland, Debian Testing, Macbook Pro
mozregression --good 2020-05-21 --bad 2020-06-21 --pref gfx.webrender.force-disabled:true privacy.trackingprotection.enabled:true privacy.trackingprotection.socialtracking.enabled:true -a https://speedtest.net

8:17.71 INFO: Last good revision: ca8139d58d58ea03def4ff2375ab9010cbd2a1b3
8:17.71 INFO: First bad revision: 567a8768593eb06a86deb263f94d9de2d3d3e8fa
8:17.71 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=ca8139d58d58ea03def4ff2375ab9010cbd2a1b3&tochange=567a8768593eb06a86deb263f94d9de2d3d3e8fa

567a8768593eb06a86deb263f94d9de2d3d3e8fa Jeff Gilbert — Bug 1632249 - Disable now-failing DXGL test for now.
832f39c3b02c36aa846c49c6f5a3512d1f55deff Jeff Gilbert — Bug 1632249 - Check weakptr value before deref in gl::Texture/Renderbuffer. r=lsalzman
05896dbeb434d6f3ca9324f01eb67020d932f50f Jeff Gilbert — Bug 1632249 - Determine webgl's layers::TextureType in Present. r=lsalzman
8439f89e170b1fa8175723699f9abeff27ad09bf Jeff Gilbert — Bug 1632249 - Replace GLContextProvider::CreateOffscreen with GLContext::CreateOffscreenDefaultFb. r=lsalzman
e326157c5af9c6928b7a67177f1065fd16825c43 Jeff Gilbert — Bug 1632249 - Remove unused var g2DContextLayerUserData.
2739940a4fb7b7e4bd4f1ec3907a2b286b3fbe8d Jeff Gilbert — Bug 1632249 - Mark mCapturedFrameInvalidated even if mIsCanvasDirty. r=handyman
8f0fb988dc5acc46555f2bcebb62649139c9975e Jeff Gilbert — Bug 1632249 - Fix Bb failures. r=gw
fd4a74ec97a5d9540157f30dfc6184031c2499ac Jeff Gilbert — Bug 1632249 - NON_PREMULT TextureClient iff NON_PREMULT CanvasClient. r=handyman
4cda148ef28f72a0ca30b68919332996e667eec6 Jeff Gilbert — Bug 1632249 - Create a separate WebGLContext::PresentInto function for WebXR. r=jgilbert
0b191b707750e040289033359306e4966c1bf062 Jeff Gilbert — Bug 1632249 - WebXR compositing fixes. r=imanol
16c5dd2cfd600a62c80ca17cfb35c0868e016056 Jeff Gilbert — Bug 1632249 - Support compositing out-of-process WebGL. r=handyman,lsalzman,nical,geckoview-reviewers,agi,imanol

Has Regression Range: --- → yes
Has STR: --- → yes
OS: Unspecified → Linux
Regressed by: 1632249
Summary: Graphical glitches on Speedtest.net on Nightly → Basic compositor: Graphical glitches on Speedtest.net on Nightly

From my perception, it can be fixed by repeatedly scrolling slightly up and down.

Severity: -- → S3
Component: Graphics → Canvas: WebGL
Flags: needinfo?(jgilbert)
Hardware: Unspecified → Desktop
Assignee: nobody → jgilbert
Flags: needinfo?(jgilbert)
Priority: -- → P1
Severity: S3 → S2

Default configuration is affected.

The canvases on that page seem to be all canvas2d, though the regression was from a mostly-webgl change.

Component: Canvas: WebGL → Canvas: 2D

I can repro this on BasicLayers on Windows. It seems like an under-invalidation issue.

OS: Linux → All

This is now on beta too, should the regressing patch be backed out there?

Flags: needinfo?(jgilbert)

If I comment out this branch, the rendering is correct again: https://searchfox.org/mozilla-central/rev/31d8600b73dc85b4cdbabf45ac3f1a9c11700d8e/dom/canvas/CanvasRenderingContext2D.cpp#5344
I think it's not invalidating with basic layers properly?

(In reply to Olli Pettay [:smaug] from comment #6)

This is now on beta too, should the regressing patch be backed out there?

No, we're fixing it ASAP.

Flags: needinfo?(jgilbert)
Pushed by jgilbert@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ba8dfe683bdb
Run pre/post transaction triggers in BasicCanvasLayer::Paint. r=mattwoodrow
Status: NEW → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla80

Please confirm whether this problem is fixed for you.

Flags: needinfo?(bugs)

Comment on attachment 9161106 [details]
Bug 1647167 - Run pre/post transaction triggers in BasicCanvasLayer::Paint.

Beta/Release Uplift Approval Request

  • User impact if declined: Graphical glitches on canvas-2d content with Basic Layers. (~10% of users?)
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Low risk since it's a pretty small and constrained change, with decent understanding about why it's needed.
  • String changes made/needed: none
Attachment #9161106 - Flags: approval-mozilla-beta?

Comment on attachment 9161106 [details]
Bug 1647167 - Run pre/post transaction triggers in BasicCanvasLayer::Paint.

Fixes a canvas rendering bug, approved for 79.0b5.

Attachment #9161106 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Flags: qe-verify+

This issue is Verified as Fixed in our latest Nightly 80.0a1 (2020-07-07) as well as our Beta 79.0b5 builds on Ubuntu 18.04.

Status: RESOLVED → VERIFIED
Flags: qe-verify+

Thanks, seems to work now.

Flags: needinfo?(bugs)
You need to log in before you can comment on or make changes to this bug.