<?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>clGetPlatformIDs</keyword></keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>clGetPlatformIDs</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="clGetPlatformIDs">
    <refname>clGetPlatformIDs</refname>
    <refpurpose>Obtain the list of platforms available.</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>clGetPlatformIDs</function></funcdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_entries</parameter></paramdef>
                <paramdef><link xlink:href="abstractDataTypes.html">cl_platform_id</link><parameter>*platforms</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>*num_platforms</parameter></paramdef>
           </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

    <refsect1 id="parameters" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><varname>num_entries</varname></term>
            <listitem>
                <para>
                  The number of <link xlink:href="abstractDataTypes.html">cl_platform_id</link>
                  entries that can be added to <varname>platforms</varname>. If
                  <varname>platforms</varname> is not NULL, the <varname>num_entries</varname>
                  must be greater than zero.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>platforms</varname></term>
            <listitem>
                <para>
                  Returns a list of OpenCL platforms found. The <link
                  xlink:href="abstractDataTypes.html">cl_platform_id</link> values returned
                  in <varname>platforms</varname> can be used to identify a specific OpenCL
                  platform. If <varname>platforms</varname> argument is NULL, this argument
                  is ignored. The number of OpenCL platforms returned is the mininum of the
                  value specified by <varname>num_entries</varname> or the number of OpenCL
                  platforms available.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>num_platforms</varname></term>
            <listitem>
                <para>
                  Returns the number of OpenCL platforms available. If
                  <varname>num_platforms</varname> is NULL, this argument is ignored.
                </para>
            </listitem>
        </varlistentry> </variablelist>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
            Returns <errorname>CL_SUCCESS</errorname> if the function is executed
            successfully. If the 
            <citerefentry><refentrytitle>cl_khr_icd</refentrytitle></citerefentry>
            extension is enabled, <function>clGetPlatformIDs</function> returns 
            <errorname>CL_SUCCESS</errorname> if the function is executed successfully 
            and there are a non zero number of platforms available.
        </para>

        <para>
          Otherwise it returns one of the following errors:
        </para>

        <itemizedlist mark="disc">
            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if <varname>num_entries</varname> 
                is equal to zero and <varname>platforms</varname> is not NULL or if 
                both <varname>num_platforms</varname> and 
                <varname>platforms</varname> are NULL.
            </listitem>

            <listitem>
                <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
                resources required by the OpenCL implementation on the host.
            </listitem>

            <listitem>
                <errorname>CL_PLATFORM_NOT_FOUND_KHR</errorname> if the 
                <citerefentry><refentrytitle>cl_khr_icd</refentrytitle></citerefentry>
                extension is enabled and no platforms are 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="clGetPlatformIDs">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
           <citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>,
           <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>,
           <citerefentry href="classDiagram"><refentrytitle>Cardinality Diagram</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>

<!-- 19-Oct-2015, API rev. 19; Ext rev. 10 -->
</refentry>

