<?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>clCreateImage</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clCreateImage" />
  </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="clCreateImage"></a>
        <h1>
            clCreateImage
        </h1>
        <p>
            Creates a 1D image, 1D image buffer, 1D image array, 2D image, 2D image array or 3D image 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">clCreateImage</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>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="cl_image_format.html" target="pagedisplay">cl_image_format</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*image_format</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="cl_image_desc.html" target="pagedisplay">cl_image_desc</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*image_desc</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">*host_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_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 on which the image object is to be created.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> flags </code> </span>
            </dt>
            <dd>
              <p>
                       A bit-field that is used to specify allocation
                      and usage information about the image memory object being created and is
                      described in the table below.
                    </p>
              <p>
                      For all image types except <code class="constant">CL_MEM_OBJECT_IMAGE1D_BUFFER</code>,
                      if value specified for <code class="varname">flags</code> is 0, the default is used
                      which is <code class="constant">CL_MEM_READ_WRITE</code>.
                    </p>
              <p>
                      For <code class="constant">CL_MEM_OBJECT_IMAGE1D_BUFFER</code> image type, if the
                      <code class="constant">CL_MEM_READ_WRITE</code>, <code class="constant">CL_MEM_READ_ONLY</code>
                      or <code class="constant">CL_MEM_WRITE_ONLY</code> values are not specified in
                      <code class="varname">flags</code>, they are inherited from the corresponding
                      memory access qualifers associated with <code class="varname">buffer</code>.
                      The <code class="constant">CL_MEM_USE_HOST_PTR</code>,
                      <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> and
                      <code class="constant">CL_MEM_COPY_HOST_PTR</code> values cannot
                      be specified in <code class="varname">flags</code> but are inherited
                      from the corresponding memory access qualifiers associated with
                      <code class="varname">buffer</code>.  If <code class="constant">CL_MEM_COPY_HOST_PTR</code>
                      is specified in the memory access qualifier values associated with
                      <code class="varname">buffer</code> it does not imply any additional copies
                      when the sub-buffer is created from <code class="varname">buffer</code>.
                      If the <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>,
                      <code class="constant">CL_MEM_HOST_READ_ONLY</code> or
                      <code class="constant">CL_MEM_HOST_NO_ACCESS</code> values are not specified in
                      <code class="varname">flags</code>, they are inherited from the corresponding memory
                      access qualifiers associated with <code class="varname">buffer</code>.
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_mem_flags</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_READ_WRITE</code>
                      </td>
                      <td align="left">
              This flag specifies that the memory object will be read and written by a kernel. This
              is the default.
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_WRITE_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flags specifies that the memory object will be written but not read by
                a kernel.
              </p>

              <p>
                Reading from a buffer or image object created with
                <code class="constant">CL_MEM_WRITE_ONLY</code> inside a kernel is undefined.
              </p>

              <p>
                <code class="constant">CL_MEM_READ_WRITE</code> and <code class="constant">CL_MEM_WRITE_ONLY</code>
                are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_READ_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the memory object is a read-only memory object when
                used inside a kernel.
              </p>

              <p>
                Writing to a buffer or image object created with
                <code class="constant">CL_MEM_READ_ONLY</code> inside a kernel is undefined.
              </p>

              <p>
                <code class="constant">CL_MEM_READ_WRITE</code> or <code class="constant">CL_MEM_WRITE_ONLY</code>
                and <code class="constant">CL_MEM_READ_ONLY</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_USE_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If
                specified, it indicates that the application wants the OpenCL implementation
                to use memory referenced by <code class="varname">host_ptr</code> as the storage bits
                for the memory object.
              </p>

              <p>
                OpenCL implementations are allowed to cache the buffer contents pointed to by
                <code class="varname">host_ptr</code> in device memory. This cached copy can be used when
                kernels are executed on a device.
              </p>

              <p>
                The result of OpenCL commands that operate on multiple buffer objects created with
                the same <code class="varname">host_ptr</code> or overlapping host regions is considered
                to be undefined.
              </p>

              <p>
                Refer to the <a class="citerefentry" href="dataTypes.html"><span class="citerefentry"><span class="refentrytitle">description
                of the alignment rules</span></span></a> for
                <code class="varname">host_ptr</code> for memory objects (buffer and images) created
                using <code class="constant">CL_MEM_USE_HOST_PTR</code>.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_ALLOC_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the application wants the OpenCL implementation to
                allocate memory from host accessible memory.
              </p>

              <p>
                <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> and
                <code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_COPY_HOST_PTR</code>
                      </td>
                      <td align="left">
              <p>
                This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If specified,
                it indicates that the application wants the OpenCL implementation to allocate
                memory for the memory object and copy the data from memory referenced by
                <code class="varname">host_ptr</code>.
              </p>

              <p>
                <code class="constant">CL_MEM_COPY_HOST_PTR</code> and
                <code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.
              </p>

              <p>
                <code class="constant">CL_MEM_COPY_HOST_PTR</code> can be used with
                <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> to initialize the contents of the
                <span class="type">cl_mem</span> object allocated using host-accessible (e.g.  PCIe) memory.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will only write to the memory object (using
                OpenCL APIs that enqueue a write or a map for write).  This can be used to optimize
                write access from the host (e.g. enable write combined allocations for memory
                objects for devices that communicate with the host over a system bus such as PCIe).
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_READ_ONLY</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will only read the memory object (using OpenCL
                APIs that enqueue a read or a map for read).
              </p>

              <p>
                <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> and
                <code class="constant">CL_MEM_HOST_READ_ONLY</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_HOST_NO_ACCESS</code>
                      </td>
                      <td align="left">
              <p>
                This flag specifies that the host will not read or write the memory object.
              </p>

              <p>
                <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> or
                <code class="constant">CL_MEM_HOST_READ_ONLY</code> and
                <code class="constant">CL_MEM_HOST_NO_ACCESS</code> are mutually exclusive.
              </p>
            </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_format </code> </span>
            </dt>
            <dd>
              <p>
                       A pointer to a structure that
                      describes format properties of the image to be allocated. See
                      <a class="citerefentry" href="cl_image_format.html"><span class="citerefentry"><span class="refentrytitle">cl_image_format</span></span></a>
                      for a detailed description of the image format descriptor.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_desc </code> </span>
            </dt>
            <dd>
              <p>
                       A pointer to a structure that
                      describes type and dimensions of the image to be allocated.  See
                      <a class="citerefentry" href="cl_image_desc.html"><span class="citerefentry"><span class="refentrytitle">cl_image_desc</span></span></a>
                      for more information.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> host_ptr </code> </span>
            </dt>
            <dd>
              <p>
                      A pointer to the image data that may already be allocated by the application.
                      Refer to table below for a description of how large the buffer that
                      <code class="varname">host_ptr</code> points to must be.
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">Image Type</th>
                      <th align="left">Size of buffer that <code class="varname">host_ptr</code> points to</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE1D</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_row_pitch</code>
                      </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE1D_BUFFER</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_row_pitch</code>
                      </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE2D</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_row_pitch * image_height</code>
                      </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE3D</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_slice_pitch * image_depth</code>
                      </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE1D_ARRAY</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_slice_pitch * image_array_size</code>
                      </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MEM_OBJECT_IMAGE2D_ARRAY</code>
                      </td>
                      <td align="left">
                        <code class="constant">≥ image_slice_pitch * image_array_size</code>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </div>
              <p>
                      For a 3D image or 2D image array, the image data specified by
                      <code class="varname">host_ptr</code> is stored as a linear sequence of adjacent 2D
                      image slices or 2D images respectively. Each 2D image is a linear sequence
                      of  adjacent scanlines. Each scanline is a linear sequence of image elements.
                    </p>
              <p>
                      For a 2D image, the image data specified by <code class="varname">host_ptr</code>
                      is stored as a linear sequence of adjacent scanlines. Each scanline is
                      a linear sequence of image elements.
                    </p>
              <p>
                      For a 1D image array, the image data specified by <code class="varname">host_ptr</code>
                      is stored as a linear sequence of adjacent 1D images respectively. Each 1D
                      image or 1D image buffer is a single scanline which is a linear sequence
                      of adjacent elements.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> errcode_ret </code> </span>
            </dt>
            <dd>
              <p>
                      Will return an appropriate error code. If <code class="varname">errcode_ret</code>
                      is NULL, no error code is returned.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clCreateImage</code> returns a valid non-zero 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.
            </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.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_FORMAT_DESCRIPTOR</span> if values specified in
              <code class="varname">image_format</code> are not valid or if <code class="varname">image_format</code>
              is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_DESCRIPTOR</span> if values specified in
              <code class="varname">image_desc</code> are not valid or if <code class="varname">image_desc</code>
              is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_SIZE</span> if image dimensions specified
              in <code class="varname">image_desc</code> exceed the minimum maximum image dimensions
              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>
              for all devices in <code class="varname">context</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_HOST_PTR</span> if <code class="varname">host_ptr</code> in
              <code class="varname">image_desc</code> is NULL and <code class="constant">CL_MEM_USE_HOST_PTR</code> or
              <code class="constant">CL_MEM_COPY_HOST_PTR</code> are set in <code class="varname">flags</code> or if
              <code class="varname">host_ptr</code> is not NULL but <code class="constant">CL_MEM_COPY_HOST_PTR</code>
              or <code class="constant">CL_MEM_USE_HOST_PTR</code> are not set in <code class="varname">flags</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if a 1D image buffer is being created
              and the buffer object was created with <code class="constant">CL_MEM_WRITE_ONLY</code>
              and <code class="varname">flags</code> specifies <code class="constant">CL_MEM_READ_WRITE</code>
              or <code class="constant">CL_MEM_READ_ONLY</code>, or if the buffer object was
              created with <code class="constant">CL_MEM_READ_ONLY</code> and <code class="varname">flags</code> specifies
              <code class="constant">CL_MEM_READ_WRITE</code> or <code class="constant">CL_MEM_WRITE_ONLY</code>, or
              if <code class="varname">flags</code> specifies <code class="constant">CL_MEM_USE_HOST_PTR</code>
              or <code class="constant">CL_MEM_ALLOC_HOST_PTR</code> or
              <code class="constant">CL_MEM_COPY_HOST_PTR</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if a 1D image buffer is being created and
              the buffer object was created with <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>
              and <code class="varname">flags</code> specifies <code class="constant">CL_MEM_HOST_READ_ONLY</code>,
              or if the buffer object was created with <code class="constant">CL_MEM_HOST_READ_ONLY</code>
              and <code class="varname">flags</code> specifies <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>,
              or if the buffer object was created with <code class="constant">CL_MEM_HOST_NO_ACCESS</code>
              and <code class="varname">flags</code> specifies <code class="constant">CL_MEM_HOST_READ_ONLY</code>
              or <code class="constant">CL_MEM_HOST_WRITE_ONLY</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_IMAGE_FORMAT_NOT_SUPPORTED</span> if the
              <code class="varname">image_format</code> is not supported.
            </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 image object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if there are
              no devices in <code class="varname">context</code> that support
              images (i.e. <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
              (specified in the table of OpenCL Device Queries 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_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="http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf#page=90" 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_image_desc.html"><span class="citerefentry"><span class="refentrytitle">cl_image_desc</span></span></a>,
            <a class="citerefentry" href="cl_image_format.html"><span class="citerefentry"><span class="refentrytitle">cl_image_format</span></span></a>,
            <a class="citerefentry" href="classDiagram.html"><span class="citerefentry"><span class="refentrytitle">Cardinality Diagram</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-2011 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
