<?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" [
<!ENTITY sharingD3D10Inc SYSTEM "sharingD3D10Inc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset><keyword>clGetDeviceIDsFromD3D10KHR</keyword></keywordset>
    </refentryinfo>
    <refmeta>
        <refentrytitle>clGetDeviceIDsFromD3D10KHR</refentrytitle>
        <refmiscinfo>
            <copyright>
                <year>2007-2013</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="clGetDeviceIDsFromD3D10KHR">
    <refname>clGetDeviceIDsFromD3D10KHR</refname>
    <refpurpose>Querying OpenCL Devices Corresponding to Direct3D 10 Devices.</refpurpose>
  </refnamediv>

  <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink">
    <title></title>
    <funcsynopsis>
      <funcprototype>
        <funcdef>
          <link xlink:href="scalarDataTypes.html">cl_int</link>
          <function>clGetDeviceIDsFromD3D10KHR</function>
        </funcdef>

        <paramdef><link xlink:href="abstractDataTypes.html">cl_platform_id</link><parameter>platform</parameter></paramdef>
        <paramdef><link xlink:href="enums.html#cl_d3d10_device_source_khr">cl_d3d10_device_source_khr</link><parameter>d3d_device_source</parameter></paramdef>
        <paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*d3d_object</parameter></paramdef>
        <paramdef><link xlink:href="enums.html#cl_d3d10_device_set_khr">cl_d3d10_device_set_khr</link><parameter>d3d_device_set</parameter></paramdef>
        <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_entries</parameter></paramdef>
        <paramdef><link xlink:href="abstractDataTypes.html">cl_device_id</link><parameter>*devices</parameter></paramdef>
        <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>*num_devices</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><varname>platform</varname></term>
            <listitem>
                <para>
                    Refers to the platform ID returned by
                    <citerefentry><refentrytitle>clGetPlatformIDs</refentrytitle></citerefentry>.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>d3d_device_source</varname></term>
            <listitem>
                <para>
                    Specifies the type of <varname>d3d_object</varname> and may be one of the following:.
                </para>
                <informaltable frame="all"><tgroup cols="2" align="left" colsep="1" rowsep="1">
                    <colspec colname="col1" colnum="1" />
                    <colspec colname="col2" colnum="2" />
                    <thead>
                        <row>
                            <entry>cl_d3d_device_source_khr</entry>
                            <entry>Type of <varname>d3d_object</varname></entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry><constant>CL_D3D10_DEVICE_KHR</constant></entry>
                            <entry><type>ID3D10Device</type> *</entry>
                        </row>
                        <row>
                            <entry><constant>CL_D3D10_DXGI_ADAPTER_KHR</constant></entry>
                            <entry><type>IDXGIAdapter</type> *</entry>
                        </row>
                    </tbody>
                </tgroup></informaltable>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>d3d_object</varname></term>
            <listitem>
                <para>
                    Specifies the object whose corresponding OpenCL devices are being queried. The type of
                    <varname>d3d_object</varname> must be as specified in the table above.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>d3d_device_set</varname></term>
            <listitem>
                <para>
                    Specifies the set of devices to return, and must be one of the following:
                </para>
                <informaltable frame="all"><tgroup cols="2" align="left" colsep="1" rowsep="1">
                    <colspec colname="col1" colnum="1" />
                    <colspec colname="col2" colnum="2" />
                    <thead>
                        <row>
                            <entry>cl_d3d_device_set_khr</entry>
                            <entry>Devices returned in <varname>devices</varname></entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry><constant>CL_PREFERRED_DEVICES_FOR_D3D10_KHR</constant></entry>
                            <entry>
                                The OpenCL devices associated with the specified Direct3D object.
                            </entry>
                        </row>

                        <row>
                            <entry><constant>CL_ALL_DEVICES_FOR_D3D10_KHR</constant></entry>
                            <entry>
                              All OpenCL devices which may interoperate with the specified
                              Direct3D object.  Performance of sharing data on these devices
                              may be considerably less than on the preferred devices.
                            </entry>
                        </row>
                    </tbody>
                </tgroup></informaltable>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>num_entries</varname></term>
            <listitem>
                <para>
                  The number of <type>cl_device_id</type> entries that can be added to
                  <varname>devices</varname>.  If <varname>devices</varname> is not NULL,
                  the <varname>num_entries</varname> must be greater than zero.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>devices</varname></term>
            <listitem>
                <para>
                  Returns a list of OpenCL devices found. The cl_device_id values returned
                  in <varname>devices</varname> can be used to identify a specific OpenCL
                  device. If <varname>devices</varname> is NULL, this argument is ignored. The
                  number of OpenCL devices returned is the mininum of the value specified by
                  <varname>num_entries</varname> and the number of OpenCL devices corresponding
                  to <varname>d3d_object</varname>.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>num_devices</varname></term>
            <listitem>
                <para>
                  Returns the number of OpenCL devices available that correspond to
                  <varname>d3d_object</varname>.  If <varname>num_devices</varname> is NULL,
                  this argument is ignored.
                </para>
            </listitem>
        </varlistentry> </variablelist>
    </refsect1>

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

    <refsect1 id="description"><title>Description</title>
        <para>
          The OpenCL devices corresponding to a Direct3D 10 device may be queried. The OpenCL
          devices corresponding to a DXGI adapter may also be queried. The OpenCL devices
          corresponding to a Direct3D 10 device will be a subset of the OpenCL devices
          corresponding to the DXGI adapter against which the Direct3D 10 device was created.
        </para>
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>

        &sharingD3D10Inc;

    </refsect1>

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
            Returns <errorname>CL_SUCCESS</errorname> if the function is executed successfully. Otherwise it may return:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_PLATFORM</errorname> if <varname>platform</varname> is not
              a valid platform.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>d3d_device_source</varname>
              is not a valid value, <varname>d3d_device_set</varname> is not a valid value,
              <varname>num_entries</varname> is equal to zero and <varname>devices</varname> is
              not NULL, or if both <varname>num_devices</varname> and <varname>devices</varname>
              are NULL.
            </listitem>

            <listitem>
              <errorname>CL_DEVICE_NOT_FOUND</errorname> if no OpenCL devices that correspond
              to <varname>d3d_object</varname> were found.
            </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="clGetDeviceIDsFromD3D10KHR">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D10BufferKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D10Texture2DKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromD3D10Texture3DKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueAcquireD3D10ObjectsKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueReleaseD3D10ObjectsKHR</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>


<!-- 3-Jun-2013 -->
</refentry>

