Bug 254386

Summary: [ANGLE] Implement GL_ANGLE_metal_schedule extension
Product: WebKit Reporter: Dan Glastonbury <djg>
Component: ANGLEAssignee: Dan Glastonbury <djg>
Status: RESOLVED WONTFIX    
Severity: Normal CC: dino, kbr, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: Unspecified   
OS: Unspecified   

Description Dan Glastonbury 2023-03-23 18:13:47 PDT
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.
Comment 1 Radar WebKit Bug Importer 2023-03-23 18:14:19 PDT
<rdar://problem/107163821>
Comment 2 Dan Glastonbury 2023-03-23 18:20:59 PDT
Pull request: https://github.com/WebKit/WebKit/pull/11899
Comment 3 Kenneth Russell 2023-03-29 17:01:52 PDT
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?
Comment 4 Dan Glastonbury 2023-03-29 17:03:38 PDT
Yes, I've project my work on top of EGL_ANGLE_wait_until_work_scheduled. I'll close this bug and PR.