15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_cl_event
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_cl_event
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jon Leech, Khronos
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContact
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Jon Leech (jon 'at' alumni.caltech.edu)
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciNotice
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
205bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciSpecification Update Policy
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
255bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
265bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
275bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
285bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
295bd8deadSopenharmony_ci    described in more detail at
305bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciStatus
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    Complete. Approved by the ARB on June 9, 2010.
355bd8deadSopenharmony_ci    Approved by the Khronos Board of Promoters on July 23, 2010.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ciVersion
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    Version 5, May 7, 2013
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ciNumber
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    ARB Extension #103
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciDependencies
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    OpenGL 3.2, or an earlier OpenGL version supporting the GL_ARB_sync
485bd8deadSopenharmony_ci    extension, is required.
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci    An OpenCL implementation supporting sharing event objects
515bd8deadSopenharmony_ci    with OpenGL is required.
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ciOverview
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    This extension allows creating OpenGL sync objects linked to OpenCL
565bd8deadSopenharmony_ci    event objects, potentially improving efficiency of sharing images
575bd8deadSopenharmony_ci    and buffers between the two APIs. The companion cl_khr_gl_event
585bd8deadSopenharmony_ci    OpenCL extension provides the complementary functionality of
595bd8deadSopenharmony_ci    creating an OpenCL event object from an OpenGL fence sync object.
605bd8deadSopenharmony_ci    That extension is located in the OpenCL API Registry.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ciIP Status
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    No known IP claims.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ciNew Procedures and Functions
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    sync CreateSyncFromCLeventARB(cl_context context, cl_event event,
695bd8deadSopenharmony_ci        bitfield flags)
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ciNew Tokens
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    Returned in <values> for GetSynciv <pname> OBJECT_TYPE:
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci        SYNC_CL_EVENT_ARB               0x8240
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    Returned in <values> for GetSynciv <pname> SYNC_CONDITION:
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci        SYNC_CL_EVENT_COMPLETE_ARB      0x8241
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 3.1 Specification (Special Functions)
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci    Add following the description of fence sync objects in section 5.2
855bd8deadSopenharmony_ci    (e.g. following the paragraph beginning "If FenceSync fails to
865bd8deadSopenharmony_ci    create a sync object..."):
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci   "Sync Objects Linked to OpenCL Events
895bd8deadSopenharmony_ci    ------------------------------------
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    A sync object may also be created which reflects the status of an
925bd8deadSopenharmony_ci    OpenCL event object. This provides another method of coordinating
935bd8deadSopenharmony_ci    sharing of buffers and images between OpenGL and OpenCL (see Chapter
945bd8deadSopenharmony_ci    9 of the OpenCL 1.0 Specification). Waiting on such a sync object is
955bd8deadSopenharmony_ci    equivalent to waiting for completion of the linked CL event object.
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    The command
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    sync CreateSyncFromCLeventARB(cl_context context, cl_event event,
1005bd8deadSopenharmony_ci        bitfield flags)
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    creates a linked sync object. <context> and <event> must be handles
1035bd8deadSopenharmony_ci    to a valid OpenCL context and a valid event in that context,
1045bd8deadSopenharmony_ci    respectively. <context> must support sharing with GL, and must have
1055bd8deadSopenharmony_ci    been created with respect to the current GL context, or to a share
1065bd8deadSopenharmony_ci    group including the current GL context.
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ci    <flags> must be 0[fn1].
1095bd8deadSopenharmony_ci       [fn1: <flags> is a placeholder for anticipated future extensions
1105bd8deadSopenharmony_ci        of sync object capabilities.]
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    The status of such a sync object depends on <event>. When the status
1135bd8deadSopenharmony_ci    of <event> is CL_QUEUED, CL_SUBMITTED, or CL_RUNNING, the status of
1145bd8deadSopenharmony_ci    the linked sync object will be UNSIGNALED. When the status of
1155bd8deadSopenharmony_ci    <event> changes to CL_COMPLETE, the status of the linked sync object
1165bd8deadSopenharmony_ci    will become SIGNALED.
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    The initial property values for a sync object created by
1195bd8deadSopenharmony_ci    CreateSyncFromCLeventARB are shown in table 5.clprops. Note that
1205bd8deadSopenharmony_ci    <context> and <event> are not queriable properties of a sync object.
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci        Property Name   Property Value
1235bd8deadSopenharmony_ci        -------------   --------------
1245bd8deadSopenharmony_ci        OBJECT_TYPE     SYNC_CL_EVENT_ARB
1255bd8deadSopenharmony_ci        SYNC_CONDITION  SYNC_CL_EVENT_COMPLETE_ARB
1265bd8deadSopenharmony_ci        SYNC_STATUS     Depends on status of <event>
1275bd8deadSopenharmony_ci        SYNC_FLAGS      <flags>
1285bd8deadSopenharmony_ci        ----------------------------------------------
1295bd8deadSopenharmony_ci        Table 5.clprops: Initial properties of a sync
1305bd8deadSopenharmony_ci        object created with CreateSyncFromCLeventARB.
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    Creating a linked sync object places a reference on the linked
1335bd8deadSopenharmony_ci    OpenCL event object. When the sync object is deleted, the reference
1345bd8deadSopenharmony_ci    will be removed from the event object.
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    If CreateSyncFromCLeventARB fails to create a sync object, zero will
1375bd8deadSopenharmony_ci    be returned and a GL error will be generated as described. An
1385bd8deadSopenharmony_ci    INVALID_VALUE error is generated if <context> is not a valid OpenCL
1395bd8deadSopenharmony_ci    context created with respect to the current GL context or the share
1405bd8deadSopenharmony_ci    group containing the current GL context, if <event> is not a valid
1415bd8deadSopenharmony_ci    OpenCL event handle in <context>, or if <flags> is not zero. An
1425bd8deadSopenharmony_ci    INVALID_OPERATION error is generated if <event> is a valid OpenCL
1435bd8deadSopenharmony_ci    event handle but was not returned by a call to
1445bd8deadSopenharmony_ci    clEnqueueReleaseGLObjects.
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci    However, implementations are not required to validate <context> or
1475bd8deadSopenharmony_ci    <event>, and passing an invalid <context> or <event> handle may
1485bd8deadSopenharmony_ci    result in undefined behavior up to and including program
1495bd8deadSopenharmony_ci    termination."
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    Replace the first paragraph describing DeleteSync with:
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci   "A sync object can be deleted by passing its name to the command
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci        void DeleteSync(sync sync)
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    If the fence command or OpenCL event object corresponding to the
1585bd8deadSopenharmony_ci    specified sync object has completed, or if no ClientWaitSync or
1595bd8deadSopenharmony_ci    WaitSync commands are blocking on <sync>, the object is deleted
1605bd8deadSopenharmony_ci    immediately. Otherwise, <sync> is flagged for deletion and will be
1615bd8deadSopenharmony_ci    deleted when it is no longer associated with any fence command or
1625bd8deadSopenharmony_ci    non-completed OpenCL event object, and is no longer blocking any
1635bd8deadSopenharmony_ci    ClientWaitSync or WaitSync command. In either case, after returning
1645bd8deadSopenharmony_ci    from DeleteSync the <sync> name is invalid and can no longer be used
1655bd8deadSopenharmony_ci    to refer to the sync object."
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    Replace the first paragraph of section 5.2.2 "Signaling" with
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci   "A sync object can be in the signaled state only once the
1705bd8deadSopenharmony_ci    corresponding fence command or OpenCL event object has completed and
1715bd8deadSopenharmony_ci    signaled the sync object."
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ci    Replace the list of sync object state in the last paragraph of
1745bd8deadSopenharmony_ci    section 5.2 with:
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci   "State must be maintained to indicate which sync object names are
1775bd8deadSopenharmony_ci    currently in use. The state require for each sync object in use is
1785bd8deadSopenharmony_ci    an integer for the specific type, an integer for the condition, an
1795bd8deadSopenharmony_ci    integer for the flags, and a bit indicating whether the object is
1805bd8deadSopenharmony_ci    signaled or unsignaled. Additionally, sync objects linked to OpenCL
1815bd8deadSopenharmony_ci    events require implementation-specific, non-queriable internal state
1825bd8deadSopenharmony_ci    identifying the OpenCL context and event. The initial values of sync
1835bd8deadSopenharmony_ci    object state are defined as specified by FenceSync and
1845bd8deadSopenharmony_ci    CreateSyncFromCLeventARB."
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 3.1 Specification (State and State Requests)
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci    Replace the third paragraph of section 6.1.7 "Sync Object Queries"
1895bd8deadSopenharmony_ci    with:
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci   "If <pname> is OBJECT_TYPE, a single value representing the specific
1925bd8deadSopenharmony_ci    type of the sync object is placed in <values>. The only types
1935bd8deadSopenharmony_ci    supported are SYNC_FENCE and SYNC_CL_EVENT_ARB."
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ciAdditions to Appendix D (Shared Objects and Multiple Contexts)
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    Replace section D.2.1 "Sync Object Deletion Behavior" with:
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci   "Deleting sync objects is similar to other shared object types in
2005bd8deadSopenharmony_ci    that the name of the deleted object immediately becomes invalid but
2015bd8deadSopenharmony_ci    the underlying object will not be deleted until it is no longer in
2025bd8deadSopenharmony_ci    use. Unlike other shared object types, a sync object is determined
2035bd8deadSopenharmony_ci    to be in use if there is a corresponding fence command or linked
2045bd8deadSopenharmony_ci    OpenCL event which has not yet completed (signaling the sync
2055bd8deadSopenharmony_ci    object), or if there are any GL clients and/or servers blocked on
2065bd8deadSopenharmony_ci    the sync object as a result of ClientWaitSync or WaitSync commands.
2075bd8deadSopenharmony_ci    Once any corresponding fence commands or linked OpenCL events have
2085bd8deadSopenharmony_ci    completed, a sync object has been signaled, and all clients and/or
2095bd8deadSopenharmony_ci    servers blocked on that sync object have been unblocked, the object
2105bd8deadSopenharmony_ci    may then be deleted."
2115bd8deadSopenharmony_ci
2125bd8deadSopenharmony_ciAdditions to the AGL/EGL/GLX/WGL Specifications:
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    None
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ciGLX Protocol
2175bd8deadSopenharmony_ci
2185bd8deadSopenharmony_ci    <TBD>
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ciErrors
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci    INVALID_VALUE is generated if the <context> parameter of
2235bd8deadSopenharmony_ci    CreateSyncFromCLeventARB is not a valid OpenCL context created with
2245bd8deadSopenharmony_ci    respect to the current GL context or the share group containing the
2255bd8deadSopenharmony_ci    current GL context.
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci    INVALID_VALUE is generated if <event> is not a valid OpenCL event
2285bd8deadSopenharmony_ci    handle in <context>.
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    INVALID_VALUE is generated if <flags> is not zero.
2315bd8deadSopenharmony_ci
2325bd8deadSopenharmony_ci    INVALID_OPERATION is generated if <event> is a valid OpenCL event
2335bd8deadSopenharmony_ci    handle in <context>, but was not generated by a call to
2345bd8deadSopenharmony_ci    clEnqueueReleaseGLObjects.
2355bd8deadSopenharmony_ci
2365bd8deadSopenharmony_ciNew State
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    Change the "Type" field for OBJECT_TYPE in table 6.X "Sync Objects"
2395bd8deadSopenharmony_ci    from "Z_1" to "Z_2". Change the "Initial Value" fields for
2405bd8deadSopenharmony_ci    OBJECT_TYPE and SYNC_STATUS to "(see sec. 5.2)".
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ciNew Implementation Dependent State
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    None
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ciSample Code
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ci    None
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ciIssues
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci    1) What should the command to create a sync object linked to an
2535bd8deadSopenharmony_ci       OpenCL event look like?
2545bd8deadSopenharmony_ci
2555bd8deadSopenharmony_ci        DISCUSSION: In earlier versions of the ARB_sync extension, a
2565bd8deadSopenharmony_ci        generic constructor taking an attribute list was proposed. This
2575bd8deadSopenharmony_ci        could be used to pass the necessary CL event-specific parameters
2585bd8deadSopenharmony_ci        (CL context and event handle), or a CL event-specific command
2595bd8deadSopenharmony_ci        taking explicit parameters could be used.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci        The explicit parameter approach is more typesafe and requires
2625bd8deadSopenharmony_ci        marginally less coding to use, but introduces header file
2635bd8deadSopenharmony_ci        dependency concerns (see issue 2 below). The generic approach
2645bd8deadSopenharmony_ci        eliminates header file concerns and provides the groundwork for
2655bd8deadSopenharmony_ci        new types of GL sync objects in the future.
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci        RESOLVED: use explicit parameters.
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci    2) How will the OpenCL header dependencies interact with
2705bd8deadSopenharmony_ci       specifying the API for this extension?
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        DISCUSSION: GL extensions are specified in the Khronos-supplied
2735bd8deadSopenharmony_ci        "glext.h" and "gl3ext.h" headers. Normally these headers are
2745bd8deadSopenharmony_ci        self-contained, requiring only that <GL/gl.h> or <GL3/gl3.h> be
2755bd8deadSopenharmony_ci        #included first to define necessary GL types. However,
2765bd8deadSopenharmony_ci        specifying an event interface using the CL cl_context and
2775bd8deadSopenharmony_ci        cl_event data types introduces a dependency on cl.h. Even worse,
2785bd8deadSopenharmony_ci        there may be a dependency loop between CL and GL headers in
2795bd8deadSopenharmony_ci        order to define both the cl_khr_gl_event and the GL_ARB_cl_event
2805bd8deadSopenharmony_ci        extensions.
2815bd8deadSopenharmony_ci
2825bd8deadSopenharmony_ci        RESOLVED: glext.h and gl3.h will use the same incomplete struct
2835bd8deadSopenharmony_ci        pointer types as cl.h does, based on these definitions from the
2845bd8deadSopenharmony_ci        official Khronos headers:
2855bd8deadSopenharmony_ci
2865bd8deadSopenharmony_ci            typedef struct _cl_context *cl_context;
2875bd8deadSopenharmony_ci            typedef struct _cl_event *cl_event;
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci        If this turns out to be a problem on implementations that use
2905bd8deadSopenharmony_ci        other declarations of these types we will reconsider but there's
2915bd8deadSopenharmony_ci        no obvious reason this won't work.
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci    3) Should all possible statuses of the CL event be reflected through
2945bd8deadSopenharmony_ci       to the state of the sync object?
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci        DISCUSSION: CL event objects have four execution statuses:
2975bd8deadSopenharmony_ci        CL_QUEUED, CL_SUBMITTED, CL_RUNNING, and CL_COMPLETE. GL sync
2985bd8deadSopenharmony_ci        objects have only two statuses: UNSIGNALED and SIGNALED. The
2995bd8deadSopenharmony_ci        cl_khr_gl_event extension maps UNSIGNALED into CL_SUBMITTED, and
3005bd8deadSopenharmony_ci        SIGNALED into CL_COMPLETE.
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci        RESOLVED: Invert the cl_khr_gl_event mapping. CL_QUEUED,
3035bd8deadSopenharmony_ci        CL_SUBMITTED, and CL_RUNNING all map into UNSIGNALED.
3045bd8deadSopenharmony_ci        CL_COMPLETE maps into SIGNALED.
3055bd8deadSopenharmony_ci
3065bd8deadSopenharmony_ci    4) What is the sync type of a sync object linked to a CL event?
3075bd8deadSopenharmony_ci
3085bd8deadSopenharmony_ci        DISCUSSION: The GL sync interface anticipates the creation of
3095bd8deadSopenharmony_ci        many types of sync objects although the only currently defined
3105bd8deadSopenharmony_ci        type is the fence sync. From a functional perspective, a sync
3115bd8deadSopenharmony_ci        created from a CL event is equivalent to a fence sync: it starts
3125bd8deadSopenharmony_ci        in the UNSIGNALED state and can only transition once, to the
3135bd8deadSopenharmony_ci        SIGNALED state. But it may be useful to distinguish between the
3145bd8deadSopenharmony_ci        two types of syncs in the query API.
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci        RESOLVED: The OBJECT_TYPE of a GL sync object created from a CL
3175bd8deadSopenharmony_ci        event is SYNC_CL_EVENT_ARB.
3185bd8deadSopenharmony_ci
3195bd8deadSopenharmony_ci    5) Are there any restrictions on the use of a sync object linked to
3205bd8deadSopenharmony_ci       a CL event object?
3215bd8deadSopenharmony_ci
3225bd8deadSopenharmony_ci        RESOLVED: No restrictions. The implementation may make different
3235bd8deadSopenharmony_ci        choices depending on the sync object type, however. For example,
3245bd8deadSopenharmony_ci        WaitSync might be able to wait in the GPU for a fence sync
3255bd8deadSopenharmony_ci        object and be forced to wait in the CPU for a sync object linked
3265bd8deadSopenharmony_ci        to a CL event, which may affect performance. But in terms of the
3275bd8deadSopenharmony_ci        public API, there are no restrictions compared to how a fence
3285bd8deadSopenharmony_ci        sync object may be used.
3295bd8deadSopenharmony_ci
3305bd8deadSopenharmony_ci    6) How are sync object lifetimes defined?
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci        RESOLVED: A sync object linked to a CL event object places a
3335bd8deadSopenharmony_ci        single reference on the event. Deleting the sync object removes
3345bd8deadSopenharmony_ci        that reference.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci        DeleteSync has a dependency on the completion of the linked
3375bd8deadSopenharmony_ci        event object, and will not delete the sync object while the
3385bd8deadSopenharmony_ci        event object has not yet completed. This is equivalent to
3395bd8deadSopenharmony_ci        behavior of deleting a fence sync object, where deletion of the
3405bd8deadSopenharmony_ci        object will be deferred until the underlying fence command has
3415bd8deadSopenharmony_ci        completed.
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci    7) Should all OpenCL events be supported?
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci        RESOLVED: No. Only events returned by clEnqueueReleaseGLObjects,
3465bd8deadSopenharmony_ci        since that's the only known use case for this extension and
3475bd8deadSopenharmony_ci        since this mirrors a recent restriction in the GL sync -> CL
3485bd8deadSopenharmony_ci        event OpenCL extension which only allows events generated from
3495bd8deadSopenharmony_ci        syncs to be used with clEnqueueAcquireGLObjects.
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ciRevision History
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    Version 5, 2013/05/07 (Jon Leech) - some resolved issues were
3545bd8deadSopenharmony_ci    mistakenly still labelled as proposed. Fix labelling.
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci    Version 4, 2010/07/24 (Jon Leech) - resolve issue 2.
3575bd8deadSopenharmony_ci
3585bd8deadSopenharmony_ci    Version 3, 2010/07/17 (Jon Leech) - fix misordering of command
3595bd8deadSopenharmony_ci    parameters in New Procedures section.
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci    Version 2, 2010/03/17 (Jon Leech) - restrict the extension to only
3625bd8deadSopenharmony_ci    support OpenCL events generated by clEnqueueReleaseGLObjects.
3635bd8deadSopenharmony_ci    Cleanup Errors section.
3645bd8deadSopenharmony_ci
3655bd8deadSopenharmony_ci    Version 1, 2009/09/15 (Jon Leech) - initial version.
366