<?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>clCreateFromGLTexture</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clCreateFromGLTexture" />
  </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="clCreateFromGLTexture"></a>
        <h1>clCreateFromGLTexture</h1>
        <p>
             Creates an OpenCL image object, image array object, or image buffer object from an OpenGL texture object,
             texture array object, texture buffer object, or a single face of an OpenGL cubemap texture object.
        </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="abstractDataTypes.html" target="pagedisplay">cl_mem</a>
                    <strong class="fsfunc">
                        clCreateFromGLTexture
                    </strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_context</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_flags" target="pagedisplay">cl_mem_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>GLenum <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">texture_target</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>GLint <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">miplevel</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>GLuint <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">texture</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_int</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">* errcode_ret</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"> context </code> </span>
            </dt>
            <dd>
              <p>
                        A valid OpenCL context created from an OpenGL context.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> flags </code> </span>
            </dt>
            <dd>
              <p>
                      A bit-field that is used to
                      specify usage information. Refer to the table for
                      <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>
                      for a description of <code class="varname">flags</code>. Only the values
                      <code class="constant">CL_MEM_READ_ONLY</code>, <code class="constant">CL_MEM_WRITE_ONLY</code>
                      and <code class="constant">CL_MEM_READ_WRITE</code> can be used.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> texture_target </code> </span>
            </dt>
            <dd>
              <p>
                      <code class="varname">texture_target</code>
                      This value must be one of <code class="constant">GL_TEXTURE_1D</code>,
                      <code class="constant">GL_TEXTURE_1D_ARRAY</code>,
                      <code class="constant">GL_TEXTURE_BUFFER</code>, <code class="constant">GL_TEXTURE_2D</code>,
                      <code class="constant">GL_TEXTURE_2D_ARRAY</code>, <code class="constant">GL_TEXTURE_3D</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_X</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Y</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_POSITIVE_Z</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_X</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</code>,
                      <code class="constant">GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</code>, or
                      <code class="constant">GL_TEXTURE_RECTANGLE</code>. 
                      (<code class="constant">GL_TEXTURE_RECTANGLE</code> requires OpenGL 3.1.
                      Alternatively, <code class="constant">GL_TEXTURE_RECTANGLE_ARB</code> may be
                      specified if the OpenGL extension <code class="code">GL_ARB_texture_rectangle</code> is supported.)
                      <code class="varname">texture_target</code> is used only to define the image type
                      of <code class="varname">texture</code>. No reference to a bound GL texture object
                      is made or implied by this parameter.
                    </p>
              <p>
                        If the <a class="citerefentry" href="cl_khr_gl_msaa_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_msaa_sharing</span></span></a>
                        extension is enabled, <code class="varname">texture_target</code> 
                        may be 
                        <code class="constant">GL_TEXTURE_2D_MULTISAMPLE</code> or 
                        <code class="constant">GL_TEXTURE_2D_MULTISAMPLE_ARRAY</code>.
                    </p>
              <p>
                        If <code class="varname">texture_target</code> is 
                        <code class="constant">GL_TEXTURE_2D_MULTISAMPLE</code>, 
                        <code class="function">clCreateFromGLTexture</code>
                        creates an 
                        OpenCL 2D multi-sample image object from 
                        an OpenGL 2D multi-sample texture
                    </p>
              <p>
                        If <code class="varname">texture_target</code> is 
                        <code class="constant">GL_TEXTURE_2D_MULTISAMPLE_ARRAY</code>, 
                        <code class="function">clCreateFromGLTexture</code>
                        creates an OpenCL 2D multi-sample array 
                        image object from an OpenGL 2D multi-sample 
                        texture.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> miplevel </code> </span>
            </dt>
            <dd>
              <p>
                      The mipmap level to be used. If
                      <code class="varname">texture_target</code> is <code class="constant">GL_TEXTURE_BUFFER</code>,
                      miplevel must be 0. Implementations may return
                      <code class="constant">CL_INVALID_OPERATION</code> for miplevel values &gt; 0
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> texture </code> </span>
            </dt>
            <dd>
              <p>
                      The name of a GL 1D, 2D, 3D, 1D array,
                      2D array, cubemap, rectangle or buffer texture object. The texture object
                      must be a complete texture as per OpenGL rules on texture completeness. The
                      <code class="varname">texture</code> format and dimensions defined by OpenGL for the
                      specified <code class="varname">miplevel</code> of the texture will be used to create
                      the OpenCL image memory object. Only GL texture objects with an internal
                      format that maps to appropriate image channel order and data type specified
                      in tables 5.5 and 5.6 (see 
                      <a class="citerefentry" href="cl_image_format.html"><span class="citerefentry"><span class="refentrytitle">cl_image_format</span></span></a>) 
                      may be used to create the OpenCL image memory object.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> errcode_ret </code> </span>
            </dt>
            <dd>
              <p>
                      Returns an appropriate error code as described
                      below.  If <code class="varname">errcode_ret</code> is NULL, no error code is returned.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          If the state of a GL texture object is modified through the GL API
          (e.g. <code class="function">glTexImage2D</code>, <code class="function">glTexImage3D</code> or
          the values of the texture parameters <code class="constant">GL_TEXTURE_BASE_LEVEL</code>
          or <code class="constant">GL_TEXTURE_MAX_LEVEL</code> are modified) while there exists a
          corresponding CL image object, subsequent use of the CL image object will result in
          undefined behavior.
        </p>
        <p>
          The <a class="citerefentry" href="clRetainMemObject.html"><span class="citerefentry"><span class="refentrytitle">clRetainMemObject</span></span></a>
          and <a class="citerefentry" href="clReleaseMemObject.html"><span class="citerefentry"><span class="refentrytitle">clReleaseMemObject</span></span></a>
          functions can be used to retain and release the image objects.
        </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>
          OpenCL memory objects may be created from OpenGL objects
          if and only if the OpenCL context has been created from an OpenGL share group
          object or context. OpenGL share groups and contexts are created using platform
          specific APIs such as EGL, CGL, WGL, and GLX. On MacOS X, an OpenCL context may
          be created from an OpenGL share group object using the OpenCL platform extension
          cl_apple_gl_sharing. On other platforms including Microsoft Windows, Linux/Unix and
          others, an OpenCL context may be created from an OpenGL context using the Khronos
          platform extension <code class="function">cl_khr_gl_sharing</code>. Refer to the platform
          documentation for your OpenCL implementation, or visit the Khronos Registry at
          https://www.khronos.org/registry/cl/ for more information.
        </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.6.9"></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 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 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.6.14"></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.6.17"></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>
          Returns a valid non-zero OpenCL image object and <code class="varname">errcode_ret</code>
          is set to <span class="errorname">CL_SUCCESS</span> if the image object is created
          successfully. Otherwise, it returns a NULL value with one of the following error
          values returned in <code class="varname">errcode_ret</code>:
        </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_CONTEXT</span> if <code class="varname">context</code> is not
              a valid context or was not created from a GL context.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if values specified in
              <code class="varname">flags</code> are not valid or if value specified in
              <code class="varname">texture_target</code> is not one of the values specified in the
              description of <code class="varname">texture_target</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MIP_LEVEL</span> if <code class="varname">miplevel</code>
              is less than the value of <code class="varname">level<sub>base</sub></code>
              (for OpenGL implementations) or zero (for OpenGL ES implementations); or
              greater than the value of <code class="varname">q</code> (for both OpenGL and OpenGL
              ES). <code class="varname">level<sub>base</sub></code> and <code class="varname">q</code>
              are defined for the texture in section 3.8.10 (Texture Completeness) of the OpenGL
              2.1 specification and section 3.7.10 of the OpenGL ES 2.0.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MIP_LEVEL</span> if <code class="varname">miplevel</code> is
              greater than zero and the OpenGL implementation does not support creating from
              non-zero mipmap levels.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_OBJECT</span> if <code class="varname">texture</code> is not
              a GL texture object whose type matches <code class="varname">texture_target</code>, if the
              specified <code class="varname">miplevel</code> of <code class="varname">texture</code> is not defined,
              or if the width or height of the specified <code class="varname">miplevel</code> is zero
              or if the GL texture object is incomplete.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_FORMAT_DESCRIPTOR</span> if the OpenGL texture
              internal format does not map to a supported OpenCL image format.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if <code class="varname">texture</code> is a GL texture object
              created with a border width value greater than zero.
            </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.0-extensions.pdf#page=48" 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="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>,
            <a class="citerefentry" href="clCreateFromGLBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateFromGLBuffer</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" />Copyright © 2007-2013 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>
