| <?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>clGetProgramBuildInfo</keyword> | 
 |         </keywordset> | 
 |     </refentryinfo> | 
 |  | 
 |     <refmeta> | 
 |         <refentrytitle> | 
 |             clGetProgramBuildInfo | 
 |         </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="clGetProgramBuildInfo"> | 
 |         <refname> | 
 |             clGetProgramBuildInfo | 
 |         </refname> | 
 |  | 
 |         <refpurpose> | 
 |             Returns build information for each device in the program object. | 
 |         </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>clGetProgramBuildInfo</function> | 
 |                 </funcdef> | 
 |  | 
 |                 <paramdef><link xlink:href="abstractDataTypes.html">cl_program</link> <parameter>program</parameter></paramdef>, | 
 |                 <paramdef><link xlink:href="abstractDataTypes.html">cl_device_id</link> <parameter>device</parameter></paramdef>, | 
 |                 <paramdef><link xlink:href="enums.html#cl_program_build_info">cl_program_build_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>program</varname></term> | 
 |                 <listitem><para> Specifies the program object being queried.</para></listitem> | 
 |             </varlistentry> | 
 |  | 
 |             <varlistentry> | 
 |                 <term><varname>device</varname></term> | 
 |                 <listitem><para> | 
 |                     Specifies the device for which build information is being queried. | 
 |                     <varname>device</varname> must be a valid device associated with <varname>program</varname>. | 
 |                 </para></listitem> | 
 |             </varlistentry> | 
 |  | 
 |             <varlistentry> | 
 |                 <term><varname> | 
 |                         param_name | 
 |                 </varname></term> | 
 |  | 
 |                 <listitem> | 
 |                     <para> | 
 |                       Specifies the information to query. The list of supported | 
 |                       <varname>param_name</varname> types and the information returned in | 
 |                       <varname>param_value</varname> by <function>clGetProgramBuildInfo</function> | 
 |                       is described in the table below. | 
 |                     </para> | 
 |  | 
 |                     <!-- table 5.17 --> | 
 |                     <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_program_build_info</entry> | 
 |                                     <entry>Return Type and Info. returned in <varname>param_value</varname></entry> | 
 |                                 </row> | 
 |                             </thead> | 
 |  | 
 |                             <tbody> | 
 |                                 <row> | 
 |                                     <entry><constant>CL_PROGRAM_BUILD_STATUS</constant></entry> | 
 |                                     <entry> | 
 |                                         Return type: cl_build_status | 
 |  | 
 |                                         <para> | 
 |                                           Returns the build, compile or link status, whichever was | 
 |                                           performed last on <varname>program</varname> for <varname>device</varname>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                             This can be one of the following: | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <errorname><constant>CL_BUILD_NONE</constant></errorname>. | 
 |                                           The build status returned if no | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>, | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           has been performed on the specified program object | 
 |                                           for <varname>device</varname>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <errorname><constant>CL_BUILD_ERROR</constant></errorname>. | 
 |                                           The build status returned if | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>, | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           whichever was performed last on the specified program | 
 |                                           object for <varname>device</varname> generated an error. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <errorname><constant>CL_BUILD_SUCCESS</constant></errorname>. | 
 |                                           The build status returned if | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>, | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           whichever was performed last on the specified program | 
 |                                           object for <varname>device</varname> was successful. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <errorname><constant>CL_BUILD_IN_PROGRESS</constant></errorname>. | 
 |                                           The build status returned if | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>, | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           whichever was performed last on the specified program | 
 |                                           object for <varname>device</varname> has not finished. | 
 |                                         </para> | 
 |                                     </entry> | 
 |                                 </row> | 
 |  | 
 |                                 <row> | 
 |                                  <entry><errorname><constant>CL_PROGRAM_BUILD_OPTIONS</constant></errorname></entry> | 
 |                                     <entry> | 
 |                                         Return type: char[] | 
 |  | 
 |                                         <para> | 
 |                                           Return the build, compile or link | 
 |                                           options specified by the <varname>options</varname> argument in | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>, | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry>, | 
 |                                           whichever was performed last on <varname>program</varname> for | 
 |                                           <varname>device</varname>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           If build status of <varname>program</varname> | 
 |                                           for <varname>device</varname> is | 
 |                                           <constant>CL_BUILD_NONE</constant>, an empty string | 
 |                                           is returned. | 
 |                                         </para> | 
 |                                     </entry> | 
 |                                 </row> | 
 |  | 
 |                                 <row> | 
 |                                     <entry><errorname><constant>CL_PROGRAM_BUILD_LOG</constant></errorname></entry> | 
 |                                     <entry> | 
 |                                         Return type: char[] | 
 |  | 
 |                                         <para> | 
 |                                           Return the build, compile or link log for | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> or | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           whichever was performed last on <varname>program</varname> for | 
 |                                           <varname>device</varname>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           If build status of <varname>program</varname> for <varname>device</varname> is | 
 |                                           <constant>CL_BUILD_NONE</constant>, an empty string | 
 |                                           is returned. | 
 |                                         </para> | 
 |                                     </entry> | 
 |                                 </row> | 
 |  | 
 |                                  <row> | 
 |                                     <entry><errorname><constant>CL_PROGRAM_BINARY_TYPE</constant></errorname></entry> | 
 |                                     <entry> | 
 |                                         Return type: cl_program_binary_type | 
 |  | 
 |                                         <para> | 
 |                                           Return the program binary type for | 
 |                                           <varname>device</varname>. This can be one of the | 
 |                                           following values: | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <constant>CL_PROGRAM_BINARY_TYPE_NONE</constant>. There | 
 |                                           is no binary associated with <varname>device</varname>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <constant>CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT</constant>. | 
 |                                           A compiled binary is associated | 
 |                                           with <varname>device</varname>. | 
 |                                           This is the case if <varname>program</varname> was created using | 
 |                                           <citerefentry><refentrytitle>clCreateProgramWithSource</refentrytitle></citerefentry> | 
 |                                           and compiled using | 
 |                                           <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry> | 
 |                                           or a compiled binary is loaded using | 
 |                                           <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <constant>CL_PROGRAM_BINARY_TYPE_LIBRARY</constant>. A | 
 |                                           library binary is associated | 
 |                                           with <varname>device</varname>. | 
 |                                           This is the case if <varname>program</varname> was created by | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           which is called with the <code>–create-library</code> link | 
 |                                           option or if a library binary is loaded using | 
 |                                           <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                           <constant>CL_PROGRAM_BINARY_TYPE_EXECUTABLE</constant>. | 
 |                                           An executable binary is associated | 
 |                                           with <varname>device</varname>. | 
 |                                           This is the case if <varname>program</varname> was created by | 
 |                                           <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry> | 
 |                                           without the <code>–create-library</code> | 
 |                                           link option or program was created by | 
 |                                           <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> | 
 |                                           or an executable binary is loaded using | 
 |                                           <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>. | 
 |                                         </para> | 
 |  | 
 |                                         <para> | 
 |                                             <constant>CL_PROGRAM_BINARY_TYPE_INTERMEDIATE</constant>. | 
 |                                             An intermediate (non-source) representation for  | 
 |                                             the program is loaded as a binary. The program  | 
 |                                             must be further processed with  | 
 |                                             <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry>  | 
 |                                             or <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>.  | 
 |                                             If processed with  | 
 |                                             <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry>,  | 
 |                                             the result  | 
 |                                             will be a binary of type | 
 |                                             <constant>CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT</constant> or  | 
 |                                             <constant>CL_PROGRAM_BINARY_TYPE_LIBRARY</constant>. If | 
 |                                             processed with  | 
 |                                             <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry>,  | 
 |                                             the result will be  | 
 |                                             a binary of type <constant>CL_PROGRAM_BINARY_TYPE_EXECUTABLE</constant>. | 
 |                                         </para> | 
 |  | 
 |                                     </entry> | 
 |                                 </row> | 
 |  | 
 |                                 <row> | 
 |                                     <entry><errorname><constant>CL_PROGRAM_BUILD_GLOBAL_- | 
 | VARIABLE_TOTAL_SIZE</constant></errorname></entry> | 
 |                                     <entry> | 
 |                                         Return type: size_t | 
 |  | 
 |                                         <para> | 
 |                                             The total amount of storage, in bytes, used by  | 
 |                                             program variables in the global address space.  | 
 |                                         </para> | 
 |                                     </entry> | 
 |                                 </row> | 
 |  | 
 |                             </tbody> | 
 |                         </tgroup> | 
 |                     </informaltable> | 
 |                </listitem> | 
 |             </varlistentry> | 
 |  | 
 |             <varlistentry> | 
 |                 <term><varname>param_value</varname></term> | 
 |                 <listitem><para> | 
 |                     A pointer to memory where the appropriate result being queried is returned. | 
 |                     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 | 
 |                     must be ≥ size of return type as described in the table above. | 
 |                 </para></listitem> | 
 |             </varlistentry> | 
 |  | 
 |             <varlistentry> | 
 |                 <term><varname>param_value_size_ret</varname></term> | 
 |                 <listitem><para> | 
 |                     Returns the actual size in bytes of data copied to <varname>param_value</varname>. | 
 |                     If <varname>param_value_size_ret</varname> is NULL, it is ignored. | 
 |                 </para></listitem> | 
 |             </varlistentry> | 
 |         </variablelist> | 
 |     </refsect1> | 
 |  | 
 | <!-- ================================ NOTES  --> | 
 |  | 
 |   <refsect1 id="notes"><title>Notes</title> | 
 |         <para> | 
 |           A program binary (compiled binary, library binary or executable binary) built for a | 
 |           parent device can be used by all its sub-devices. If a program binary has not been built | 
 |           for a sub-device, the program binary associated with the parent device will be used. | 
 |         </para> | 
 |  | 
 |         <para> | 
 |           A program binary for a device specified with | 
 |           <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry> | 
 |           or queried using | 
 |           <citerefentry><refentrytitle>clGetProgramInfo</refentrytitle></citerefentry> can be | 
 |           used as the binary for the associated root device, and all sub-devices created from | 
 |           the root-level device or sub-devices thereof. | 
 |         </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> | 
 |               Returns <errorname>CL_INVALID_DEVICE</errorname> if <varname>device</varname> | 
 |               is not in the list of devices associated with <varname>program</varname>. | 
 |             </listitem> | 
 |  | 
 |             <listitem> | 
 |               Returns <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is | 
 |               not valid, or if size in bytes specified by <varname>param_value_size</varname> | 
 |               is < size of return type as described in the table above and | 
 |               <varname>param_value</varname> is not NULL. | 
 |             </listitem> | 
 |  | 
 |             <listitem> | 
 |               Returns <errorname>CL_INVALID_PROGRAM</errorname> if <varname>program</varname> | 
 |               is a not a valid program object. | 
 |             </listitem> | 
 |  | 
 |             <listitem> | 
 |               <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate | 
 |               resources required by the OpenCL implementation on the device. | 
 |             </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="clGetProgramBuildInfo">OpenCL Specification</olink> | 
 |         </para> | 
 |     </refsect1> | 
 |  | 
 | <!-- ================================ ALSO SEE  --> | 
 |  | 
 |     <refsect1 id="seealso"><title>Also see</title> | 
 |         <para> | 
 |             <citerefentry><refentrytitle>clGetProgramInfo</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> | 
 |  | 
 | <!-- 23-Dec-2013, rev. 19 --> | 
 | </refentry> | 
 |  |