Closed Bug 1654477 Opened 4 years ago Closed 4 years ago

[win] Draw section flickers on Freeconference.com

Categories

(Core :: Graphics: Canvas2D, defect)

80 Branch
All
Windows
defect

Tracking

()

RESOLVED FIXED
83 Branch
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox78 --- unaffected
firefox79 --- unaffected
firefox80 --- disabled
firefox81 --- disabled
firefox82 --- disabled
firefox83 --- fixed

People

(Reporter: bmaris, Assigned: bobowen)

References

(Regression)

Details

(Keywords: regression)

Attachments

(6 files)

Attached image Gif showing the issue

Affected versions

  • Latest Nightly 80.0a1

Unaffected versions

  • Firefox 79.0 RC

Affected platforms

  • Windows 10 64bit
  • Windows 7 64bit

Steps to reproduce

  1. Start Nightly
  2. Visit https://hello.freeconference.com/conf/call/3243397 (demo conference room)
  3. Enter a name (any string will do)
  4. Click the Draw icon
  5. Draw something
  6. Resize Nightly from any corner

Expected result

  • No flickering can be seen after following step 5 or 6.

Actual result

  • Draw area flickers when drawing or by resizing Nightly (step 5 or 6).

Regression range

Additional notes

  • Gif showing the issue is attached.
  • I would assume this is can be marked as an S3 bug since only nightly is affected by the issue in question.
Has Regression Range: --- → yes
Has STR: --- → yes
Flags: needinfo?(bobowencode)

Thanks Bogdan.

I get loads of "GP+[GFX1-]: RenderDXGITextureHostOGL Failed to open shared texture, hr=0x80070057" messages while this is happening.
So that gives me something to look at.

Assignee: nobody → bobowencode
Status: NEW → ASSIGNED
Flags: needinfo?(bobowencode)

If I disable webrender, it still flickers, but with a white background and no message.

I've found the problem here.
This manages to trigger a situation where all the references to the texture are dropped and it gets destroyed before the handle it is opened for compositing.
The type of handle we use at the moment doesn't keep the texture alive.
We could possibly use an NT handle, but there is a question mark over support on Windows 7.
We could hold a separate reference until the texture is reopened on the other device.
Possibly the easiest thing will be to ensure the texture is opened as soon as we get the descriptor for the TextureHost.

See Also: → 1656774

The severity field is not set for this bug.
:ktaeleman, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(ktaeleman)
Component: Graphics → Canvas: WebGL
Flags: needinfo?(ktaeleman)

The severity field is not set for this bug.
:jgilbert, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(jgilbert)
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Flags: needinfo?(jgilbert)
Resolution: --- → DUPLICATE

This is a canvas 2D issue, so I don't think it's a duplicate of 1653404.
It probably is a duplicate of 1656774, but I'll have the fix up soon, so we can then confirm through testing.

Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Component: Canvas: WebGL → Canvas: 2D

This creates a unique (per content process) ID for each TextureRecorded. This is
then used as a lookup in the GPU process for the real texture.
Previously the pointer for the TextureRecorded's DrawTarget was used, but as the
translated texture is used in multiple threads in the GPU process, pointer reuse
could mean that the handle for an old texture could be picked up by mistake.

This ensures that the translated Texture in the GPU process keeps the GPU
resource alive during the period before the resource is opened by webrender.

Depends on D93501

Pushed by bobowencode@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/f1c18620c561
P1: Use a unique ID to track recorded textures. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/370b395bc996
P2: Use TextureFlags::WAIT_HOST_USAGE_END for TextureRecorded when webrender enabled. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/7bcb1137e1d5
P3: Remove some old unimplemented methods from CanvasTranslator. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/6db3be291797
P4: Add pref to crash the browser if the GPU process crashes for testing. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/49a50cf01c73
P5: Add crashtest to trigger texture handle open failures. r=jrmuizel
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: