<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0; 
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }
		
		.term {
			font: italic 16px verdana, sans-serif;
			font-weight: normal;
		}	
		
		.type {
			font: normal 16px verdana, sans-serif !important;
		}			
		
		.parameter { 
			font-style: italic; 
			}

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
			padding-top: 10px;
			padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }
		
		span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }
		
        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }
		
        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
			margin-top: 10px;
            background-color: #FFF;
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
			font: normal 16px verdana, sans-serif;
        }
		
        div.refsect1 th {
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }
		
        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
			border-collapse: collapse;
			border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }
		
		  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }
		

        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
			white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }
					
</style>
    <title>cl_image_format</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="                            &#10;                cl_image_format&#10;            " />
  </head>
  <body>
    <div class="refentry">
      <a id="idm1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="cl_image_format"></a>
        <h1>cl_image_format</h1>
        <p>The image format descriptor structure is defined as: </p>
      </div>
      <div class="refsect2">
        <a id="synopsis"></a>
        <h3>
        </h3>
        <div class="informaltable">
          <table class="informaltable" border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">typedef struct _cl_image_format {
          cl_channel_order image_channel_order;
          cl_channel_type image_channel_data_type;
} cl_image_format;</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Members</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">image_channel_order</span>
            </dt>
            <dd>
			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.

				<div class="informaltable"><table class="informaltable" border="1"><colgroup><col align="left" class="col1" /><col align="left" class="col2" /></colgroup><thead><tr><th align="left">Format</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">CL_R, or CL_A</td><td align="left"> </td></tr><tr><td align="left">CL_INTENSITY</td><td align="left">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.</td></tr><tr><td align="left">CL_LUMINANCE</td><td align="left">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.</td></tr><tr><td align="left">CL_RG, or CL_RA</td><td align="left"> </td></tr><tr><td align="left">CL_RGB</td><td align="left">This format can only be used if channel data type = CL_UNORM_SHORT_565, CL_UNORM_SHORT_555 or CL_UNORM_INT_101010.</td></tr><tr><td align="left">CL_RGBA</td><td align="left"> </td></tr><tr><td align="left">CL_ARGB, CL_BGRA.</td><td align="left">This format can only be used if channel data type = CL_UNORM_INT8, CL_SNORM_INT8, CL_SIGNED_INT8 or CL_UNSIGNED_INT8.</td></tr></tbody></table></div><p>
		 
	</p></dd>
            <dt>
              <span class="term">image_channel_data_type</span>
            </dt>
            <dd>
			Describes the size of the channel data type. The number of bits per element determined by the
<em class="structfield"><code>image_channel_data_type</code></em> and <em class="structfield"><code>image_channel_order</code></em> must be a power of two. The list of supported values is described in the table below.

				<div class="informaltable"><table class="informaltable" border="1"><colgroup><col align="left" class="col1" /><col align="left" class="col2" /></colgroup><thead><tr><th align="left">Image Channel Data Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">CL_SNORM_INT8</td><td align="left">Each channel component is a normalized signed 8-bit integer value.</td></tr><tr><td align="left">CL_SNORM_INT16</td><td align="left">Each channel component is a normalized signed 16-bit integer value.</td></tr><tr><td align="left">CL_UNORM_INT8</td><td align="left">Each channel component is a normalized unsigned 8-bit integer value.</td></tr><tr><td align="left">CL_UNORM_INT16</td><td align="left">Each channel component is a normalized unsigned 16-bit integer value.</td></tr><tr><td align="left">CL_UNORM_SHORT_565</td><td align="left">Represents a normalized 5-6-5 3-channel RGB image. The channel order must be CL_RGB.</td></tr><tr><td align="left">CL_UNORM_SHORT_555</td><td align="left">Represents a normalized x-5-5-5 4-channel xRGB image. The channel order must be CL_RGB.</td></tr><tr><td align="left">CL_UNORM_INT_101010</td><td align="left">Represents a normalized x-10-10-10 4-channel xRGB image. The channel order must be CL_RGB.</td></tr><tr><td align="left">CL_SIGNED_INT8</td><td align="left">Each channel component is an unnormalized signed 8-bit integer value.</td></tr><tr><td align="left">CL_SIGNED_INT16</td><td align="left">Each channel component is an unnormalized signed 16-bit integer value.</td></tr><tr><td align="left">CL_SIGNED_INT32</td><td align="left">Each channel component is an unnormalized signed 32-bit integer value.</td></tr><tr><td align="left">CL_UNSIGNED_INT8</td><td align="left">Each channel component is an unnormalized unsigned 8-bit integer value.</td></tr><tr><td align="left">CL_UNSIGNED_INT16</td><td align="left">Each channel component is an unnormalized unsigned 16-bit integer value.</td></tr><tr><td align="left">CL_UNSIGNED_INT32</td><td align="left">Each channel component is an unnormalized unsigned 32-bit integer value.</td></tr><tr><td align="left">CL_HALF_FLOAT</td><td align="left">Each channel component is a 16-bit half-float value.</td></tr><tr><td align="left">CL_FLOAT</td><td align="left">Each channel component is a single precision floating-point value.</td></tr></tbody></table></div><p>
		 
	</p></dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
The following example shows how to specify a normalized unsigned 8-bit / channel RGBA image:</p>
        <div class="literallayout">
          <p>          image_channel_order = CL_RGBA<br />
          image_channel_data_type = CL_UNORM_INT8<br />
</p>
        </div>
        <p>
<code class="constant">image_channel_data_type</code> 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.
</p>
        <p>
OpenCL implementations must maintain the minimum precision specified by the number of bits in <code class="constant">image_channel_data_type</code>. If the image format specified by
<code class="constant">image_channel_order</code>, and <code class="constant">image_channel_data_type</code> cannot be supported by the
OpenCL implementation, then the call to <a class="citerefentry" href="clCreateImage2D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage2D</span></span></a> or <a class="citerefentry" href="clCreateImage3D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage3D</span></span></a> will return a NULL memory object.
</p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />
                              
            <a href="http://www.khronos.org/registry/cl/specs/opencl-1.0.pdf#page=62" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="EXTENSION.html"><span class="citerefentry"><span class="refentrytitle">EXTENSION</span></span></a>, 
			<a class="citerefentry" href="clGetSupportedImageFormats.html"><span class="citerefentry"><span class="refentrytitle">clGetSupportedImageFormats</span></span></a>, 
			<a class="citerefentry" href="clCreateImage2D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage2D</span></span></a>, 
			<a class="citerefentry" href="clCreateImage3D.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage3D</span></span></a> 
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2009 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. 
</div>
    </div>
  </body>
</html>
