Closed Bug 1666055 Opened 4 years ago Closed 4 years ago

sw-wr: YouTube Crash in [@ mozilla::wr::RenderMacIOSurfaceTextureHostOGL::GetSize]

Categories

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

Unspecified
macOS
defect

Tracking

()

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

People

(Reporter: cpeterson, Assigned: mattwoodrow)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: crash, regression)

Crash Data

Attachments

(3 files)

Maybe Fission related. (DOMFissionEnabled=1)

STR:

  1. Enable SW-WR: gfx.webrender.software pref = true
  2. Load any YouTube video.

RESULT:

Crash report: https://crash-stats.mozilla.org/report/index/ff91e5e4-31f1-4827-a7b5-e1e010200919

Top 10 frames of crashing thread:

0 XUL mozilla::wr::RenderMacIOSurfaceTextureHostOGL::GetSize const gfx/webrender_bindings/RenderMacIOSurfaceTextureHostOGL.cpp:71
1 XUL mozilla::layers::NativeLayerCA::AttachExternalImage gfx/layers/NativeLayerCA.mm:495
2 XUL <webrender_bindings::swgl_bindings::SwCompositor as webrender::composite::Compositor>::attach_external_image gfx/webrender_bindings/src/swgl_bindings.rs:1181
3 XUL webrender::renderer::Renderer::update_native_surfaces gfx/wr/webrender/src/renderer.rs:6036
4 XUL webrender::renderer::Renderer::render_impl gfx/wr/webrender/src/renderer.rs:3609
5 XUL wr_renderer_render gfx/webrender_bindings/src/bindings.rs:617
6 XUL mozilla::wr::RendererOGL::UpdateAndRender gfx/webrender_bindings/RendererOGL.cpp:156
7 XUL mozilla::wr::RenderThread::UpdateAndRender gfx/webrender_bindings/RenderThread.cpp:505
8 XUL mozilla::wr::RenderThread::HandleFrameOneDoc gfx/webrender_bindings/RenderThread.cpp:360
9 XUL mozilla::detail::RunnableMethodImpl<mozilla::wr::RenderThread*, void  xpcom/threads/nsThreadUtils.h:1240
Has Regression Range: --- → yes
Severity: -- → S3
Priority: -- → P3

When SWGL is enabled, we're letting BufferTextureHost::PushDisplayItems pass true for aUseExternalSurface, which lets WebRender pass that texture directly back to the compositor.

On MacOS though we're not using the SWGL compositor, and we're forwarding on to the native compositor, which doesn't support BufferTextureHost.

We're going to need to either support this (by making NativeLayerCA::AttachExternalImage detect BufferTextureHosts, and upload to an IOSurface), or disable this flag again on Mac.

Assignee: nobody → matt.woodrow
Depends on: 1670164

When using the native RenderCompositor+SWGL on MacOS, we don't support passing buffer textures directly to the compositor.

This interface is never used directly, and the only consumers of the virtual functions are by the derived classes themselves.

Depends on D93179

NativeLayerCA only understands how to extract the IOSurface from a RenderMacIOSurfaceTextureHost.

Rather than trying to support both types, this just merges them, as they are both just an IOSurface pointer and some associated helper functions.

Depends on D93180

Pushed by mwoodrow@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/97337b1dc812 Disable buffer textures as external compositor surfaces on MacOS. r=lsalzman https://hg.mozilla.org/integration/autoland/rev/4069bebe3082 Remove RenderTextureHostOGL. r=lsalzman https://hg.mozilla.org/integration/autoland/rev/c80e9fd82c9d Merge IOSurface RenderTextureHosts, so that NativeLayerCA can handle surfaces passed through SWGL. r=lsalzman
Blocks: 1668288
No longer regressions: 1675999
No longer blocks: sw-wr-correctness
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: