According to [1], "A change in the virtual screen indicates a renderer change, a change in renderer capability, or both." "When the renderer changes, the limits and extensions available to OpenGL may also change. Your application should retest the capabilities of the renderer and use these to choose its rendering algorithms appropriately." This can be achieved by listening for NSWindowDidChangeScreenNotification. We currently do this and plumb it through to the web process, eventually ending up in WebPage::windowScreenDidChange() and Document::windowScreenDidChange(). We should make this function cause WebGL contexts to be lost. This will cause web content to re-investigate the current renderer capabilities. [1] https://developer.apple.com/library/prerelease/content/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_contexts/opengl_contexts.html#//apple_ref/doc/uid/TP40001987-CH216-SW12
<rdar://problem/27972612>
(In reply to comment #0) > ... We should make this function cause WebGL > contexts to be lost. This only needs to happen if the virtual screen of the context changes. We don't need to do this every time the user drags a window to an external monitor.
mostly metal is used cgl supports the context update signal to a degree