[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