<?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>clEnqueueReleaseD3D11ObjectsKHR</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clEnqueueReleaseD3D11ObjectsKHR" />
  </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="clEnqueueReleaseD3D11ObjectsKHR"></a>
        <h1>clEnqueueReleaseD3D11ObjectsKHR</h1>
        <p>Release OpenCL memory objects that have been created from Direct3D 11 resources.</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_int</a>
                    <strong class="fsfunc">clEnqueueReleaseD3D11ObjectsKHR</strong>(</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_command_queue</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">command_queue</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_objects</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_mem</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*mem_objects</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event_wait_list</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <code class="varname">num_objects</code>
              </span>
            </dt>
            <dd>
              <p>
                    The number of memory objects to be released in <code class="varname">mem_objects</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">mem_objects</code>
              </span>
            </dt>
            <dd>
              <p>
                     A pointer to a list of OpenCL memory objects that were created from
                     Direct3D 11 resources.
                </p>
            </dd>
            <dt>
              <span class="term"><code class="varname">num_events_in_wait_list</code>, <code class="varname">event_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</code> returns an event object
                  that identifies this particular 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 event 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>
            The Direct3D 11 objects are released by the OpenCL context associated with
             <code class="varname">command_queue</code>.
        </p>
        <p>
            OpenCL memory objects created from Direct3D 11 resources which have been acquired
            by OpenCL must be released by OpenCL before they may be accessed by Direct3D 11.
            Accessing a Direct3D 11 resource while its corresponding OpenCL memory object is
            acquired is in error and will result in undefined behavior, including but not limited
            to possible OpenCL errors, data corruption, and program termination.
        </p>
        <p>
          If <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is not
          specified as <code class="constant">CL_TRUE</code> during context creation,
          <code class="function">clEnqueueReleaseD3D11ObjectsKHR</code> provides the
          synchronization guarantee that any calls to Direct3D 11 calls involving
          the interop device(s) used in the OpenCL context made after the call to
          <code class="function">clEnqueueReleaseD3D11ObjectsKHR</code> will not start executing until
          after all events in <code class="varname">event_wait_list</code> are complete and all work already
          submitted to <code class="varname">command_queue</code> completes execution.  If the context was
          created with properties specifying <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code>
          as <code class="constant">CL_TRUE</code>, the user is responsible for guaranteeing that any
          Direct3D 11 calls involving the interop device(s) used in the OpenCL context made
          after <code class="function">clEnqueueReleaseD3D11ObjectsKHR</code> will not start executing
          until after event returned by <code class="function">clEnqueueReleaseD3D11ObjectsKHR</code>
          reports completion.
        </p>
        <h4><a id="id-1.6.5"></a>Sharing Memory Objects with Direct3D 11 Resources</h4>
        <p>
      The goal of this extension is to provide interoperability between
      OpenCL and Direct3D 11. This is designed to function analogously
      to the <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">OpenGL
      interoperability</span></span></a> as defined in sections 9.7 and 9.8.
      If this extension is supported by an implementation, the string "cl_khr_d3d11_sharing"
      will be present in the <code class="constant">CL_PLATFORM_EXTENSIONS</code>
      or <code class="constant">CL_DEVICE_EXTENSIONS</code> string described in
      the table of allowed values for <code class="varname">param_name</code> for
      <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a> or
      <a class="citerefentry" href="clGetPlatformInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetPlatformInfo</span></span></a>.
    </p>
        <p>
      As currently proposed the interfaces for this extension would be provided in
      <code class="code">cl_d3d11.h</code>.
    </p>
        <p>
      This section discusses OpenCL functions that allow
      applications to use Direct3D 11 resources as OpenCL memory objects. This allows efficient
      sharing of data between OpenCL and Direct3D 11. The OpenCL API may be used to execute
      kernels that read and/or write memory objects that are also Direct3D 11 resources. An
      OpenCL image object may be created from a Direct3D 11 texture resource. An OpenCL buffer
      object may be created from a Direct3D 11 buffer resource. OpenCL memory objects may be
      created from Direct3D 11 objects if and only if the OpenCL context has been created from
      a Direct3D 11 device.
    </p>
        <h4><a id="id-1.6.9"></a>Lifetime of Shared Objects</h4>
        <p>
      An OpenCL memory object created from a
      Direct3D 11 resource remains valid as long as the corresponding Direct3D 11 resource has
      not been deleted. If the Direct3D 11 resource is deleted through the Direct3D 11 API,
      subsequent use of the OpenCL memory object will result in undefined behavior, including
      but not limited to possible OpenCL errors, data corruption, and program termination.
    </p>
        <p>
      The successful creation of a
      cl_context against a Direct3D 11 device specified via the context create parameter
      <code class="constant">CL_CONTEXT_D3D11_DEVICE_KHR</code> will increment the internal Direct3D
      reference count on the specified Direct3D 11 device. The internal Direct3D reference
      count on that Direct3D 11 device will be decremented when the OpenCL reference count on
      the returned OpenCL context drops to zero.
    </p>
        <p>
      The OpenCL context and corresponding command-queues are dependent on the
      existence of the Direct3D 11 device from which the OpenCL context was created. If the
      Direct3D 11 device is deleted through the Direct3D 11 API, subsequent use of the OpenCL
      context will result in undefined behavior, including but not limited to possible OpenCL
      errors, data corruption, and program termination.
    </p>
        <p>
      Properties of Direct3D 11 objects may be queried
      using <a class="citerefentry" href="clGetMemObjectInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetMemObjectInfo</span></span></a>
      and <a class="citerefentry" href="clGetImageInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetImageInfo</span></span></a>
      with <code class="varname">param_name</code> <code class="constant">CL_MEM_D3D11_RESOURCE_KHR</code> and
      <code class="constant">CL_IMAGE_D3D11_SUBRESOURCE_KHR</code>. 
    </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          Returns <span class="errorname">CL_SUCCESS</span>
          if the function is executed successfully. If <code class="varname">num_objects</code> is 0 and
          <code class="varname">mem_objects</code> is NULL the function does nothing and returns
          <span class="errorname">CL_SUCCESS</span>. Otherwise it returns one of the following errors:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">num_objects</code>
              is zero and <code class="varname">mem_objects</code> is not a NULL value or if
              <code class="varname">num_objects</code> &gt; 0 and <code class="varname">mem_objects</code> is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if memory objects in
              <code class="varname">mem_objects</code> are not valid OpenCL memory objects or if memory
              objects in <code class="varname">mem_objects</code> have not been created from Direct3D
              11 resources.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_COMMAND_QUEUE</span> if <code class="varname">command_queue</code>
              is not a valid command-queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if context associated with
              <code class="varname">command_queue</code> was not created from a Direct3D 11 device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR</span> if memory objects
              in <code class="varname">mem_objects</code> have not previously been acquired using
              <a class="citerefentry" href="clEnqueueAcquireD3D11ObjectsKHR.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueAcquireD3D11ObjectsKHR</span></span></a>, 
              or have been released using
              <code class="function">clEnqueueReleaseD3D11ObjectsKHR</code> since the last time that
              they were acquired.
            </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_event_in_wait_list</code> &gt; 0,
              or <code class="varname">event_wait_list</code> is  not NULL and
              <code class="varname">num_event_in_wait_list</code> is 0, or if event objects in
              <code class="varname">event_wait_list</code> are not valid events.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p><img src="pdficon_small1.gif" />
            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0-extensions.pdf#page=108" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</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>
