Hash :
774bca93
Author :
Date :
2025-10-08T18:41:13
[metal] Add commands scheduled sync object We need a thread-safe way to wait for ANGLE Metal command buffers to be scheduled for IOSurface synchronization with DrDC + Graphite on Mac. The existing eglWaitUntilWorkScheduledANGLE API isn't thread-safe as it reaches into ContextMtl innards to flush the command buffer. This CL adds the EGL_ANGLE_metal_commands_scheduled_sync extension which introduces a EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE sync object type. This sync object is signaled when pending Metal commands are scheduled to run on the GPU (MTLCommandBufferStatusScheduled). These sync objects are thread-safe - eglClientWaitSync() can be called on any thread even without a current context which is needed for DrDC + Graphite on Mac. Bug: chromium:444702048 Change-Id: Ia13b352385a6fefaa026526ef74f6e596a6a6964 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7027996 Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Quyen Le <lehoangquyen@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
{
"doc/ExtensionSupport.md":
"6a19f6bfb8a9b60fda0811822cc68982",
"scripts/egl_angle_ext.xml":
"da48b515b2cfc3350dc57a37e305e61a",
"scripts/extension_data/intel_630_linux.json":
"3b86832de6a7095f4617e273cba6d45e",
"scripts/extension_data/intel_630_win10.json":
"fc9c4e87009c66ffb9e0f2d26de055d6",
"scripts/extension_data/nvidia_1660_linux.json":
"9ca2a4e2b9bf326bd4d9d4110a7f23c2",
"scripts/extension_data/nvidia_1660_win10.json":
"6044d5441d881b3653f6424bf04a4276",
"scripts/extension_data/pixel_4_android_11.json":
"9f2d767c010f8d49b6bd9d6062ccbeac",
"scripts/extension_data/pixel_6_android_13.json":
"e72dfc607e0dbcac4037cc4279793242",
"scripts/extension_data/swiftshader_win10.json":
"1a70a2074355ac6001972c5b3a3292dd",
"scripts/extension_data/swiftshader_win10_gles1.json":
"bea8e2106d62e1ea0e8938f150865a37",
"scripts/gl_angle_ext.xml":
"da4ecccdd77635f1b0e9d4664f856706",
"scripts/registry_xml.py":
"4824b51dafdbdbf6eb109a4d0c5b86b8",
"src/libANGLE/gen_extensions.py":
"dc4727460d1ece9f98a2ae47bf15ddb3",
"src/libANGLE/gles_extensions_autogen.cpp":
"1fc44732ce9af3e33ebbf508748494c8",
"src/libANGLE/gles_extensions_autogen.h":
"256c663cc00d5ef2ad89536f263ef6ab",
"third_party/EGL-Registry/src/api/egl.xml":
"2056d54ea07156f1988ca1366bdee21a",
"third_party/OpenCL-Docs/src/xml/cl.xml":
"3c93f136de5049f4d9eca8240df1a025",
"third_party/OpenGL-Registry/src/xml/gl.xml":
"d7ed846c15f72e084763c22d70adf1e2",
"third_party/OpenGL-Registry/src/xml/glx.xml":
"6e1745b04a1ac673c60aaa5dd819f3c4",
"third_party/OpenGL-Registry/src/xml/wgl.xml":
"eae784bf4d1b983a42af5671b140b7c4"
}