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