https://bugs.winehq.org/show_bug.cgi?id=52354
--- Comment #31 from Gcenx gcenx83@gmail.com --- (In reply to Charles Davis from comment #30)
Possibly.
Another possibility is simply removing the layer from the view at wglMakeCurrent() time. Though I don't know how well removing the hosted layer once set would work. And if the process draws with both GDI and GL...
The other possibility--which we will need for cross-process GL--is setting up a layer as the default GL drawable. While there is a CAOpenGLLayer, it has several restrictions that make it unsuitable for our use: in particular, it does all GL context and drawable management itself, so you can only draw in its -drawInCGLContext:pixelFormat:forLayerTime:displayTime: method.
We'll have to implement our own OpenGLLayer, using IOSurfaces as the drawables, with hooks in glDrawBuffer[s]() to redirect handling of the built-in framebuffer to our IOSurfaces. This will be very complicated, and I'm not looking forward to this. Ah, who am I kidding? I'm totally looking forward to this. I like a good challenge.
While that sounds like a much better solution how long would this take you?
If this will take a lot of time and effort it would make sense for the short term to lock thenew behavior behind version check so we’ll at least have something functional for everyone without needing to do reverts for 10.13 and below.