<?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>clSetKernelArg</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clSetKernelArg" />
  </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="clSetKernelArg"></a>
        <h1>
            clSetKernelArg
        </h1>
        <p>
            Used to set the argument value for a specific argument of a kernel.
        </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">clSetKernelArg</strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_kernel</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">kernel</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">arg_index</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">arg_size</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">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*arg_value</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">kernel</code>
                </span>
            </dt>
            <dd>
              <p>
                        A valid kernel object.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">arg_index</code>
                </span>
            </dt>
            <dd>
              <p>
                      The argument index. Arguments to the kernel are referred by indices that
                      go from 0 for the leftmost argument to <code class="varname">n</code> - 1, where
                      <code class="varname">n</code> is the total number of arguments declared by a kernel.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">arg_value</code>
                </span>
            </dt>
            <dd>
              <p>
                      A pointer to data that should be used as the argument value for argument
                      specified by <code class="varname">arg_index</code>. The argument data pointed to by
                      <code class="varname">arg_value</code> is copied and the <code class="varname">arg_value</code>
                      pointer can therefore be reused by the application after
                      <code class="function">clSetKernelArg</code> returns. The argument value specified
                      is the value used by all API calls that enqueue <code class="varname">kernel</code>
                      (<a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>)
                      until the argument value is changed by a call to
                      <code class="function">clSetKernelArg</code> for <code class="varname">kernel</code>.
                    </p>
              <p>
                      If the argument is a memory object (buffer, pipe, image or image array), the
                      <code class="varname">arg_value</code> entry will be a pointer to the appropriate
                      buffer, pipe, image or image array object. The memory object must be created
                      with the context associated with the kernel object.  If the argument
                      is a buffer object, the <code class="varname">arg_value</code> pointer can be
                      NULL or point to a NULL value in which case a NULL value will be used
                      as the value for the argument declared as a pointer to 
                      <a class="citerefentry" href="global.html"><span class="citerefentry"><span class="refentrytitle">global</span></span></a>
                      or <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">constant</span></span></a>
                      memory in the kernel.  If the argument is declared with the 
                      <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">local</span></span></a>
                      qualifier, the <code class="varname">arg_value</code> entry must be NULL.  If the
                      argument is of type <span class="type">sampler_t</span>, the <code class="varname">arg_value</code> entry
                      must be a pointer to the sampler object. If the argument is of type 
                      <span class="type">queue_t</span>, the <code class="varname">arg_value</code> entry must be a 
                      pointer to the device queue object.
                    </p>
              <p>
                      If the argument is declared to be a pointer of a built-in scalar or vector
                      type, or a user defined structure type in the global or constant address
                      space, the memory object specified as argument value must be a buffer
                      object (or NULL). If the argument is declared with the 
                      <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">constant</span></span></a>
                      qualifier, the size in bytes of the memory object cannot
                      exceed <code class="constant">CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE</code>
                      and the number of arguments declared as pointers to 
                      <a class="citerefentry" href="constant.html"><span class="citerefentry"><span class="refentrytitle">constant</span></span></a>
                      memory cannot exceed <code class="constant">CL_DEVICE_MAX_CONSTANT_ARGS</code>.
                    </p>
              <p>
                      The memory object specified as argument value must be a pipe object if 
                      the argument is declared with the <code class="code">pipe</code> qualifier.
                    </p>
              <p>
                        The memory object specified as argument value must be a 2D image object if the argument is
                        declared to be of type <a class="link" href="abstractDataTypes.html" target="pagedisplay">image2d_t</a>. 
                        The memory object specified as argument value must be a 2D 
                        image object with image channel order = 
                        <code class="constant">CL_DEPTH</code> if the argument is 
                        declared to be of type 
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">image2d_depth_t</a>.
                        The memory object
                        specified as argument value must be a 3D image object if argument is declared to be of type
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">image3d_t</a>. The memory object specified as
                        argument value must be a 1D image object if the argument is declared to be of type
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">image1d_t</a>. The memory object specified as
                        argument value must be a 1D image buffer object if the argument is declared to be of type
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">image1d_buffer_t</a>.
                        The memory object specified as argument value must be a 1D image array object if argument
                        is declared to be of type <a class="link" href="abstractDataTypes.html" target="pagedisplay">image1d_array_t</a>.
                        The memory object specified as argument value must be a 2D image array object if argument is
                        declared to be of type <a class="link" href="abstractDataTypes.html" target="pagedisplay">image2d_array_t</a>.
                        The memory object specified as argument value must be a 2D image 
                        array object with image channel order = 
                        <code class="constant">CL_DEPTH</code> if argument is declared to be of type 
                        <a class="link" href="abstractDataTypes.html" target="pagedisplay">image2d_array_depth_t</a>.
                    </p>
              <p>
                      For all other kernel arguments, the <code class="varname">arg_value</code> entry
                      must be a pointer to the actual data to be used as argument value.
                    </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 supported,
                        if the argument is a multi-sample 2D image, the 
                        <code class="varname">arg_value</code> entry must be a 
                        pointer to a multisample image object. If the 
                        argument is a multi-sample 2D depth image, the 
                        <code class="varname">arg_value</code> entry 
                        must be a pointer to a multisample depth image 
                        object. If the argument is a multi-sample 2D 
                        image array, the <code class="varname">arg_value</code> 
                        entry must be a pointer to a multi-sample 
                        image array object. If the
                        argument is a multi-sample 2D depth image array, 
                        the <code class="varname">arg_value</code> entry must 
                        be a pointer to a 
                        multi-sample depth image array object.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                       arg_size
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                      Specifies the size of the argument value. If the argument is
                      a memory object, the size is the size of the memory
                      object. For arguments declared with the 
                      <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">local</span></span></a>
                      qualifier, the size specified will be the size in bytes
                      of the buffer that must be allocated for the 
                      <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">local</span></span></a>
                      argument. If the argument is of type <span class="type">sampler_t</span>,
                      the <code class="varname">arg_size</code> value must be equal to
                      <code class="code">sizeof(cl_sampler)</code>. 
                        If the argument is of type <span class="type">queue_t</span>, 
                        the <code class="varname">arg_size</code> value must be equal 
                        to <code class="code">sizeof(cl_command_queue)</code>.
                        For all other arguments, the size will
                      be the size of argument type.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          A kernel object does not update the reference count for objects such as memory, sampler
          objects specified as argument values by <code class="function">clSetKernelArg</code>. Users may
          not rely on a kernel object to retain objects specified as argument values to the kernel.
        </p>
        <p>
          Implementations shall not allow <span class="type">cl_kernel</span> objects to hold reference counts to
          <span class="type">cl_kernel</span> arguments, because no mechanism is provided for the user to tell the kernel
          to release that ownership right. If the kernel holds ownership rights on kernel args,
          that would make it impossible for the user to tell with certainty when he may safely
          release user allocated resources associated with OpenCL objects such as the <span class="type">cl_mem</span>
          backing store used with <code class="constant">CL_MEM_USE_HOST_PTR</code>.
        </p>
        <p>
           An OpenCL API call is considered to be
          <span class="emphasis"><em>thread-safe</em></span> if the internal state as managed by OpenCL remains
          consistent when called simultaneously by multiple <span class="emphasis"><em>host</em></span> threads.
          OpenCL API calls that are <span class="emphasis"><em>thread-safe</em></span> allow an application to
          call these functions in multiple <span class="emphasis"><em>host</em></span> threads without having to
          implement mutual exclusion across these <span class="emphasis"><em>host</em></span> threads i.e. they
          are also re-entrant-safe.
        </p>
        <p>
           All OpenCL API calls are thread-safe except
          <code class="function">clSetKernelArg</code>
          and <a class="citerefentry" href="clSetKernelArgSVMPointer.html"><span class="citerefentry"><span class="refentrytitle">clSetKernelArgSVMPointer</span></span></a>. 
          <code class="function">clSetKernelArg</code>
          and <a class="citerefentry" href="clSetKernelArgSVMPointer.html"><span class="citerefentry"><span class="refentrytitle">clSetKernelArgSVMPointer</span></span></a> are safe
          to call from any host thread, and safe to call re-entrantly so long as concurrent
          calls operate on different <span class="type">cl_kernel</span> objects. 
          However, the behavior of the <span class="type">cl_kernel</span>
          object is undefined if <code class="function">clSetKernelArg</code> 
          or <a class="citerefentry" href="clSetKernelArgSVMPointer.html"><span class="citerefentry"><span class="refentrytitle">clSetKernelArgSVMPointer</span></span></a>
          are called from multiple
          host threads on the same <span class="type">cl_kernel</span> object 
          at the same time. Please note that there
          are additional limitations as to which OpenCL APIs may be called from OpenCL callback
          functions -- please see section 5.11.
          (Please refer to the OpenCL glossary for the OpenCL definition of thread-safe. 
          This definition may be different from usage of the term in other contexts.)
        </p>
        <p>
           There is an inherent race condition in the
          design of OpenCL that occurs between setting a kernel argument and using the kernel
          with <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>.
          Another host thread might change the kernel arguments between when a host thread sets the
          kernel arguments and then enqueues the kernel, causing the wrong kernel arguments
          to be enqueued. Rather than attempt to share <span class="type">cl_kernel</span> objects among multiple host
          threads, applications are strongly encouraged to make additional <span class="type">cl_kernel</span> objects
          for kernel functions for each host thread.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clSetKernelArg</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_KERNEL</span> if <code class="varname">kernel</code> 
                is not a valid kernel object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_INDEX</span> if <code class="varname">arg_index</code> 
                is not a valid argument index.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_VALUE</span> if <code class="varname">arg_value</code> 
                specified is not a valid value.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> for an argument declared to 
                be a memory object when the
                specified <code class="varname">arg_value</code> is not a valid memory object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> for an argument 
                declared to be a multi-sample image, multisample image array, 
                multi-sample depth image or a multi-sample depth image array and the 
                argument value specified in <code class="varname">arg_value</code> does not follow 
                the rules described above for a depth 
                memory object or memory array object argument. (Applies 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 supported.)
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_SAMPLER</span> for an argument declared to be of type
              <code class="varname">sampler_t</code> when the specified <code class="varname">arg_value</code>
              is not a valid sampler object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DEVICE_QUEUE</span> for an argument declared to be of 
              type <span class="type">queue_t</span> when the 
              specified <code class="varname">arg_value</code> is not a valid device queue object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_SIZE</span> if <code class="varname">arg_size</code>
              does not match the size of the data type for an argument that
              is not a memory object or if the argument is a memory object and
              <code class="varname">arg_size</code> != <code class="code">sizeof(cl_mem)</code> or if
              <code class="varname">arg_size</code> is zero and the argument is declared with the
              <a class="citerefentry" href="local.html"><span class="citerefentry"><span class="refentrytitle">local</span></span></a>
              qualifier or if the argument is a sampler and <code class="varname">arg_size</code> !=
              <code class="code">sizeof(cl_sampler)</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ARG_VALUE</span> if the argument is an image declared
              with the <code class="constant">read_only</code> qualifier and <code class="varname">arg_value</code>
              refers to an image object created with <code class="varname">cl_mem_flags</code> of
              <code class="constant">CL_MEM_WRITE</code> or if the image argument is declared with
              the <code class="constant">write_only</code> qualifier and <code class="varname">arg_value</code>
              refers to an image object created with <code class="varname">cl_mem_flags</code> of
              <code class="constant">CL_MEM_READ</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="refsect2">
        <a id="example1"></a>
        <h3>
            Example
        </h3>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
kernel void
image_filter (int n, int m,
          constant float *filter_weights,
          read_only image2d_t src_image,
          write_only image2d_t dst_image)
{
     ...
}
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
          Argument index values for <code class="constant">image_filter</code> will
          be 0 for <code class="constant">n</code>, 1 for <code class="constant">m</code>, 2 for
          <code class="constant">filter_weights</code>, 3 for <code class="constant">src_image</code> and 4 for
          <code class="constant">dst_image</code>.
        </p>
      </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.pdf#page=211" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clEnqueueNDRangeKernel.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueNDRangeKernel</span></span></a>,
            <a class="citerefentry" href="clCreateKernel.html"><span class="citerefentry"><span class="refentrytitle">clCreateKernel</span></span></a>,
            <a class="citerefentry" href="clCreateKernelsInProgram.html"><span class="citerefentry"><span class="refentrytitle">clCreateKernelsInProgram</span></span></a>,
            <a class="citerefentry" href="clReleaseKernel.html"><span class="citerefentry"><span class="refentrytitle">clReleaseKernel</span></span></a>,
            <a class="citerefentry" href="clRetainKernel.html"><span class="citerefentry"><span class="refentrytitle">clRetainKernel</span></span></a>,
            <a class="citerefentry" href="clGetKernelInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetKernelInfo</span></span></a>,
            <a class="citerefentry" href="clGetKernelWorkGroupInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetKernelWorkGroupInfo</span></span></a>,
            <a class="citerefentry" href="clSetKernelArgSVMPointer.html"><span class="citerefentry"><span class="refentrytitle">clSetKernelArgSVMPointer</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-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>
