In angleproject:7809 the default behavior of Flush() was changed to become a "no wait" instead of "wait for scheduled". This changes the semantics of Flush() on ANGLE compared to Apple OpenGL, meaning that Flush() can no longer to signal to the GPU the dependency of operations affecting IOSurfaces when working with multiple APIs, such as CoreGraphics. Instead of reverting the behavior change to Flush(), this change provides a way to ensure that all queued operations currently in the pipeline have had their resources readied and are waiting for the GPU to process them. Currently, Finish() is required to ensure these dependencies are met where Schedule() would suffice.
<rdar://problem/107163821>
Pull request: https://github.com/WebKit/WebKit/pull/11899
As mentioned on the pull request, https://github.com/WebKit/WebKit/pull/11899 , unfortunately our teams collided on this needed feature. It's already been implemented in ANGLE as the EGL extension EGL_ANGLE_wait_until_work_scheduled in https://bugs.chromium.org/p/angleproject/issues/detail?id=7890 . I think WebKit's copy of ANGLE has already rolled forward to pick up this extension. Does it suit your needs?
Yes, I've project my work on top of EGL_ANGLE_wait_until_work_scheduled. I'll close this bug and PR.