Closed Bug 2054038 Opened 1 month ago Closed 1 month ago

Crash in RenderExternalTextureHost on Metal ANGLE

Categories

(Core :: Graphics, defect)

Unspecified
macOS
defect

Tracking

()

RESOLVED FIXED
154 Branch
Tracking Status
firefox154 --- fixed

People

(Reporter: jnicol, Assigned: jnicol)

References

(Blocks 1 open bug)

Details

(Whiteboard: [fxpe])

Attachments

(1 file)

When using Metal ANGLE for webrender (bug 2052515) we crash when attempting to use RenderExternalTextureHost:

  * frame #0: 0x0000000000000000
    frame #1: 0x0000000337583ae4 XUL`mozilla::gl::GLContext::fTextureRangeAPPLE(this=0x00000001252d8c00, target=34037, length=4194304, pointer=0x000000015f000000) at GLContext.h:1579:5
    frame #2: 0x00000003375830b4 XUL`mozilla::layers::DirectMapTextureSource::UpdateInternal(this=0x000000013b5a3040, aSurface=0x000000012f2327f0, aDestRegion=0x0000000000000000, aSrcOffset=0x0000000000000000, aInit=true) at TextureHostOGL.cpp:417:11
    frame #3: 0x0000000337582f60 XUL`mozilla::layers::DirectMapTextureSource::DirectMapTextureSource(this=0x000000013b5a3040, aContext=0x00000001252d8c00, aSurface=0x000000012f2327f0) at TextureHostOGL.cpp:343:3
    frame #4: 0x000000033758341c XUL`mozilla::layers::DirectMapTextureSource::DirectMapTextureSource(this=0x000000013b5a3040, aContext=0x00000001252d8c00, aSurface=0x000000012f2327f0) at TextureHostOGL.cpp:340:22
    frame #5: 0x0000000338049978 XUL`mozilla::wr::RenderExternalTextureHost::UpdateTexture(this=0x000000013b5f2330, aIndex=0) at RenderExternalTextureHost.cpp:168:19
    frame #6: 0x00000003380497c0 XUL`mozilla::wr::RenderExternalTextureHost::UpdateTextures(this=0x000000013b5f2330) at RenderExternalTextureHost.cpp:187:5
    frame #7: 0x0000000338049734 XUL`mozilla::wr::RenderExternalTextureHost::Lock(this=0x000000013b5f2330, aChannelIndex='\0', aGL=0x00000001252d8c00) at RenderExternalTextureHost.cpp:152:3

ANGLE doesn't support the required extensions APPLE_texture_range, so crashes when attempting to call fTextureRangeAPPLE. Nor does it support APPLE_client_storage, which is also required.

This can be reproduced reliably running the test layout/reftests/canvas/large-canvas.html with accelerated canvas disabled (which occurs, for example, when the GPU process is disabled).

We should avoid using RenderExternalTextureHost when running on ANGLE, and fall back to regular uploads.

ANGLE does not support the required extensions APPLE_texture_range or
APPLE_client_storage. Fall back to regular RenderBufferTextureHost
instead.

Assignee: nobody → jnicol
Status: NEW → ASSIGNED
Status: ASSIGNED → RESOLVED
Closed: 1 month ago
Resolution: --- → FIXED
Target Milestone: --- → 154 Branch
QA Whiteboard: [qa-triage-done-c155/b154]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: