
        <para>
          General information about GL sharing follows.
        </para>

        <para>
          <!-- ext. spec 9.5.1 Overview --> The OpenCL specification in section 9.7 defines how to
          share data with texture and buffer objects in a parallel OpenGL implementation,
          but does not define how the association between an OpenCL context and an OpenGL
          context or share group is established. This extension defines optional attributes
          to OpenCL context creation routines which associate a GL context or share group
          object with a newly created OpenCL context. If this extension is supported
          by an implementation, the string "cl_khr_gl_sharing" will be present in the
          <constant>CL_DEVICE_EXTENSIONS</constant>
          string described in the table of allowed values for <varname>param_name</varname>
          for <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
          or in the <constant>CL_PLATFORM_EXTENSIONS</constant>
          string described in the table of allowed values for <varname>param_name</varname>
          for <citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>.
        </para>

        <para>
          <!-- ext. spec 9.6 Sharing Memory Objects with OpenGL -->
          This section discusses OpenCL functions that allow applications
          to use OpenGL buffer, texture, and renderbuffer objects as OpenCL memory objects. This
          allows efficient sharing of data between OpenCL and OpenGL. The OpenCL API may be used
          to execute kernels that read and/or write memory objects that are also OpenGL objects.
        </para>

        <para>
          An OpenCL image object may be created from an OpenGL texture or
          renderbuffer object. An OpenCL buffer object may be created from an OpenGL buffer object.
        </para>

        <para>
          Any supported OpenGL object defined within the GL share
          group object, or the share group associated with the GL context from which the CL
          context is created, may be shared, with the exception of the default OpenGL objects
          (i.e. objects named zero), which may not be shared.
        </para>

<!-- 12-Nov-2015, Ext 2.1 rev. 17 -->

