<?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>clEnqueueReadImage</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="clEnqueueReadImage" />
  </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="clEnqueueReadImage"></a>
        <h1>
            clEnqueueReadImage
        </h1>
        <p>
            Enqueue commands to read from an image or image array object to host memory.
        </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">clEnqueueReadImage</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="abstractDataTypes.html" target="pagedisplay">cl_mem</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_bool" target="pagedisplay">cl_bool</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">blocking_read</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*origin</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*region</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">row_pitch</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">slice_pitch</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*ptr</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>
                        Refers to the host command-queue in which the read command will be
                        queued. <code class="varname">command_queue</code> and <code class="varname">image</code>
                        must be created with the same OpenCL context.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image </code> </span>
            </dt>
            <dd>
              <p>
                        Refers to a valid image or image array object.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> blocking_read </code> </span>
            </dt>
            <dd>
              <p>
                      Indicates if the read operations are <code class="varname">blocking</code> or
                      <code class="varname">non-blocking</code>.
                    </p>
              <p>
                      If <code class="varname">blocking_read</code> is <code class="constant">CL_TRUE</code>
                      i.e. the read command is blocking, <code class="function">clEnqueueReadImage</code>
                      does not return until the buffer data has been read and copied into memory
                      pointed to by <code class="varname">ptr</code>.
                    </p>
              <p>
                      If <code class="varname">blocking_read</code> is <code class="constant">CL_FALSE</code>
                      i.e. map operation is non-blocking, <code class="function">clEnqueueReadImage</code>
                      queues a non-blocking read command and returns. The contents of the
                      buffer that <code class="varname">ptr</code> points to cannot be used until the read
                      command has completed. The <code class="varname">event</code> argument returns an
                      event object which can be used to query the execution status of the read
                      command. When the read command has completed, the contents of the buffer
                      that <code class="varname">ptr</code> points to can be used by the application.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> origin </code> </span>
            </dt>
            <dd>
              <p>
                      Defines the (<span class="emphasis"><em>x, y, z</em></span>) offset in pixels in the 1D, 2D, or
                      3D image, the (<span class="emphasis"><em>x, y</em></span>) offset and the image index in the
                      image array or the (x) offset and the image index in the 1D image array.  If
                      <code class="varname">image</code> is a 2D image object, <code class="varname">origin</code>[2]
                      must be 0. If <code class="varname">image</code> is a 1D image or 1D image buffer
                      object, <code class="varname">origin</code>[1] and <code class="varname">origin</code>[2]
                      must be 0. If <code class="varname">image</code> is a 1D image array object,
                      <code class="varname">origin</code>[2] must be 0.  If <code class="varname">image</code>
                      is a 1D image array object, <code class="varname">origin</code>[1] describes the
                      image index in the 1D image array. If <code class="varname">image</code> is a 2D
                      image array object, <code class="varname">origin</code>[2] describes the image
                      index in the 2D image array.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> region </code> </span>
            </dt>
            <dd>
              <p>
                      Defines the (<span class="emphasis"><em>width, height, depth</em></span>) in pixels of the
                      1D, 2D or 3D rectangle, the (<span class="emphasis"><em>width, height</em></span>) in pixels
                      of the 2D rectangle and the number of images of a 2D image array or the
                      (<span class="emphasis"><em>width</em></span>) in pixels of the 1D rectangle and the number
                      of images of a 1D image array. If <code class="varname">image</code> is a 2D image
                      object, <code class="varname">region</code>[2] must be 1.  If <code class="varname">image</code>
                      is a 1D image or 1D image buffer object,  <code class="varname">region</code>[1]
                      and <code class="varname">region</code>[2] must be 1. If image is a 1D image array
                      object, <code class="varname">region</code>[2] must be 1. The values in <code class="varname">region</code> cannot be 0.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> row_pitch </code> </span>
            </dt>
            <dd>
              <p>
                      The length of each row in bytes. This value must be greater than or
                      equal to the element size in bytes * <code class="varname">width</code>. If
                      <code class="varname">row_pitch</code> is set to 0, the appropriate row pitch
                      is calculated based on the size of each element in bytes multiplied by
                      <code class="varname">width</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> slice_pitch </code> </span>
            </dt>
            <dd>
              <p>
                      Size in bytes of the 2D slice of the 3D region of a 3D image or
                      each image of a 1D or 2D image array being read.  This must be 0 if
                      <code class="varname">image</code> is a 1D or 2D image. Otherwise this value must be greater
                      than or equal to <code class="varname">row_pitch</code> * <code class="varname">height</code>.
                      If <code class="varname">slice_pitch</code> is set to 0, the appropriate slice
                      pitch is calculated based on the <code class="varname">row_pitch</code> *
                      <code class="varname">height</code>.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> ptr </code> </span>
            </dt>
            <dd>
              <p>
                      The pointer to a buffer in host memory where image data is to be written to.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname">
                        event_wait_list
                    ,</code>
                    <code class="varname">
                        num_events_in_wait_list
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                      Specify events that need to complete before this particular
                      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.  The context associated with events in
                      <code class="varname">event_wait_list</code> and <code class="varname">command_queue</code> must
                      be the same. The memory associated with <code class="varname">event_wait_list</code>
                      can be reused or freed after the function returns.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        event
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                      Returns an event object that identifies this particular read command
                      and can be used to query or queue a wait for this particular 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>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          Calling <code class="function">clEnqueueReadImage</code> to read a region of the
          <code class="varname">image</code> with the <code class="varname">ptr</code> argument value set to
          <code class="varname">host_ptr</code> + (<code class="varname">origin</code>[2] * <code class="varname">image
          slice pitch</code> + <code class="varname">origin</code>[1] * <code class="varname">image
          row pitch</code> + <code class="varname">origin</code>[0] * <code class="varname">bytes per
          pixel</code>), where <code class="varname">host_ptr</code> is a pointer to the memory
          region specified when the <code class="varname">image</code> being read is created with
          <code class="constant">CL_MEM_USE_HOST_PTR</code>, must meet the following requirements in
          order to avoid undefined behavior:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
              All commands that use this image object have finished execution before the read
              command begins execution.
            </li>
            <li class="listitem" style="list-style-type: disc">
              The <code class="varname">row_pitch</code> and <code class="varname">slice_pitch</code> argument
              values in <code class="function">clEnqueueReadImage</code> must be set to the image row
              pitch and slice pitch.
            </li>
            <li class="listitem" style="list-style-type: disc">
               The image object is not mapped.
            </li>
            <li class="listitem" style="list-style-type: disc">
              The image object is not used by any command-queue until the read command has
              finished execution.
            </li>
          </ul>
        </div>
        <p>
            If the mipmap extensions are enabled with <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</span></span></a>, 
            calls to <code class="function">clEnqueueReadImage</code>, 
            <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a> and 
            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a> can be used to read 
            from or write to a specific mip-level of a mip-mapped image. 
            If image argument is a 1D image, <code class="varname">origin</code>[1] specifies the mip-level to use. 
            If image argument is a 1D image array, <code class="varname">origin</code>[2] specifies the mip-level to use. 
            If image argument is a 2D image, <code class="varname">origin</code>[3] specifies the mip-level to use. 
            If image argument is a 2D image array or a 3D image, <code class="varname">origin</code>[3] specifies the mip-level to use.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clEnqueueReadImage</code> returns <span class="errorname">CL_SUCCESS</span> if
          the function is executed successfully. 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_COMMAND_QUEUE</span> if <code class="varname">command_queue</code>
              is not a valid host command-queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if the context associated with
              <code class="varname">command_queue</code> and <code class="varname">image</code> are not the same
              or if the context associated with <code class="varname">command_queue</code> and events in
              <code class="varname">event_wait_list</code> are not the same.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if <code class="varname">image</code> is not
              a valid image object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if the region being read specified by
              <code class="varname">origin</code> and <code class="varname">region</code> is out of bounds or if
              <code class="varname">ptr</code> is a NULL value.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if values in <code class="varname">origin</code>
              and <code class="varname">region</code> do not follow rules described in the argument
              description for <code class="varname">origin</code> and <code class="varname">region</code>.
            </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_INVALID_IMAGE_SIZE</span> if image dimensions (image width,
              height, specified or compute row and/or slice pitch) for <code class="varname">image</code>
              are not supported by device associated with <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_IMAGE_FORMAT_NOT_SUPPORTED</span> if image format (image channel
              order and data type) for <code class="varname">image</code> are not supported by device
              associated with <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_MEM_OBJECT_ALLOCATION_FAILURE</span> if there is a failure to
              allocate memory for data store associated with <code class="varname">image</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if the device associated
              with <code class="varname">command_queue</code> does not support images
              (i.e. <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code> specified 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>
              is <code class="constant">CL_FALSE</code>).
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if
              <code class="function">clEnqueueReadImage</code> is called on <code class="varname">image</code>
              which has been created with <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> or
              <code class="constant">CL_MEM_HOST_NO_ACCESS</code></li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST</span> if the read
              and write operations are blocking and the execution status of any of the events
              in <code class="varname">event_wait_list</code> is a negative integer value.
            </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.pdf#namedest=clEnqueueReadImage" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a>,
            <a class="citerefentry" href="clEnqueueCopyImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyImage</span></span></a>,
            <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</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>
