
    <bridgehead>Sharing Memory Objects with Direct3D 11 Resources</bridgehead>

    <para>
      The goal of this extension is to provide interoperability between
      OpenCL and Direct3D 11. This is designed to function analogously
      to the <citerefentry href="cl_khr_gl_sharing"><refentrytitle>OpenGL
      interoperability</refentrytitle></citerefentry> 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 <constant>CL_PLATFORM_EXTENSIONS</constant>
      or <constant>CL_DEVICE_EXTENSIONS</constant> string described in
      the table of allowed values for <varname>param_name</varname> for
      <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry> or
      <citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>.
    </para>

    <para>
      As currently proposed the interfaces for this extension would be provided in
      <code>cl_d3d11.h</code>.
    </para>

    <para>
      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.
    </para>

    <bridgehead>Lifetime of Shared Objects</bridgehead>

    <para>
      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.
    </para>

    <para>
      The successful creation of a
      cl_context against a Direct3D 11 device specified via the context create parameter
      <constant>CL_CONTEXT_D3D11_DEVICE_KHR</constant> 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.
    </para>

    <para>
      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.
    </para>

    <para>
      Properties of Direct3D 11 objects may be queried
      using <citerefentry><refentrytitle>clGetMemObjectInfo</refentrytitle></citerefentry>
      and <citerefentry><refentrytitle>clGetImageInfo</refentrytitle></citerefentry>
      with <varname>param_name</varname> <constant>CL_MEM_D3D11_RESOURCE_KHR</constant> and
      <constant>CL_IMAGE_D3D11_SUBRESOURCE_KHR</constant>. 
    </para>

<!-- 22-Dec-2013, rev. 19 -->

