<?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>EXTENSION</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="EXTENSION" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="EXTENSION"></a>
        <h1>EXTENSION</h1>
        <p>
            A #pragma directive to set the behavior for OpenCL extensions.
        </p>
      </div>
      <div class="refsect2">
        <a id="synopsis"></a>
        <h3>
        </h3>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
#pragma OPENCL EXTENSION <code class="varname">extension_name</code> : <code class="varname">behavior</code>
#pragma OPENCL EXTENSION all : <code class="varname">behavior</code>
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                    <code class="varname"> 
                        extension_name
                    </code>
                </span>
            </dt>
            <dd>
              <p> 
                        The name of the extension. The <code class="varname">extension_name</code> will have names of
                        the form <code class="function">cl_khr_</code>&lt;<code class="varname">name</code>&gt; for an extension
                        approved by the OpenCL working group and will have names of the form
                        <code class="function">cl_</code>&lt;<code class="varname">vendor_name</code>&gt;_&lt;<code class="varname">name</code>&gt;
                        for vendor extensions. The token <code class="function">all</code> means that the behavior applies
                        to all extensions supported by the compiler. The table below shows the legal values for
                        <code class="varname">extension_name</code>:
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">Extension name</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_int64_base_atomics.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_int64_base_atomics</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">64-bit integer base atomic operations</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_int64_extended_atomics.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_int64_extended_atomics</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">64-bit integer extended atomic operations</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_3d_image_writes.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_3d_image_writes</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">Writes to 3D image objects</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_fp16.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_fp16</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">Half-precision floating-point</td>
                    </tr>
                    <tr>
                      <td align="left">cl_apple_gl_sharing</td>
                      <td align="left">MacOS X OpenGL sharing</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_gl_sharing.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_gl_sharing</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">OpenGL sharing</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <a class="citerefentry" href="cl_khr_gl_event.html">
                          <span class="citerefentry">
                            <span class="refentrytitle">cl_khr_gl_event</span>
                          </span>
                        </a>
                      </td>
                      <td align="left">CL event objects from GL sync objects</td>
                    </tr>
                    <tr>
                      <td align="left">
                                    <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a></td>
                      <td align="left">Sharing memory objects wth Direct3D 10</td>
                    </tr>
                    <tr>
                      <td align="left">
                                    <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a></td>
                      <td align="left">Sharing memory objects wth Direct3D 11</td>
                    </tr>
                    <tr>
                      <td align="left">
                                    <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a></td>
                      <td align="left">Sharing memory objects wth Direct3D 9</td>
                    </tr>
                    <tr>
                      <td align="left">
                                    <a class="citerefentry" href="cl_khr_icd.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_icd</span></span></a></td>
                      <td align="left">Access Khronos OpenCL installable client driver loader (ICD Loader.</td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname"> 
                        behavior
                    </code>
                </span>
            </dt>
            <dd>
              <p> 
                        One of the following values:
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">behavior</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">enable</td>
                      <td align="left"><div class="literallayout"><p>Behave as specified by the extension <code class="varname">extension_name</code>.<br />
<br />
Report an error on the <code class="function">#pragma OPENCL EXTENSION</code> if the<br />
<code class="varname">extension_name</code> is not supported, or if <code class="function">all</code> is specified.</p></div>
</td>
                    </tr>
                    <tr>
                      <td align="left">disable</td>
                      <td align="left">Behave (including issuing errors and warnings) as if the extension
<code class="varname">extension_name</code> is not part of the language definition.

If <code class="function">all</code> is specified, then behavior must revert back to that of the non-extended core version of the language being compiled to.

Warn on the <code class="function">#pragma OPENCL EXTENSION</code> if the extension <code class="varname">extension_name</code> is not supported.
                                    </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          The <code class="function">#pragma OPENCL EXTENSION</code> directive is a simple, low-level
          mechanism to set the behavior for each extension. It does not define policies such
          as which combinations are appropriate; those must be defined elsewhere. The order of
          directives matter in setting the behavior for each extension. Directives that occur
          later override those seen earlier. The <code class="function">all</code> variant sets the
          behavior for all extensions, overriding all previously issued extension directives,
          but only if the <code class="varname">behavior</code> is set to <code class="function">disable</code>.
        </p>
        <p>
          The initial state of the compiler is as if the directive <code class="function">#pragma OPENCL
          EXTENSION all : disable</code> was issued, telling the compiler that all error and
          warning reporting must be done according to this specification, ignoring any extensions.
        </p>
        <p>
          Every extension which affects the OpenCL language semantics, syntax or adds built-in
          functions to the language must create a preprocessor  <code class="code">#define</code> that
          matches the extension name string. This <code class="code">#define</code> would be available in
          the language if and only if the extension is supported on a given implementation.
        </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          This document describes the list of optional features supported by OpenCL 1.2.
          Optional extensions may be supported by some OpenCL devices.  Optional extensions are
          not required to be supported by a conformant OpenCL implementation, but are expected
          to be widely available; they define functionality that is likely to move into the
          required feature set in a future revision of the OpenCL specification
        </p>
        <p>
          OpenCL extensions approved by the OpenCL working group can be promoted to required core
          features in later revisions of OpenCL. When this occurs, the extension specifications
          are merged into the core specification. Functions and enumerants that are part of
          such promoted extensions will have the KHR affix removed. OpenCL implementations of
          such later revisions must also export the name strings of promoted extensions in the
          <code class="constant">CL_PLATFORM_EXTENSIONS</code> or <code class="constant">CL_DEVICE_EXTENSIONS</code>
          string, and support the KHR-affixed versions of functions and enumerants as a
          transition aid.
        </p>
      </div>
      <div class="refsect2">
        <a id="example1"></a>
        <h3>
            Example
        </h3>
        <p>
          An extension which adds the extension string "cl_khr_3d_image_writes" should also add a
          preprocessor <code class="code">#define</code> called <code class="constant">cl_khr_3d_image_writes</code>. A
          kernel can now use this preprocessor <code class="code">#define</code> to do something like the
          following:
        </p>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
#ifdef cl_khr_3d_image_writes
      // do something using the extension
#else
      // do something else or #error!
#endif
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
      </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.2-extensions.pdf#page=6" target="OpenCL Spec">OpenCL Specification</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-2011 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>
