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

    <refmeta>                                    
        <refentrytitle>cl_image_format</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</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>2</manvolnum>
    </refmeta>

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

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

        <refpurpose>The image format descriptor structure is defined as: </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>typedef struct _cl_image_format {
          cl_channel_order image_channel_order;
          cl_channel_type image_channel_data_type;
} cl_image_format;</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
	
	
	

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

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

<!-- ================================ PARAMETER TABLE (OPTIONAL) -->		
        <varlistentry>
            <term>image_channel_order</term>
            <listitem>
			Specifies the number of channels and the channel layout i.e. the
memory layout in which channels are stored in the image. Valid values are described in the table below.

				<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>Format</entry>
		<entry>Description</entry>
		</row>
	</thead>
	<tbody>
		<row>
			<entry>CL_R, or CL_A</entry>
			<entry></entry>
		</row>
		<row>
			<entry>CL_INTENSITY</entry>
			<entry>This format can only be used if channel data type = CL_UNORM_INT8, CL_UNORM_INT16, CL_SNORM_INT8, CL_SNORM_INT16,
CL_HALF_FLOAT, or CL_FLOAT.</entry>
		</row>
		
		<row>
			<entry>CL_LUMINANCE</entry>
			<entry>This format can only be used if channel data type = CL_UNORM_INT8, CL_UNORM_INT16, CL_SNORM_INT8, CL_SNORM_INT16,
CL_HALF_FLOAT, or CL_FLOAT.</entry>
		</row>
		<row>
			<entry>CL_RG, or CL_RA</entry>
			<entry></entry>
		</row>
		<row>
			<entry>CL_RGB</entry>
			<entry>This format can only be used if channel data type = CL_UNORM_SHORT_565, CL_UNORM_SHORT_555 or CL_UNORM_INT101010.</entry>
		</row>
		<row>
			<entry>CL_RGBA</entry>
			<entry> </entry>
		</row>
		
		<row>
			<entry>CL_ARGB, CL_BGRA.</entry>
			<entry>This format can only be used if channel data type = CL_UNORM_INT8, CL_SNORM_INT8, CL_SIGNED_INT8 or CL_UNSIGNED_INT8.</entry>
		</row>
	</tbody>	
		
	</tgroup></informaltable>
		<para>
		 
	</para>
            </listitem>
        </varlistentry>
<!-- ================================ END PARAMETER TABLE  -->			

<!-- ================================ PARAMETER TABLE (OPTIONAL) -->		
        <varlistentry>
            <term>image_channel_data_type</term>
            <listitem>
			Describes the size of the channel data type. The number of bits per element determined by the
<structfield>image_channel_data_type</structfield> and <structfield>image_channel_order</structfield> must be a power of two. The list of supported values is described in the table below.

				<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>Image Channel Data Type</entry>
		<entry>Description</entry>
		</row>
	</thead>
	<tbody>
		<row>
			<entry>CL_SNORM_INT8</entry>
			<entry>Each channel component is a normalized signed 8-bit integer value.</entry>
		</row>
		
		<row>
			<entry>CL_SNORM_INT16</entry>
			<entry>Each channel component is a normalized signed 16-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNORM_INT8</entry>
			<entry>Each channel component is a normalized unsigned 8-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNORM_INT16</entry>
			<entry>Each channel component is a normalized unsigned 16-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNORM_SHORT_565</entry>
			<entry>Represents a normalized 5-6-5 3-channel RGB image. The channel order must be CL_RGB.</entry>
		</row>
		<row>
			<entry>CL_UNORM_SHORT_555</entry>
			<entry>Represents a normalized x-5-5-5 4-channel xRGB image. The channel order must be CL_RGB.</entry>
		</row>
		<row>
			<entry>CL_UNORM_INT_101010</entry>
			<entry>Represents a normalized x-10-10-10 4-channel xRGB image. The channel order must be CL_RGB.</entry>
		</row>
		<row>
			<entry>CL_SIGNED_INT8</entry>
			<entry>Each channel component is an unnormalized signed 8-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_SIGNED_INT16</entry>
			<entry>Each channel component is an unnormalized signed 16-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_SIGNED_INT32</entry>
			<entry>Each channel component is an unnormalized signed 32-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNSIGNED_INT8</entry>
			<entry>Each channel component is an unnormalized unsigned 8-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNSIGNED_INT16</entry>
			<entry>Each channel component is an unnormalized unsigned 16-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_UNSIGNED_INT32</entry>
			<entry>Each channel component is an unnormalized unsigned 32-bit integer value.</entry>
		</row>
		<row>
			<entry>CL_HALF_FLOAT</entry>
			<entry>Each channel component is a 16-bit half-float value.</entry>
		</row>
		<row>
			<entry>CL_FLOAT</entry>
			<entry>Each channel component is a single precision floating-point value.</entry>
		</row>
	</tbody>	
		
	</tgroup></informaltable>	
			<para>
		 
	</para>
            </listitem>
        </varlistentry>
<!-- ================================ END PARAMETER TABLE  -->	

        </variablelist>
    </refsect1>
	
	
<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
<para>
The following example shows how to specify a normalized unsigned 8-bit / channel RGBA image:</para>
<literallayout>          image_channel_order = CL_RGBA
          image_channel_data_type = CL_UNORM_INT8
</literallayout>
<para>
<constant>image_channel_data_type</constant> values of CL_UNORM_SHORT_565,
CL_UNORM_SHORT_555 and CL_UNORM_INT_101010 are special cases of packed image
formats where the channels of each element are packed into a single unsigned short or unsigned
int. For these special packed image formats, the channels are normally packed with the first
channel in the most significant bits of the bitfield, and successive channels occupying
progressively less significant locations. For CL_UNORM_SHORT_565, R is in bits 15:11, G is
in bits 10:5 and B is in bits 4:0. For CL_UNORM_SHORT_555, bit 15 is undefined, R is in
bits 14:10, G in bits 9:5 and B in bits 4:0. For CL_UNORM_INT_101010, bits 31:30 are
undefined, R is in bits 29:20, G in bits 19:10 and B in bits 9:0.
</para>
<para>
OpenCL implementations must maintain the minimum precision specified by the number of bits in <constant>image_channel_data_type</constant>. If the image format specified by
<constant>image_channel_order</constant>, and <constant>image_channel_data_type</constant> cannot be supported by the
OpenCL implementation, then the call to <citerefentry><refentrytitle>clCreateImage2D</refentrytitle></citerefentry> or <citerefentry><refentrytitle>clCreateImage3D</refentrytitle></citerefentry> will return a NULL memory object.
</para>

    </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>
                              <!-- Links to the 'Image Format Descriptor' sec of spec -->
            <olink uri="cl_image_format">OpenCL Specification</olink>
        </para>
    </refsect1>


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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>EXTENSION</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clGetSupportedImageFormats</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clCreateImage2D</refentrytitle></citerefentry>, 
			<citerefentry><refentrytitle>clCreateImage3D</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>

</refentry>

