[Webkit-unassigned] [Bug 239896] New: Safari Tab freezes when creating too many webgl render calls without flushing

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Apr 29 05:19:16 PDT 2022


https://bugs.webkit.org/show_bug.cgi?id=239896

            Bug ID: 239896
           Summary: Safari Tab freezes when creating too many webgl render
                    calls without flushing
           Product: WebKit
           Version: Safari 15
          Hardware: iPhone / iPad
                OS: iOS 15
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebGL
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: sebastian.dunkel at autodesk.com
                CC: dino at apple.com, kbr at google.com, kkinnunen at apple.com

Hello,

We got reports from customers using Autodesk Forge Viewer that, since updating to IOS 15, very large models could not be loaded anymore and the browser tab completely freezes.
On IOS14 the same models load without problems. They also load fine when deactivating the Safari experimental flag "WebGL via Metal". 

The console on the device contains the following error messages when the tab freezes:
 // IOReturn IOGPUDevice::new_resource(IOGPUNewResourceArgs *, struct IOGPUNewResourceReturnData *, IOByteCount, uint32_t *): PID 44130 likely leaking IOGPUResource (count=44000)
 // ...
 // IOReturn IOGPUDevice::new_resource(IOGPUNewResourceArgs *, struct IOGPUNewResourceReturnData *, IOByteCount, uint32_t *): PID 44130 likely leaking IOGPUResource (count=60000)

The problem seems to occur in combination with multiple frame buffer objects, many geometry buffers and draw calls. 
Calling WebGLRenderingContext.flush() every couple thousand draw calls seems to prevent the issue.

We were not able to reproduce the issue using an IOS simulator, but only on physical devices. On some devices the tab reports a problem and reloads instead of freezing.


I created a minimal example application to show the issue:

// this version consistently fails after roughly 11.500.000 draw calls (Tested on IPhone 11, IPhone 13, IPhone 13 Pro Max, IPad Pro 11 2Gen with IOS/IpadOS 15.4)
https://sdunkel.github.io/IOS15TabFreeze/index.html

// this version does a flush in between and doesn't seem to fail
https://sdunkel.github.io/IOS15TabFreeze/index.html?flush

Depending on the amount of allocated/used resources the number of usable draw calls before the tab freezes varies significantly. So in our application this is already the case after a few ten thousand draw calls.

Thank you

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220429/3565c630/attachment.htm>


More information about the webkit-unassigned mailing list