Name

    ANGLE_metal_commands_scheduled_sync

Name Strings

    EGL_ANGLE_metal_commands_scheduled_sync

Contributors

    Sunny Sachanandani, Google

Contacts

    Sunny Sachanandani, Google (sunnyps `at` google.com)

Status

    Draft

Version

    Version 1, 2025-10-09

Number

    EGL Extensions XXX

Extension Type

    EGL display extension

Dependencies

    This extension is written against the wording of the EGL 1.5
    Specification.

Overview

    This extension enables the creation of EGL fence sync objects that are
    signaled when any pending Metal commands are scheduled on the GPU. The EGL
    fence sync objects have nearly identical semantics to those sync objects
    defined by the EGL 1.5 Specification, except where noted.

    Creating the sync object flushes any pending work. These sync objects are
    thread-safe and can be waited on from any thread with eglClientWaitSync
    without a current context. Note that eglWaitSync is a no-op for these
    sync objects since they only track CPU side scheduling of GPU commands. In
    particular, specifying EGL_SYNC_FLUSH_COMMANDS_BIT has no effect either
    since pending work is always flushed on creation of the sync object.

New Types

    None.

New Procedures and Functions

    None.

New Tokens

    Accepted by the <type> parameter of eglCreateSync, and returned
    in <value> when eglGetSyncAttrib is called with <attribute>
    EGL_SYNC_TYPE:

    EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE             0x34E0

Additions to the EGL Specification

    Add the following after the first paragraph of Section 3.8.1.1 (Creating
    Fence Sync Objects),

    "If <type> is EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE, an EGL commands
    scheduled sync object is created. No attributes may be specified in this
    case.

    The default values for the EGL commands scheduled sync object attributes
    are as follows:

      Attribute Name                     Initial Attribute Value(s)
      --------------                     --------------------------
      EGL_SYNC_TYPE                      EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE
      EGL_SYNC_STATUS                    EGL_UNSIGNALED
      EGL_SYNC_CONDITION                 EGL_SYNC_PRIOR_COMMANDS_COMPLETE

    Modify the list of eglCreateSync errors in Section 3.8.1.2 (Creating OpenCL
    Event Sync Objects)

    "Errors
     ------
    ..."

    Modify the second paragraph of Section 3.8.1.1 (Creating Fence Sync Objects),

    "When a fence sync object is created or when an EGL commands scheduled sync
    object is created, eglCreateSync also inserts a fence command into the
    command stream of the bound client API’s current context (i.e., the
    context returned by eglGetCurrentContext), and associates it with the newly
    created sync object."

Issues

    None.

Revision History

    Version 1, 2025-10-09
      - Initial draft
