Intermittently blink of <canvas> with remote canvas on windows
Categories
(Core :: Graphics: Canvas2D, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr115 | --- | unaffected |
firefox121 | --- | unaffected |
firefox122 | --- | unaffected |
firefox123 | --- | fixed |
People
(Reporter: yamadat501, Assigned: sotaro)
References
(Regression)
Details
(Keywords: regression)
Attachments
(3 files)
Happens with 12/23 nightly on Win11/x64 (Attach about:support)
STR:
- Set gfx.canvas.remote to true (it is default)
- Open https://developer.mozilla.org/ja/docs/Web/API/Canvas_API/Tutorial/Basic_animations
- Show canvas element.
Expected result:
The canvas element animates normally.
Actual result:
The canvas element blinks intermittently.
Works normally when gfx.canvas.remote is false.
So, regression from Bug 1871467?
Comment 1•1 year ago
|
||
I'll set regressed by field tentatively for now.
Comment 2•1 year ago
|
||
:lsalzman, since you are the author of the regressor, bug 1871467, could you take a look? Also, could you set the severity field?
For more information, please visit BugBot documentation.
Comment 3•1 year ago
|
||
Sotaro, are you able to reproduce this? Is this a potential bug in RemoteTextureMap? Could this be related to a failure to allocate a D3D11TextureData, due to too many being processed, or something like that?
Assignee | ||
Comment 4•1 year ago
|
||
I could reproduce the problem on my Win10 PC with the STR. The problem could be easily reproducible when there was other window that run https://webglsamples.org/aquarium/aquarium.html.
I wonder if the following might be related.
ALLOC_MANUAL_SYNCHRONIZATION could be used only when ID3D11Texture2D is allocated by compositor device. But canvas device is not compositor device.
Assignee | ||
Comment 5•1 year ago
|
||
For now, it seems better to remove ALLOC_MANUAL_SYNCHRONIZATION to address the regression.
Assignee | ||
Comment 6•1 year ago
•
|
||
(In reply to Sotaro Ikeda [:sotaro PTO Dec/28 -Jan/4] from comment #5)
For now, it seems better to remove ALLOC_MANUAL_SYNCHRONIZATION to address the regression.
But when ALLOC_MANUAL_SYNCHRONIZATION flag was removed, canvas was not rendered :( Going to look into it. I wonder if Bug 1870950 might be related to it.
Assignee | ||
Comment 7•1 year ago
|
||
(In reply to Sotaro Ikeda [:sotaro PTO Dec/28 -Jan/4] from comment #6)
(In reply to Sotaro Ikeda [:sotaro PTO Dec/28 -Jan/4] from comment #5)
For now, it seems better to remove ALLOC_MANUAL_SYNCHRONIZATION to address the regression.
But when ALLOC_MANUAL_SYNCHRONIZATION flag was removed, canvas was not rendered :( Going to look into it. I wonder if Bug 1870950 might be related to it.
With latest m-c the above problem did not happen. Bug 1871811 might address the problem.
Assignee | ||
Comment 8•1 year ago
|
||
Comment 9•1 year ago
|
||
Out of curiosity, does setting gfx.canvas.remote.worker-threads
to 0
and restarting help? That makes canvas always run on CanvasRenderer
thread instead of the CanvasWorkers
thread pool. Both should guarantee only one thread ever accesses the texture at a time, but setting the pref to zero ensures it is always the same thread.
Comment 10•1 year ago
|
||
From https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nn-dxgi-idxgikeyedmutex:
Represents a keyed mutex, which allows exclusive access to a shared resource that is used by multiple devices.
It isn't used on multiple devices. Is there something going wrong with the copy we make?
Updated•1 year ago
|
Assignee | ||
Comment 11•1 year ago
|
||
(In reply to Andrew Osmond [:aosmond] (he/him) from comment #9)
Out of curiosity, does setting
gfx.canvas.remote.worker-threads
to0
and restarting help?
It did not help for me.
Assignee | ||
Comment 12•1 year ago
•
|
||
(In reply to Andrew Osmond [:aosmond] (he/him) from comment #10)
It isn't used on multiple devices. Is there something going wrong with the copy we make?
The ID3D11Texture2D is used both with canvas device and compositor device.
Assignee | ||
Comment 13•1 year ago
|
||
D197276 addressed the problem for me.
Comment 14•1 year ago
|
||
Set release status flags based on info from the regressing bug 1871467
Comment 15•1 year ago
|
||
Moving to a FIFO queue means that textures that were just pushed into the recycling
queue will be reused last, reducing the amount of possible lock contention.
Comment 16•1 year ago
|
||
Comment 17•1 year ago
|
||
Comment 19•1 year ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/c765c015a552
https://hg.mozilla.org/mozilla-central/rev/484bd1eca3b5
Reporter | ||
Comment 20•1 year ago
|
||
Confirmed fixed on latest nightly(12-26).
Thanks!!
Comment hidden (Intermittent Failures Robot) |
Description
•