Bug 161026

Summary: [macOS] CGL virtual screen changes do not cause us to lose the WebGL context
Product: WebKit Reporter: Myles C. Maxfield <mmaxfield>
Component: WebGLAssignee: Nobody <webkit-unassigned>
Status: RESOLVED CONFIGURATION CHANGED    
Severity: Normal CC: dino, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=161017

Description Myles C. Maxfield 2016-08-19 20:12:26 PDT
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
Comment 1 Radar WebKit Bug Importer 2016-08-23 12:05:12 PDT
<rdar://problem/27972612>
Comment 2 Myles C. Maxfield 2016-08-23 13:23:58 PDT
(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.
Comment 3 Kimmo Kinnunen 2024-01-17 01:36:33 PST
mostly metal is used
cgl supports the context update signal to a degree