<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clEnqueueReleaseGLObjects</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="clEnqueueReleaseGLObjects" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clEnqueueReleaseGLObjects"></a>
        <h1>clEnqueueReleaseGLObjects</h1>
        <p>
            Release OpenCL memory objects that have been created from OpenGL objects.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef"><a class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a>

                    <strong class="fsfunc">
                        clEnqueueReleaseGLObjects
                    </strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_command_queue</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">command_queue</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_objects</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_mem</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*mem_objects</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event_wait_list</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term"> <code class="varname"> command_queue </code> </span>
            </dt>
            <dd>
              <p>
                        A valid command-queue.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> num_objects </code> </span>
            </dt>
            <dd>
              <p>
                        The number of memory objects to be released in
                         <code class="varname">mem_objects</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> mem_objects </code> </span>
            </dt>
            <dd>
              <p>
                        A pointer to a list of CL memory objects that correspond to GL objects.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">event_wait_list</code>
                , </span>
              <span class="term">
                    <code class="varname">num_events_in_wait_list</code>
                </span>
            </dt>
            <dd>
              <p>
                      These parameters specify events
                      that need to complete before this command can be executed. If
                      <code class="varname">event_wait_list</code> is NULL, then this particular command does
                      not wait on any event to complete.  If <code class="varname">event_wait_list</code>
                      is NULL, <code class="varname">num_events_in_wait_list</code> must be 0. If
                      <code class="varname">event_wait_list</code> is not NULL, the list of events
                      pointed to by <code class="varname">event_wait_list</code> must be valid and
                      <code class="varname">num_events_in_wait_list</code> must be greater than
                      0. The events specified in <code class="varname">event_wait_list</code> act as
                      synchronization points.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> event </code> </span>
            </dt>
            <dd>
              <p>
                      Returns an event object that identifies
                      this particular read/write command and can be used to query or queue a
                      wait for the command to complete.  <code class="varname">event</code> can be NULL
                      in which case it will not be possible for the application to query the
                      status of this command or queue a wait for this command to complete.
                      If the <code class="varname">event_wait_list</code> and the 
                      <code class="varname">event</code> arguments are not 
                      NULL, the <code class="varname">event</code> argument should not refer 
                      to an element of the <code class="varname">event_wait_list</code> array.
                    </p>
              <p>
                      If the
                      <a class="citerefentry" href="cl_khr_gl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_event</span></span></a>
                      extension is supported, if an OpenGL context is bound to the current thread, 
                      then then any OpenGL commands which 
                    </p>
              <div class="itemizedlist">
                <ul class="itemizedlist" style="list-style-type: disc; ">
                  <li class="listitem" style="list-style-type: disc">
                              affect or access the contents of the memory objects listed in the 
                              <code class="varname">mem_objects</code> list, and
                          </li>
                  <li class="listitem" style="list-style-type: disc">
                              are issued on that context after the call to 
                              <code class="function">clEnqueueReleaseGLObjects</code></li>
                </ul>
              </div>
              <p>
                        will not execute until after execution of any OpenCL commands preceding the 
                        <code class="function">clEnqueueReleaseGLObjects</code>
                        which affect or access any of those memory objects. If a non-NULL 
                        event object is returned, it will report completion before execution 
                        of such OpenGL commands.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          Release OpenCL memory objects that have been created from OpenGL objects.  These objects
          need to be released before they can be used by OpenGL.  The OpenGL objects are released
          by the OpenCL context associated with <code class="varname">command_queue</code>.
        </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          If the
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> extension is supported and if an OpenGL context is bound
          to the current thread, then any OpenGL commands which does:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
              affect or access the contents of a memory object listed in the
              <code class="varname">mem_objects</code> list, and
            </li>
            <li class="listitem" style="list-style-type: disc">
              are issued on that context after the call to
              <code class="function">clEnqueueReleaseGLObjects</code></li>
          </ul>
        </div>
        <p>
          will not execute until after execution of any OpenCL commands preceding the
          <code class="function">clEnqueueReleaseGLObjects</code> which affect or access any
          of those memory objects.  If a non-NULL <code class="varname">event</code> object is
          returned, it will report completion before execution of such OpenGL commands.
        </p>
        <p>
          General information about GL sharing follows.
        </p>
        <p>
           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
          <code class="constant">CL_DEVICE_EXTENSIONS</code>
          string described in the table of allowed values for <code class="varname">param_name</code>
          for <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>
          or in the <code class="constant">CL_PLATFORM_EXTENSIONS</code>
          string described in the table of allowed values for <code class="varname">param_name</code>
          for <a class="citerefentry" href="clGetPlatformInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetPlatformInfo</span></span></a>.
        </p>
        <p>
          
          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.
        </p>
        <p>
          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.
        </p>
        <p>
          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.
        </p>
        <h4><a id="id-1.7.10"></a>OpenGL and Corresponding OpenCL Image Formats</h4>
        <p>
       The table below (Table 9.4) describes
      the list of GL texture internal formats and the corresponding CL image formats. If a GL
      texture object with an internal format from the table below is successfully created by
      OpenGL, then there is guaranteed to be a mapping to one of the corresponding CL image
      format(s) in that table. Texture objects created with other OpenGL internal formats may
      (but are not guaranteed to) have a mapping to a CL image format; if such mappings exist,
      they are guaranteed to preserve all color components, data types, and at least the number
      of bits/component actually allocated by OpenGL for that format.
    </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="center" class="col1" />
              <col align="center" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="center">GL internal format</th>
                <th align="center">CL image format (channel order, channel data type)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT8 or CL_BGRA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_SRGBA8_ALPHA8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_sRGBA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center"><code class="constant">GL_RGBA</code>, <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code></td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center"><code class="constant">GL_BGRA</code>, <code class="constant">GL_UNSIGNED_INT_8_8_8_8_REV</code></td>
                <td align="center">
                  <code class="constant">CL_BGRA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA8I, GL_RGBA8I_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_SIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA16I, GL_RGBA16I_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_SIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA32I, GL_RGBA32I_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_SIGNED_INT32</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA8UI, GL_RGBA8UI_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNSIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA16UI, GL_RGBA16UI_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNSIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA32UI, GL_RGBA32UI_EXT</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNSIGNED_INT32</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA8_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_SNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA16</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA16_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_SNORM_INT166</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA16F, GL_RGBA16F_ARB</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_HALF_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RGBA32F, GL_RGBA32F_ARB</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R8_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_SNORM_INT8 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R16</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT16 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R16_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_SNORM_INT16 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R16F</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_HALF_FLOAT </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R32F</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_FLOAT </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R8I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_SIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R16I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_SIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R32I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_SIGNED_INT32</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R8UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNSIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R16UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNSIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_R32UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNSIGNED_INT32</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNORM_INT8 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG8_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_SNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG16</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG16_SNORM</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_SNORM_INT16 </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG16F</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_HALF_FLOAT </code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG32F</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG8I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_SIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG16I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_SIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG32I</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_SIGNED_INT32</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG8UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNSIGNED_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG16UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNSIGNED_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_RG32UI</code>
                </td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNSIGNED_INT32</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
        If the <a class="citerefentry" href="cl_khr_gl_depth_images.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_depth_images</span></span></a> 
        extension is enabled, the 
        following new image formats are added to table 9.4 in section 9.6.3.1 of the OpenCL 2.0
        extension specification. If a GL texture object with an internal format from table 9.4 is 
        successfully created by OpenGL, then there is guaranteed to be a mapping to one of the 
        corresponding CL image format(s) in that table.
    </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="center" class="col1" />
              <col align="center" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="center">GL internal format</th>
                <th align="center">CL image format (channel order, channel data type)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">
                  <code class="constant">GL_DEPTH_COMPONENT32F</code>
                </td>
                <td align="center">
                  <code class="constant">CL_DEPTH, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_DEPTH_COMPONENT16</code>
                </td>
                <td align="center">
                  <code class="constant">CL_DEPTH, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_DEPTH24_STENCIL8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_DEPTH_STENCIL, CL_UNORM_INT24</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">GL_DEPTH32F_STENCIL8</code>
                </td>
                <td align="center">
                  <code class="constant">CL_DEPTH_STENCIL, CL_FLOAT</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <h4><a id="id-1.7.15"></a>Lifetime of [GL] Shared Objects</h4>
        <p>
       
      An OpenCL memory object created from an OpenGL object
      (hereinafter refered to as a "shared CL/GL object") remains valid as long as the
      corresponding GL object has not been deleted. If the GL object is deleted through the GL
      API (e.g. <code class="function">glDeleteBuffers</code>, <code class="function">glDeleteTextures</code>,
      or <code class="function">glDeleteRenderbuffers</code>), subsequent use of the CL buffer or image
      object will result in undefined behavior, including but not limited to possible CL errors
      and data corruption, but may not result in program termination.
    </p>
        <p>
       
      The CL context and corresponding command-queues are dependent
      on the existence of the GL share group object, or the share group associated with the
      GL context from which the CL context is created. If the GL share group object or all GL
      contexts in the share group are destroyed, any use of the CL context or command-queue(s)
      will result in undefined behavior, which may include program termination. Applications
      should destroy the CL command-queue(s) and CL context before destroying the corresponding
      GL share group or contexts.
    </p>
        <h4><a id="id-1.7.18"></a>Synchronizing OpenCL and OpenGL Access</h4>
        <p>
      In order to ensure data integrity, the application is responsible
      for synchronizing access to shared CL/GL objects by their respective APIs.  Failure to
      provide such synchronization may result in race conditions and other undefined behavior
      including non-portability between implementations.
    </p>
        <p>
      Prior to calling <code class="function">clEnqueueAcquireGLObjects</code>,
      the application must ensure that any pending GL operations which access the objects
      specified in <code class="varname">mem_objects</code>  have completed.  This may be accomplished
      portably by issuing and waiting for completion of a <code class="function">glFinish</code>
      command on all GL contexts with pending references to these objects.  Implementations
      may offer more efficient synchronization methods; for example on some platforms calling
      <code class="function">glFlush</code> may be sufficient, or synchronization may be implicit within
      a thread, or there may be vendor-specific extensions that enable placing a fence in the
      GL command stream and waiting for completion of that fence in the CL command queue. Note
      that no synchronization methods other than <code class="function">glFinish</code> are portable
      between OpenGL implementations at this time.
    </p>
        <p>
        When the extension 
        <a class="citerefentry" href="cl_khr_egl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_event</span></span></a> 
        is supported: Prior to calling 
        <code class="function">clEnqueueAcquireGLObjects</code>, 
        the application must ensure that any pending 
        EGL or EGL client API operations which access 
        the objects specified in <code class="varname">mem_objects</code> have 
        completed. 
        If the 
        <a class="citerefentry" href="cl_khr_egl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_event</span></span></a>
        extension is supported and the EGL context in question supports fence 
        sync objects, <span class="emphasis"><em>explicit synchronisation</em></span> can be achieved 
        as set out in section 5.7.1. 
        If the 
        <a class="citerefentry" href="cl_khr_egl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_event</span></span></a> 
        extension is not supported, completion of EGL client API commands 
        may be determined by issuing and waiting for completion of commands such as 
        <code class="function">glFinish</code> or 
        <code class="function">vgFinish</code> on all client API 
        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 methods other than 
        <code class="function">glFinish</code> and <code class="function">vgFinish</code> 
        are portable between all 
        EGL client API implementations and all OpenCL 
        implementations. While this is the only way to 
        ensure completion that is portable to all platforms, 
        these are expensive operation and their use 
        should be avoided if the 
        <a class="citerefentry" href="cl_khr_egl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_event</span></span></a> extension 
        is supported on a platform.
    </p>
        <p>
      
      Similarly, after calling
      <code class="function">clEnqueueReleaseGLObjects</code>, the application is responsible
      for ensuring that any pending OpenCL operations which access the objects specified
      in <code class="varname">mem_objects</code> have completed prior to executing subsequent GL
      commands which reference these objects. This may be accomplished portably by calling
      <a class="citerefentry" href="clWaitForEvents.html"><span class="citerefentry"><span class="refentrytitle">clWaitForEvents</span></span></a> with the
      event object returned by <code class="function">clEnqueueReleaseGLObjects</code>, or by calling
      <a class="citerefentry" href="clFinish.html"><span class="citerefentry"><span class="refentrytitle">clFinish</span></span></a>.  As above, some
      implementations may offer more efficient methods.
    </p>
        <p>
      The application is responsible for maintaining the proper order
      of operations if the CL and GL contexts are in separate threads.
    </p>
        <p>
      If a GL context is bound to a thread other than the one in which
      <code class="function">clEnqueueReleaseGLObjects</code> is called, changes to any of the objects in
      <code class="varname">mem_objects</code> may not be visible to that context without additional steps
      being taken by the application. For an OpenGL 3.1 (or later) context, the requirements
      are described in Appendix D ("Shared Objects and Multiple Contexts") of the OpenGL 3.1
      Specification. For prior versions of OpenGL, the requirements are implementation-dependent.
    </p>
        <p>
      Attempting to access the data store of an OpenGL object after
      it has been acquired by OpenCL and before it has been released will result in undefined
      behavior.  Similarly, attempting to access a shared CL/GL object from OpenCL before it
      has been acquired by the OpenCL command queue, or after it has been released, will result
      in undefined behavior.
    </p>
        <p>
      If the
      <a class="citerefentry" href="cl_khr_gl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_event</span></span></a> 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.
    </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clEnqueueReleaseGLObjects</code> returns <span class="errorname">CL_SUCCESS</span>
          if the function is executed successfully. If <code class="varname">num_objects</code> is 0
          and <code class="varname">mem_objects</code> is NULL the function does nothing and returns
          <span class="errorname">CL_SUCCESS</span>.  Otherwise, it returns one of the following errors:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">num_objects</code>
              is zero and <code class="varname">mem_objects</code> is not a NULL value or if
              <code class="varname">num_objects</code> &gt; 0 and <code class="varname">mem_objects</code> is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if memory objects in
              <code class="varname">mem_objects</code> are not valid OpenCL memory objects.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_COMMAND_QUEUE</span> if <code class="varname">command_queue</code>
              is not a valid command-queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if context associated with
              <code class="varname">command_queue</code> was not created from an OpenGL context.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_OBJECT</span> if memory objects in
              <code class="varname">mem_objects</code> have not been created from a GL object(s).
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_EVENT_WAIT_LIST</span>
              if <code class="varname">event_wait_list</code> is NULL and
              <code class="varname">num_events_in_wait_list</code> &gt; 0,
              or <code class="varname">event_wait_list</code> is not NULL and
              <code class="varname">num_events_in_wait_list</code> is 0, or if event objects in
              <code class="varname">event_wait_list</code> are not valid events.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.1-extensions.pdf#namedest=clEnqueueReleaseGLObjects" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>,
            <a class="citerefentry" href="clEnqueueAcquireGLObjects.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueAcquireGLObjects</span></span></a>,
            <a class="citerefentry" href="cl_khr_gl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_event</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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.
</div>
    </div>
  </body>
</html>
