<?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-2010</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="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, CL_Rx, 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, CL_RGx, or CL_RA</entry>
            <entry></entry>
        </row>
        <row>
            <entry>CL_RGB or CL_RGBx</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>For example, 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>

