mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 05:57:51 +00:00
Metal: Expose function to wait for commands to be scheduled.
This is to allow proper synchronization with other devices and APIs on macOS. There is a global graphics queue so we usually don't need synchronization but on Metal, commands are inserted on this queue only when the command buffer is scheduled. Metal's schedule and completed handlers can be fired on a different thread so this CL also makes the code there data-race free. BUG=chromium:938895 BUG=dawn:112 Change-Id: Id45a66fb4d13216b9d01f75e0766732f6e09ddf0 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5700 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
e105f962cf
commit
07950e80fe
@@ -37,6 +37,13 @@ namespace dawn_native { namespace metal {
|
||||
const DawnTextureDescriptor* descriptor,
|
||||
IOSurfaceRef ioSurface,
|
||||
uint32_t plane);
|
||||
|
||||
// When making Metal interop with other APIs, we need to be careful that QueueSubmit doesn't
|
||||
// mean that the operations will be visible to other APIs/Metal devices right away. macOS
|
||||
// does have a global queue of graphics operations, but the command buffers are inserted there
|
||||
// when they are "scheduled". Submitting other operations before the command buffer is
|
||||
// scheduled could lead to races in who gets scheduled first and incorrect rendering.
|
||||
DAWN_NATIVE_EXPORT void WaitForCommandsToBeScheduled(DawnDevice device);
|
||||
}} // namespace dawn_native::metal
|
||||
|
||||
#ifdef __OBJC__
|
||||
|
||||
Reference in New Issue
Block a user