<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>cl_khr_d3d11_sharing</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>cl_khr_d3d11_sharing</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2011</year>
                <holder>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.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="cl_khr_d3d11_sharing">
        <refname>cl_khr_d3d11_sharing</refname>

        <refpurpose>
            Provide interoperability between OpenCL and Direct3D 11.
        </refpurpose>
    </refnamediv>

    <!-- ALTERNATIVE SYNTAX SYNOPSIS (NON-FUNCTION) -->

    <refsect2 id="synopsis">
        <title>
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
#pragma OPENCL EXTENSION cl_khr_d3d11_sharing : enable
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>

<!-- ================================ DESCRIPTION  -->

    <refsect1 xmlns:xlink="http://www.w3.org/1999/xlink" id="description"><title>Description</title>
        <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>.
        </para>

        <para>
          The interfaces for this extension are provided in the header file
          <code>cl_d3d11.h</code>.
        </para>

        <para>
            If the <function>cl_khr_d3d11_sharing</function> extension is supported, then the following functions
            are enabled:
        </para>

         <itemizedlist mark="disc">
            <listitem>
                <citerefentry><refentrytitle>clGetDeviceIDsFromD3D11KHR</refentrytitle></citerefentry>
            </listitem>

            <listitem>
                <citerefentry><refentrytitle>clCreateFromD3D11BufferKHR</refentrytitle></citerefentry>
            </listitem>

            <listitem>
                <citerefentry><refentrytitle>clCreateFromD3D11Texture2DKHR</refentrytitle></citerefentry>
            </listitem>

            <listitem>
                <citerefentry><refentrytitle>clCreateFromD3D11Texture3DKHR</refentrytitle></citerefentry>
            </listitem>

            <listitem>
                <citerefentry><refentrytitle>clEnqueueAcquireD3D11ObjectsKHR</refentrytitle></citerefentry>
            </listitem>

            <listitem>
                <citerefentry><refentrytitle>clEnqueueReleaseD3D11ObjectsKHR</refentrytitle></citerefentry>
            </listitem>
        </itemizedlist>

        <para>
          The OpenCL functions enabled by the <function>cl_khr_d3d11_sharing</function> extension
          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>

<!-- !!!
The following is from the ext. spec. pp. 98-99 and contains only redundant information that
is properly documented in the reference pages for the relevant functions. Its appearance
here has questionable value, and introduces considerable additional labor to maintain.

        <para>
            When the <function>cl_khr_d3d11_sharing</function> extension is enabled, this extends the list of allowable
            values in certain parameters of certain functions, as follows:
        </para>
        <itemizedlist mark="disc">
            <listitem>
                <constant>CL_D3D11_DEVICE_KHR</constant> and <constant>CL_D3D11_DXGI_ADAPTER_KHR</constant> are accepted
                as a Direct3D 11 device source in the <varname>d3d_device_source</varname> parameter of
                <citerefentry><refentrytitle>clGetDeviceIDsFromD3D11KHR</refentrytitle></citerefentry>.
            </listitem>
            <listitem>
                <constant>CL_PREFERRED_DEVICES_FOR_D3D11_KHR</constant> and
                <constant>CL_ALL_DEVICES_FOR_D3D11_KHR</constant> are accepted
                as a set of Direct3D 11 devices in the <varname>d3d_device_set</varname> parameter of
                <citerefentry><refentrytitle>clGetDeviceIDsFromD3D11KHR</refentrytitle></citerefentry>.
            </listitem>
            <listitem>
                <constant>CL_CONTEXT_D3D11_DEVICE_KHR</constant> is accepted
                as a property name in the <varname>properties</varname> parameter of
                <citerefentry><refentrytitle>clCreateContext</refentrytitle></citerefentry> and
                <citerefentry><refentrytitle>clCreateContextFromType</refentrytitle></citerefentry>.
            </listitem>
           <listitem>
                <constant>CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR</constant> is accepted
                as a property name in the <varname>param_name</varname> parameter of
                <citerefentry><refentrytitle>clCreateContextInfo</refentrytitle></citerefentry>.
            </listitem>
            <listitem>
                <constant>CL_MEM_D3D11_RESOURCE_KHR</constant> is accepted
                as the property being queried in the <varname>param_name</varname> parameter of
                <citerefentry><refentrytitle>clGetMemObjectInfo</refentrytitle></citerefentry>.
            </listitem>
            <listitem>
                <constant>CL_IMAGE_D3D11_SUBRESOURCE_KHR</constant> is accepted
                as the property being queried in the <varname>param_name</varname> parameter of
                <citerefentry><refentrytitle>clGetImageInfo</refentrytitle></citerefentry>.
            </listitem>
             <listitem>
                <constant>CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR</constant> and
                <constant>CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR</constant> are
                returned in the <varname>param_value</varname> parameter of
                <citerefentry><refentrytitle>clGetEventInfo</refentrytitle></citerefentry>
                when param_name is <constant>CL_EVENT_COMMAND_TYPE</constant>.
            </listitem>
            <listitem>
                <constant>CL_INVALID_D3D11_DEVICE_KHR</constant> is
                returned by
                <citerefentry><refentrytitle>clCreateContext</refentrytitle></citerefentry> and
                <citerefentry><refentrytitle>clCreateContextFromType</refentrytitle></citerefentry>
                if the Direct3D 11 device specified for interoperability is not
                compatible with the devices against which the context is to be created.
            </listitem>
            <listitem>
                <constant>CL_INVALID_D3D11_RESOURCE_KHR</constant> is
                returned by
                <citerefentry><refentrytitle>clCreateFromD3D11BufferKHR</refentrytitle></citerefentry>
                when <varname>resource</varname> is not a Direct3D 11 buffer object, and by
                 <citerefentry><refentrytitle>clCreateFromD3D11Texture2DKHR</refentrytitle></citerefentry> and
                 <citerefentry><refentrytitle>clCreateFromD3D11Texture3DKHR</refentrytitle></citerefentry>
                when <varname>resource</varname> is not a Direct3D 11 texture object.
            </listitem>
            <listitem>
                <constant>CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR</constant> is
                returned by
                <citerefentry><refentrytitle>clEnqueueAcquireD3D11ObjectsKHR</refentrytitle></citerefentry>
                when any of <varname>mem_objects</varname> are currently acquired by OpenCL.
            </listitem>
            <listitem>
                <constant>CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR</constant> is
                returned by
                <citerefentry><refentrytitle>clEnqueueReleaseD3D11ObjectsKHR</refentrytitle></citerefentry>
                when any of <varname>mem_objects</varname> are not currently acquired by OpenCL.
            </listitem>
        </itemizedlist>
-->

    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="cl_khr_d3d11_sharing">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>EXTENSION</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clGetDeviceIDsFromD3D11KHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D11BufferKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D11Texture2DKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D11Texture3DKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueAcquireD3D10ObjectsKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueReleaseD3D11ObjectsKHR</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 24-Oct-2011 -->
</refentry>

