Dear WebGL community,
A change is forthcoming in the Chrome browser which only affects dual-GPU MacBook Pros right now, but may affect dual-GPU Windows laptops in the near future.
Chrome used to treat WebGL's "default" powerPreference context creation option as "high-performance". In Chrome 80, in order to save battery life and improve the user experience on these dual-GPU machines, the default has been changed to "low-power". Note that Safari on macOS has had this behavior for some time now.
Applications with computationally expensive shaders, complex geometry, or which approach peak GPU utilization may want to explicitly specify the 'high-performance' powerPreference during WebGL context creation. Note that this carries a user experience cost, as switching between the integrated and discrete GPUs causes the system to stutter for ~1 second.
Note also that Chrome will deliver context lost notifications more often upon GPU switches, when it determines that OpenGL resources couldn't be automatically migrated between GPUs. (Multisampled renderbuffers, in particular, are subject to this limitation - and this will likely apply to all operating systems.) Please use the WEBGL_lose_context extension
to ensure that your applications are robust to context loss and restored events; see Handling Context Loss
on the WebGL wiki.
Chrome Canary already contains these changes; please test with it and report any bugs on Chromium's issue tracker
. Please feel free to directly email me the IDs of any bugs you file to make sure they aren't lost.