Provided by: opencl-1.2-man-doc_1.0~svn33624-5_all bug

NAME

       cl_khr_gl_event - Create an OpenCL event object from a GL sync object.

       cl_khr_gl_event

DESCRIPTION

       This extension enables the function clCreateEventFromGLsyncKHR(3clc).

       This extension allows creating OpenCL event objects linked to OpenGL fence sync objects,
       potentially improving efficiency of sharing images and buffers between the two APIs. The
       companion GL_ARB_cl_event OpenGL extension provides the complementary functionality of
       creating an OpenGL sync object from an OpenCL event object.

       In addition, this extension modifies the behavior of clEnqueueAcquireGLObjects(3clc) and
       clEnqueueReleaseGLObjects(3clc) to implicitly guarantee synchronization with an OpenGL
       context bound in the same thread as the OpenCL context.

       If this extension is supported by an implementation, the string cl_khr_gl_event will be
       present in the CL_PLATFORM_EXTENSIONS or CL_DEVICE_EXTENSIONS string described in the
       table of param_name values for clGetDeviceInfo(3clc).

NOTES

       Event objects can also be used to reflect the status of an OpenGL sync object. The sync
       object in turn refers to a fence command executing in an OpenGL command stream. This
       provides another method of coordinating sharing of buffers and images between OpenGL and
       OpenCL (see section 9.7.6.1).

       If the cl_khr_gl_event extension is supported, then the OpenCL implementation will ensure
       that any such pending OpenGL operations are complete for an OpenGL context bound to the
       same thread as the OpenCL context. This is referred to as implicit synchronization.

       If the cl_khr_gl_event extension is supported and the OpenGL context in question supports
       fence sync objects, completion of OpenGL commands may also be determined by placing a GL
       fence command after those commands using glFenceSync, creating an event from the resulting
       GL sync object using clCreateEventFromGLsyncKHR(3clc), and determining completion of that
       event object via clEnqueueAcquireGLObjects(3clc). This method may be considerably more
       efficient than calling glFinish, and is referred to as explicit synchronization. Explicit
       synchronization is most useful when an OpenGL context bound to another thread is accessing
       the memory objects.

       If the cl_khr_gl_event extension is not supported, completion of OpenGL commands may be
       determined by issuing and waiting for completion of a glFinish command on all OpenGL
       contexts with pending references to these objects. Some implementations may offer other
       efficient synchronization methods. If such methods exist they will be described in
       platform-specific documentation.

       Note that no synchronization method other than glFinish is portable between all OpenGL
       implementations and all OpenCL implementations. While this is the only way to ensure
       completion that is portable to all platforms, glFinish is an expensive operation and its
       use should be avoided if the cl_khr_gl_event extension is supported on a platform.

SPECIFICATION

       OpenCL Specification[1]

SEE ALSO

       EXTENSION(3clc), clCreateEventFromGLsyncKHR(3clc)

AUTHORS

       The Khronos Group

COPYRIGHT

       Copyright © 2007-2011 The Khronos Group Inc.
       Permission is hereby granted, free of charge, to any person obtaining a copy of this
       software and/or associated documentation files (the "Materials"), to deal in the Materials
       without restriction, including without limitation the rights to use, copy, modify, merge,
       publish, distribute, sublicense, and/or sell copies of the Materials, and to permit
       persons to whom the Materials are furnished to do so, subject to the condition that this
       copyright notice and permission notice shall be included in all copies or substantial
       portions of the Materials.

NOTES

        1. OpenCL Specification
           page 61, section 9.8 - Creating CL event objets