Open Bug 1335587 Opened 7 years ago Updated 2 years ago

When ANGLE is disabled on Windows, WebGL compositor stutters and displays old rendered frames from history

Categories

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

53 Branch
Unspecified
Windows 10
defect

Tracking

()

People

(Reporter: jujjyl, Unassigned)

Details

(Keywords: perf, Whiteboard: [gfx-noted])

There seems to be something going on with the compositor when disabling ANGLE on Windows and running WebGL 2. When running WebGL 2 content in this scenario, occassionally the canvas shows a frame from the past instead of the newly rendered frame. This can be seen visually as a stuttering motion especially in quickly panning situations.

The behavior seems to be somehow racy, and e.g. when running a WebGL 2 demo in emunittest suite, it appears perhaps 10-20 frames out of a sequence of 2000 total rendered frames.
Keywords: perf
Priority: -- → P3
Whiteboard: [gfx-noted]
I'm afraid NV's dx_interop isn't locking properly. (is this NV?)
That, or we aren't using the lock properly on our side.

IIRC this goes away if you use webgl.dxgl.needs-finish:true.
Flags: needinfo?(jujjyl)
Yeah, all the tests were on NVidia and Windows 10 (saw it on a GTX 980 Ti and a Quadro K6000).
Flags: needinfo?(jujjyl)
(In reply to Jukka Jylänki from comment #2)
> Yeah, all the tests were on NVidia and Windows 10 (saw it on a GTX 980 Ti
> and a Quadro K6000).

Please re-test with the pref set to true.
Flags: needinfo?(jujjyl)
Hardware: x86_64 → Unspecified
It looks like this reproduces also with the Zen Garden demo at http://mzl.la/webassemblydemo, tested on Intel Core i7-5960X and Asus GTX 1080 Ti.

See a video recording at http://clbri.com/dump/WindowsZenGardenStuttersWhenANGLEIsDisabled.mp4 (1:10 minutes, 144MB)

In that demo, it looks like there are two kinds of artifacts:

- At 0:02, 0:08, 0:11, 0:13, 0:18, 0:30, 0:37 and 0:53, there is a checkerboard-like pattern of small black tiles that flashes by at the top side of the screen.

- At 0:14, 0:20, 0:27, 0:53 and most prominently at 0:58-1:03, the output is jumping back and forth between old and new rendered frames.
Setting webgl.dxgl.needs-finish;true does indeed remove the abovementioned artifacts.
Flags: needinfo?(jujjyl)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.