blob: 0a1879f9d6f15c5a3b9214cefd2d082022feec18 [file] [log] [blame]
<?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.79.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 class="informaltable" 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 class="informaltable" 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_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_byte_addressable_store.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_byte_addressable_store</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_context_abort.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_context_abort</span>
</span>
</a>
</td>
<td align="left"> </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_depth_images.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_depth_images</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_device_enqueue_local_arg_types.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_device_enqueue_local_arg_types</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</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_egl_event.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_event</span></span></a></td>
<td align="left">Create OpenCL event objects linked to EGL fence sync objects</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_egl_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_egl_image</span></span></a></td>
<td align="left">Create derived resources from EGLImages</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">
<a class="citerefentry" href="cl_khr_fp64.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_fp64</span>
</span>
</a>
</td>
<td align="left">Dobule-precision floating-point</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_gl_depth_images.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_gl_depth_images</span>
</span>
</a>
</td>
<td align="left">GL depth or depth-stencil compatibility</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_gl_msaa_sharing.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_gl_msaa_sharing</span>
</span>
</a>
</td>
<td align="left">GL multi-sampled (MSAA) compatibility</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_global_int32_base_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_global_int32_base_atomics</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_global_int32_extended_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_global_int32_extended_atomics</span>
</span>
</a>
</td>
<td align="left"> </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>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_il_program.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_il_program</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_image2d_from_buffer.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_image2d_from_buffer</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_initialize_memory.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_initialize_memory</span></span></a></td>
<td align="left">Initialize local or private memory</td>
</tr>
<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_local_int32_base_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_local_int32_base_atomics</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_local_int32_extended_atomics.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_local_int32_extended_atomics</span>
</span>
</a>
</td>
<td align="left"> </td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_mipmap_image.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_mipmap_image</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_mipmap_image.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_mipmap_image_writes</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_priority_hints.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_priority_hints</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_spir.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_spir</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_srgb_image_writes.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_srgb_image_writes</span>
</span>
</a>
</td>
<td align="left">For writing to sRGB images</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_subgroups.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_subgroups</span>
</span>
</a>
</td>
<td align="left">Implementation-controlled subgroups</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_terminate_context.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_terminate_context</span>
</span>
</a>
</td>
<td align="left">Termiate an OpenCL context on a device</td>
</tr>
<tr>
<td align="left">
<a class="citerefentry" href="cl_khr_throttle_hints.html">
<span class="citerefentry">
<span class="refentrytitle">cl_khr_throttle_hints</span>
</span>
</a>
</td>
<td align="left">Standard Portable Intermediate Representation (SPIR) support</td>
</tr>
<tr>
<td align="left">cles_khr_int64</td>
<td align="left"> </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 class="informaltable" 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">
Behave as specified by the extension <code class="varname">extension_name</code>.
Report an error on the <code class="function">#pragma OPENCL EXTENSION</code>
if the <code class="varname">extension_name</code> is not supported, or if
<code class="function">all</code> is specified.
</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 2.1.
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 <code class="code">KHR</code> 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 class="informaltable" 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="https://www.khronos.org/registry/cl/specs/opencl-2.1-extensions.pdf#namedest=EXTENSION" target="OpenCL Spec">OpenCL Specification</a>
</p>
</div>
<div class="refsect1">
<a id="seealso"></a>
<h2>Also see</h2>
<p>
<a class="citerefentry" href="clGetExtensionFunctionAddressForPlatform.html"><span class="citerefentry"><span class="refentrytitle">clGetExtensionFunctionAddressForPlatform</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-2015 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>