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 43 44
{
"scripts/egl_angle_ext.xml":
"da48b515b2cfc3350dc57a37e305e61a",
"scripts/generate_loader.py":
"93c78a8d11323fa311fed5118fbcf083",
"scripts/gl_angle_ext.xml":
"da4ecccdd77635f1b0e9d4664f856706",
"scripts/registry_xml.py":
"4824b51dafdbdbf6eb109a4d0c5b86b8",
"src/libEGL/egl_loader_autogen.cpp":
"2aca2a57c51fc2b1c7e1da0a7ccf6107",
"src/libEGL/egl_loader_autogen.h":
"bde0152d45cd681ab4e416a362a391d8",
"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",
"util/capture/trace_egl_loader_autogen.cpp":
"a05c41eb1cc6e24c006cb3f462b694cf",
"util/capture/trace_egl_loader_autogen.h":
"9adc81af729078b16b36647f02401342",
"util/capture/trace_gles_loader_autogen.cpp":
"16cb9f0cdf7ee7dbf4d12085f4a2ae1e",
"util/capture/trace_gles_loader_autogen.h":
"1a94e35a444206870daafa18412debe3",
"util/egl_loader_autogen.cpp":
"ae6abfc6c2c0a997ad59258dfc0339ce",
"util/egl_loader_autogen.h":
"ea5f73048616a6fc80eaa7e93ef5f0ce",
"util/gles_loader_autogen.cpp":
"adef140eeb58bc8d6bde25700d3c23ca",
"util/gles_loader_autogen.h":
"29cd08fade2c117cd6bfb31036054e71",
"util/windows/wgl_loader_autogen.cpp":
"373b062587eab8a163121255f54597dc",
"util/windows/wgl_loader_autogen.h":
"0551e9c28a8d3902bcd5d6e5b1ed3c6f"
}