On Wed May 20 15:04:51 2026 +0000, Brendan Shanks wrote:
One thing that comes to mind is that OpenGL/Vulkan content calls `macdrv_client_surface_present()` on presentation, how does that work if rendering and display are happening in different processes? Also, is there an application that can be used to test this? `macdrv_client_surface_present()` only handles making the right client_surface view visible. It doesn’t do the actual buffer transfer/presentation itself.
For the cross-process Metal/Vulkan path, presentation happens via the exported CAMetalLayer/CALayerHost pair. A later `macdrv_client_surface_present()` from the rendering process doesn’t need to do anything special and just becomes a no-op. There are a bunch of intricacies with child windows, which would need extra consideration still. This simple approach here works well for top-level windows at least...
Also, is there an application that can be used to test this?
Either this MR with DXVK/MVK with Battle.net, or with the two attached patches DXMT can also be tested: [dxmt-ExtEscape.patch](/uploads/34ac670abe29df3a5e8e710f1ee8f244/dxmt-ExtEscape.patch)[wine-ExtEscape.patch](/uploads/781960199979e3fa81ec479addbaba6f/wine-ExtEscape.patch) Current steam requires child window support, so con't be tested with this MR as it is. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10935#note_140822