<?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>clGetPlatformInfo</keyword></keywordset>
    </refentryinfo>
    <refmeta>
        <refentrytitle>clGetPlatformInfo</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="clGetPlatformInfo">
<refname>clGetPlatformInfo</refname>
           <refpurpose>Get specific information about the OpenCL platform.</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>clGetPlatformInfo</function></funcdef>
                <paramdef><link xlink:href="abstractDataTypes.html">cl_platform_id</link><parameter>platform</parameter></paramdef>
<paramdef><link xlink:href="enums.html#cl_platform_info">cl_platform_info</link><parameter>param_name</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>param_value_size</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*param_value</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>*param_value_size_ret</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>

        <varlistentry>
            <term><varname>platform</varname></term>
            <listitem>
                <para>
                  The platform ID returned by
                  <citerefentry><refentrytitle>clGetPlatformIDs</refentrytitle></citerefentry>
                  or can be NULL. If <varname>platform</varname> is NULL, the behavior is
                  implementation-defined.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>param_name</varname></term>
            <listitem>
                <para>
                  An enumeration constant that identifies the platform information being
                  queried. It can be one of the values specified in the table below.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>param_value</varname></term>
            <listitem>
                <para>
                  A pointer to memory location where appropriate values for a
                  given <varname>param_value</varname> will be returned. Possible
                  <varname>param_value</varname> values returned are listed in the table
                  below. If <varname>param_value</varname> is NULL, it is ignored.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>param_value_size</varname></term>
            <listitem>
                <para>
                  Specifies the size in bytes of memory pointed to by
                  <varname>param_value</varname>. This size in bytes must be &ge; size of return
                  type specified in the table below.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>param_value_size_ret</varname></term>
            <listitem>
                <para>
                  Returns the actual size in bytes of data being queried by
                  <varname>param_value</varname>. If <varname>param_value_size_ret</varname>
                  is NULL, it is ignored
                </para>
            </listitem>
        </varlistentry>

<!-- ================================ PARAMETER TABLE (OPTIONAL) -->

        <varlistentry>
            <term></term>
            <listitem>
                <para>
                    OpenCL Platform Queries
                </para>
                <informaltable frame="all"><tgroup cols="3" align="left" colsep="1" rowsep="1">
    <colspec colname="col1" colnum="1" />
    <colspec colname="col2" colnum="2" />
    <colspec colname="col2" colnum="3" />
    <thead>
        <row>
        <entry>cl_platform_info</entry>
        <entry>Return Type</entry>
        <entry>Description</entry>
        </row>
    </thead>
    <tbody>

        <row>
            <entry><constant>CL_PLATFORM_PROFILE</constant></entry>
            <entry>char[]</entry>
            <entry>
            <para>
              OpenCL profile string. Returns the profile name supported by the implementation. The
              profile name returned can be one of the following strings:
            </para>

            <para>
              FULL_PROFILE - if the implementation supports the OpenCL specification (functionality
              defined as part of the core specification and does not require any extensions to
              be supported).
            </para>

            <para>
              EMBEDDED_PROFILE - if the implementation supports the OpenCL embedded profile. The
              embedded profile is defined to be a subset for each version of OpenCL.
            </para> </entry>
        </row>

        <row>
            <entry><constant>CL_PLATFORM_VERSION</constant></entry>
            <entry>char[]</entry>
            <entry>
              <para>OpenCL version string. Returns the OpenCL version supported by the
              implementation. This version string has the following format:
            </para>

            <para>
              <varname>OpenCL&lt;space&gt;&lt;major_version.minor_version&gt;&lt;space&gt;&lt;platform-specific
              information&gt;</varname>
            </para>

            <para>
              The <varname>major_version.minor_version</varname> value returned will be 1.2.
            </para>
            </entry>
        </row>

        <row>
            <entry><constant>CL_PLATFORM_NAME</constant></entry>
            <entry>char[]</entry>
            <entry>Platform name string.</entry>
        </row>

        <row>
            <entry><constant>CL_PLATFORM_VENDOR</constant></entry>
            <entry>char[]</entry>
            <entry>Platform vendor string.</entry>
        </row>

        <row>
            <entry><constant>CL_PLATFORM_EXTENSIONS</constant></entry>
            <entry>char[]</entry>
            <entry>
              <para>Returns a space-separated list of extension names (the extension names
              themselves do not contain any spaces) supported by the platform. Extensions
              defined here must be supported by all devices associated with this platform.
            </para></entry>
        </row>
    </tbody>

    </tgroup></informaltable>
            </listitem>
        </varlistentry>

<!-- ================================ END PARAMETER TABLE  -->

        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          A null terminated string is returned by OpenCL query function calls if the return
          type of the information being queried is a char[].
        </para>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
    <para>
      Returns <errorname>CL_SUCCESS</errorname> if the function is executed
      successfully. Otherwise, it returns the following:
    </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>param_name</varname> is not one of
          the supported values or if size in bytes specified by <varname>param_value_size</varname>
          is less than size of return type and <varname>param_value</varname> is not a NULL value.
        </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>

        </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="clGetPlatformInfo">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clGetPlatformIDs</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>


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

