Closed Bug 1726863 Opened 4 months ago Closed 3 months ago

Cache GLContext::fBindFramebuffer

Categories

(Core :: Canvas: WebGL, enhancement, P1)

enhancement

Tracking

()

RESOLVED FIXED
93 Branch
Tracking Status
firefox93 --- fixed

People

(Reporter: jgilbert, Assigned: jgilbert)

Details

Attachments

(1 file)

WebGL will often make duplicate calls to glBindFramebuffer, but it's not easy to figure out which are unnecessary at the WebGL layer. Instead, consider caching framebuffer bindings and eliding duplicate BindFramebuffer calls in GLContext.

We've seen these duplicate BindFramebuffer calls show up in profiling, at least on ANGLE.

Pushed by jgilbert@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ef1d6ccf8d61
Cache/elide GLContext::BindFramebuffer calls. r=lsalzman

This is so weird!

Flags: needinfo?(jgilbert)
Pushed by jgilbert@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fd92f897de07
Cache/elide GLContext::BindFramebuffer calls. r=lsalzman

Backed out for causing assertion failures on ContentCompositorBridgeParent.cpp

[task 2021-08-23T22:25:53.171Z] 22:25:53     INFO -  DEBUG: Adding blocker CrashService waiting for content crash ping to be sent for phase profile-before-change
[task 2021-08-23T22:25:53.177Z] 22:25:53     INFO -  [2021-08-23T22:25:53Z WARN  webrender::device::gl] Missing optimized shader source for gpu_cache_update
[task 2021-08-23T22:25:53.185Z] 22:25:53     INFO -  Assertion failure: sIndirectLayerTrees.find(layersId) != sIndirectLayerTrees.end(), at /builds/worker/checkouts/gecko/gfx/layers/ipc/ContentCompositorBridgeParent.cpp:214
[task 2021-08-23T22:25:53.190Z] 22:25:53     INFO -  DEBUG: Adding blocker Waiting for ping task for phase TelemetryController: Waiting for pending ping activity
[task 2021-08-23T22:25:53.190Z] 22:25:53     INFO -  DEBUG: Completed blocker CrashService waiting for content crash ping to be sent for phase profile-before-change
[task 2021-08-23T22:25:53.216Z] 22:25:53     INFO -  DEBUG: Completed blocker Waiting for ping task for phase TelemetryController: Waiting for pending ping activity
[task 2021-08-23T22:25:53.281Z] 22:25:53     INFO -  #01: DumpCompleteHeap[C:\Users\task_1629753697\build\application\firefox\xul.dll +0x17b8f04]
[task 2021-08-23T22:25:53.281Z] 22:25:53     INFO -  #02: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xbd48e3]
[task 2021-08-23T22:25:53.281Z] 22:25:53     INFO -  #03: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xbddc1a]
[task 2021-08-23T22:25:53.282Z] 22:25:53     INFO -  #04: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xae279b]
[task 2021-08-23T22:25:53.282Z] 22:25:53     INFO -  #05: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xae05bf]
[task 2021-08-23T22:25:53.282Z] 22:25:53     INFO -  #06: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xae1424]
[task 2021-08-23T22:25:53.283Z] 22:25:53     INFO -  #07: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xae17f8]
[task 2021-08-23T22:25:53.283Z] 22:25:53     INFO -  #08: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0x1e7bd5]
[task 2021-08-23T22:25:53.283Z] 22:25:53     INFO -  #09: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0x1ef012]
[task 2021-08-23T22:25:53.284Z] 22:25:53     INFO -  #10: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xae73a3]
[task 2021-08-23T22:25:53.284Z] 22:25:53     INFO -  #11: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xa6ac80]
[task 2021-08-23T22:25:53.284Z] 22:25:53     INFO -  #12: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0xa6ab3d]
[task 2021-08-23T22:25:53.285Z] 22:25:53     INFO -  #13: Ordinal0[C:\Users\task_1629753697\build\application\firefox\xul.dll +0x1e3f67]
[task 2021-08-23T22:25:53.285Z] 22:25:53     INFO -  #14: PRP_TryLock[C:\Users\task_1629753697\build\application\firefox\nss3.dll +0x159462]
[task 2021-08-23T22:25:53.286Z] 22:25:53     INFO -  #15: PR_MD_UNLOCK[C:\Users\task_1629753697\build\application\firefox\nss3.dll +0x149e41]
[task 2021-08-23T22:25:53.286Z] 22:25:53     INFO -  #16: o_ceil[C:\windows\System32\ucrtbase.dll +0x1c4be]
[task 2021-08-23T22:25:53.286Z] 22:25:53     INFO -  #17: BaseThreadInitThunk[C:\windows\System32\KERNEL32.DLL +0x13034]
[task 2021-08-23T22:25:53.287Z] 22:25:53     INFO -  #18: DllBlocklist_Initialize[C:\Users\task_1629753697\build\application\firefox\mozglue.dll +0x8f984]
[task 2021-08-23T22:25:53.287Z] 22:25:53     INFO -  #19: RtlUserThreadStart[C:\windows\SYSTEM32\ntdll.dll +0x71461]
[task 2021-08-23T22:25:53.819Z] 22:25:53     INFO -  [Parent 8176, IPC I/O Parent] WARNING:
[task 2021-08-23T22:25:53.819Z] 22:25:53     INFO -  ###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv
[task 2021-08-23T22:25:53.820Z] 22:25:53     INFO -   [1.1]: Ignoring message[G F'XE1V-E]N:T _F
[task 2021-08-23T22:25:53.820Z] 22:25:53     INFO -  ###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv
[task 2021-08-23T22:25:53.821Z] 22:25:53     INFO -  aMiEleSdS AaGs El'o stt[ GoFX1Web- Runen]k:ndeowrBn rF apeeirid g7elCed0h i5EB5Da6Es9 El4o9sFCt2l .WdC.e
[task 2021-08-23T22:25:53.821Z] 22:25:53     INFO -  Cb043R5Ee9nd0e7r8B3r6i0d[EgC8ehCil:hdi  lf8i5d6l8,e  .M
[task 2021-08-23T22:25:53.822Z] 22:25:53     INFO -  /abiuni lTdhsr/ewado][r kCWheilr/dc h3ARe6N3c6k, oMaIiuNnt sTGh/:rgeade]ck o /WfiAapRicNl/IegNdlG ue:/Ntode Cofon atirlorelelde ctreaort e.r eclcparpye:ae2r8t9
[task 2021-08-23T22:25:53.822Z] 22:25:53     INFO -   em lanager: file /build[sP/arwaeoynert  r8k1m7a6,ne raIge/PrcChe cI/k:Oo  ufPtialser/en gt/]b ueiWclkAdRoN/sI/dNwGoo:m [r/i1pk.1erc/]ch/e:Bcrowsk eoIuts/rggCneckoor/ing dmoems/ihpsacg/Ber 'EVENT_MESSAGE' toow suneikldr.Cchnpopw:ni pe3er2l 2d57.
[task 2021-08-23T22:25:53.823Z] 22:25:53     INFO -  0c5EB5D6E9E49FC2.CC0435E9078360E8: file /buippl:ds/3w2o2r5ke
[task 2021-08-23T22:25:53.823Z] 22:25:53     INFO -  r/checkouts/gecko/ipc/glue/NodeController.cpp:289
[task 2021-08-23T22:25:53.823Z] 22:25:53     INFO -  [GFX1-]: [RPearecneitve 8 1I7P6C,  cIlPC I/O Parent] WARNING: [1.1]: Ignoring mesossaeg ew it'hE VreEaNsTo_n=MAEbSnSoArGmEa'l Sthou tudonwknonw
[task 2021-08-23T22:25:53.824Z] 22:25:53     INFO -  n peer 705EB5D6E9E49FC2.CC0435E9078360E8: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:289
[task 2021-08-23T22:25:53.824Z] 22:25:53     INFO -  [Parent 8176, IPC I/O Parent] WARNING: [1.1]: Ignoring message 'EVENT_MESSAGE' to unknown peer 705EB5D6E9E49FC2.CC0435E9078360E8: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:289
Flags: needinfo?(jgilbert)

Well, that shouldn't be possible.

Flags: needinfo?(jgilbert)

Oh, I didn't branch on GetInteger

Status: NEW → RESOLVED
Closed: 3 months ago
Resolution: --- → FIXED
Target Milestone: --- → 93 Branch

== Change summary for alert #31046 (as of Thu, 26 Aug 2021 10:01:49 GMT) ==

Improvements:

Ratio Test Platform Options Absolute values (old vs new)
13% motionmark_webgl 3DGraphics-WebGL macosx1015-64-shippable-qr e10s stylo webgl-ipc webrender 15.61 -> 17.61
10% motionmark_webgl 3DGraphics-WebGL macosx1015-64-shippable-qr e10s stylo webgl-ipc webrender 16.36 -> 17.98

For up to date results, see: https://treeherder.mozilla.org/perfherder/alerts?id=31046

You need to log in before you can comment on or make changes to this bug.