blob: 364146bc9675d0554a99b334574065f97af34302 [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>clCreateSubBuffer</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
<meta name="keywords" content="clCreateSubBuffer" />
</head>
<body>
<div class="refentry">
<a id="idp26598784"></a>
<div class="titlepage"></div>
<div xmlns="" class="refnamediv">
<a xmlns="http://www.w3.org/1999/xhtml" id="clCreateSubBuffer"></a>
<h1>
clCreateSubBuffer
</h1>
<p>
Creates a buffer object (referred to as a sub-buffer object) from an existing
buffer object.
</p>
</div>
<div class="refsynopsisdiv">
<h2></h2>
<div class="funcsynopsis">
<table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
<tr valign="bottom">
<td>
<code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
<a class="link" href="abstractDataTypes.html" target="_top">cl_mem</a> <strong class="fsfunc">clCreateSubBuffer</strong>
(</code>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="_top">cl_mem</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer</var>, </td>
</td>
</tr>
<tr valign="top">
<td> </td>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_flags" target="_top">cl_mem_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>, </td>
</tr>
<tr valign="top">
<td> </td>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_buffer_create_type" target="_top">cl_buffer_create_type</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">buffer_create_type</var>, </td>
</tr>
<tr valign="top">
<td> </td>
<td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*buffer_create_info</var>, </td>
</tr>
<tr valign="top">
<td> </td>
<td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">cl_int</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*errcode_ret</var><code>)</code></td>
</tr>
</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">buffer</code>
</span>
</dt>
<dd>
<p>A valid object. Cannot be a sub-buffer object.</p>
</dd>
<dt>
<span class="term">
<code class="varname">flags</code>
</span>
</dt>
<dd>
<p>
A bit-field that is used to specify allocation and usage information about the image memory
object being created. The
following table describes the possible values for <code class="varname">flags</code>:
</p>
<div class="informaltable">
<table border="1">
<colgroup>
<col align="left" class="col1" />
<col />
</colgroup>
<thead>
<tr>
<th align="left">cl_mem_flags</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">
<code class="constant">CL_MEM_READ_WRITE</code>
</td>
<td align="left">
This flag specifies that the memory object will be read and
written by a kernel. This is the default.
</td>
</tr>
<tr>
<td align="left">
<code class="constant">CL_MEM_WRITE_ONLY</code>
</td>
<td align="left">
<p>This flags specifies that the memory object will be written
but not read by a kernel.</p>
<p>Reading from a buffer or image object created with
<code class="constant">CL_MEM_WRITE_ONLY</code> inside a kernel is undefined.</p>
</td>
</tr>
<tr>
<td align="left">
<code class="constant">CL_MEM_READ_ONLY</code>
</td>
<td align="left">
<p>This flag specifies that the memory object is a read-only
memory object when used inside a kernel.</p>
<p>Writing to a buffer or image object created with
<code class="constant">CL_MEM_READ_ONLY</code> inside a kernel is undefined.</p>
</td>
</tr>
<tr>
<td align="left">
<code class="constant">CL_MEM_USE_HOST_PTR</code>
</td>
<td align="left">
<p>This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If
specified, it indicates that the application wants the
OpenCL implementation to use memory referenced by
<code class="varname">host_ptr</code> as the storage bits for the memory object.</p>
<p>OpenCL implementations are allowed to cache the buffer
contents pointed to by <code class="varname">host_ptr</code> in device memory. This
cached copy can be used when kernels are executed on a
device.</p>
<p>The result of OpenCL commands that operate on multiple
buffer objects created with the same <code class="varname">host_ptr</code> or
overlapping host regions is considered to be undefined.</p>
</td>
</tr>
<tr>
<td align="left">
<code class="constant">CL_MEM_ALLOC_HOST_PTR</code>
</td>
<td align="left">
<p>This flag specifies that the application wants the OpenCL
implementation to allocate memory from host accessible
memory.</p>
<p>
<code class="constant">CL_MEM_ALLOC_HOST_PTR</code> and
<code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.</p>
</td>
</tr>
<tr>
<td align="left">
<code class="constant">CL_MEM_COPY_HOST_PTR</code>
</td>
<td align="left">
<p>
This flag is valid only if <code class="varname">host_ptr</code> is not NULL. If
specified, it indicates that the application wants the
OpenCL implementation to allocate memory for the
memory object and copy the data from memory referenced
by <code class="varname">host_ptr</code>.
</p>
<p>
<code class="constant">CL_MEM_COPY_HOST_PTR</code> and
<code class="constant">CL_MEM_USE_HOST_PTR</code> are mutually exclusive.
</p>
<p>
<code class="constant">CL_MEM_COPY_HOST_PTR</code> can be used with
<code class="constant">CL_MEM_ALLOC_HOST_PTR</code> to initialize the contents of
the cl_mem object allocated using host-accessible (e.g.
PCIe) memory.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</dd>
<dt>
<span class="term"><code class="varname">buffer_create_type</code> and <code class="varname">buffer_create_info</code></span>
</dt>
<dd>
<p>The type of buffer object to be created. The supported value for <code class="varname">buffer_create_type</code> is CL_BUFFER_CREATE_TYPE_REGION, which create a buffer object that represents a specific region in <code class="varname">buffer</code>. <code class="varname">buffer_create_info</code> is a pointer to the following structure:</p>
<div class="literallayout">
<p><br />
typedef struct _cl_buffer_region {<br />
    size_t origin;<br />
    size_t size;<br />
} cl_buffer_region;<br />
</p>
</div>
<p>(<code class="varname">origin, size</code>) defines the offset and size in bytes in <code class="varname">buffer</code>.</p>
<p>If <code class="varname">buffer</code> is created with CL_MEM_USE_HOST_PTR, the <code class="varname">host_ptr</code> associated with the buffer object returned is <code class="varname">host_ptr</code> + <code class="varname">origin</code>.</p>
<p>The buffer object returned references the data store allocated for <code class="varname">buffer</code> and points to a specific region given by (<code class="varname">origin, size</code>) in this data store.</p>
<p>CL_INVALID_VALUE is returned in <code class="varname">errcode_ret</code> if the region specified by (<code class="varname">origin, size</code>) is out of bounds in <code class="varname">buffer</code>.</p>
<p>CL_MISALIGNED_SUB_BUFFER_OFFSET is returned in <code class="varname">errcode_ret</code> if there are no devices in context associated with <code class="varname">buffer</code> for which the <code class="varname">origin</code> value is aligned to the CL_DEVICE_MEM_BASE_ADDR_ALIGN value.</p>
</dd>
<dt>
<span class="term">
<code class="varname">errcode_ret</code>
</span>
</dt>
<dd>
<p>
Returns an appropriate error code. If <code class="varname">errcode_ret</code> is NULL, no error code is returned.
</p>
</dd>
</dl>
</div>
</div>
<div class="refsect1">
<a id="notes"></a>
<h2>Notes</h2>
<p>
The implementation may return the same <a class="citerefentry" href="abstractDataTypes.html"><span class="citerefentry"><span class="refentrytitle">cl_mem</span></span></a> object with the reference count incremented
appropriately for multiple calls to <code class="function">clCreateSubBuffer</code> that use the same values for <code class="varname">buffer</code>, <code class="varname">flags</code>, <code class="varname">buffer_create_type</code> and <code class="varname">buffer_create_info</code> points to the same descriptor or descriptors that
describe values that are exactly the same.
</p>
<p>
The result of OpenCL commands that read from and write to multiple sub-buffer objects created
using <code class="function">clCreateSubBuffer</code> with the same buffer object but represent overlapping regions in the
buffer object is undefined. The result of OpenCL commands that read from and write to a buffer
object and its sub-buffer object(s) created using <code class="function">clCreateSubBuffer</code> with the same buffer object
is undefined. OpenCL commands that only read from multiple sub-buffer objects created using
<code class="function">clCreateSubBuffer</code> with the same buffer object but represent overlapping regions in the buffer
object or read from a buffer object and its sub-buffer objects should work as defined.
</p>
</div>
<div class="refsect1">
<a id="errors"></a>
<h2>Errors</h2>
<p>
Returns a valid non-zero buffer object and <code class="varname">errcode_ret</code> is set to <span class="errorname">CL_SUCCESS</span> if
the buffer object is created successfully. Otherwise, it returns one of the following error in <code class="varname">errcode_ret</code>:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if <code class="varname">buffer</code> is not a valid buffer object or is a sub-buffer object.
</li>
<li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if values specified in <code class="varname">flags</code> are not valid; or if value specified in <code class="varname">buffer_create_type</code> is not valid; or if value(s) specified in <code class="varname">buffer_create_info</code> (for a given <code class="varname">buffer_create_type</code>) is not valid or if <code class="varname">buffer_create_info</code> is NULL.
</li>
<li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate resources required by the
OpenCL implementation on the device.
</li>
<li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate resources required by the
OpenCL implementation on the host.
</li>
</ul>
</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.1.pdf#page=58" target="OpenCL Spec">OpenCL Specification</a>
</p>
</div>
<div class="refsect1">
<a id="seealso"></a>
<h2>Also see</h2>
<p>
<a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>,
<a class="citerefentry" href="clEnqueueReadBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadBuffer</span></span></a>,
<a class="citerefentry" href="clEnqueueWriteBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteBuffer</span></span></a>,
<a class="citerefentry" href="clEnqueueCopyBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyBuffer</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-2010 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>