C Specification
To create a new buffer object (referred to as a sub-buffer object) from an existing buffer object, call the function
// Provided by CL_VERSION_1_1
cl_mem clCreateSubBuffer(
cl_mem buffer,
cl_mem_flags flags,
cl_buffer_create_type buffer_create_type,
const void* buffer_create_info,
cl_int* errcode_ret);
| clCreateSubBuffer is missing before version 1.1. |
Parameters
-
buffer must be a valid buffer object and cannot be a sub-buffer object.
-
flags is a bit-field that is used to specify allocation and usage information about the sub-buffer memory object being created and is described in the Memory Flags table. If the
CL_MEM_,READ_ WRITE CL_MEM_,READ_ ONLY CL_MEM_, orIMMUTABLE_ EXT CL_MEM_values are not specified in flags, they are inherited from the corresponding memory access qualifiers associated with buffer. TheWRITE_ ONLY CL_MEM_,USE_ HOST_ PTR CL_MEM_, andALLOC_ HOST_ PTR CL_MEM_values cannot be specified in flags but are inherited from the corresponding memory access qualifiers associated with buffer. IfCOPY_ HOST_ PTR CL_MEM_is specified in the memory access qualifier values associated with buffer it does not imply any additional copies when the sub-buffer is created from buffer. If theCOPY_ HOST_ PTR CL_MEM_,HOST_ WRITE_ ONLY CL_MEM_, orHOST_ READ_ ONLY CL_MEM_values are not specified in flags, they are inherited from the corresponding memory access qualifiers associated with buffer.HOST_ NO_ ACCESS -
buffer_create_type and buffer_create_info describe the type of buffer object to be created. The list of supported values for buffer_create_type and corresponding descriptor that buffer_create_info points to is described in the SubBuffer Attributes table.
Description
| Buffer Creation Type | Description |
|---|---|
missing before version 1.1. |
Create a buffer object that represents a specific region in buffer. buffer_create_info is a pointer to a If buffer is created with The buffer object returned references the data store allocated for buffer and points to the region specified by buffer_create_info in this data store. |
clCreateSubBuffer returns CL_SUCCESS if the function is executed
successfully.
Otherwise, it returns one of the following errors in errcode_ret:
-
CL_INVALID_MEM_ OBJECT -
if buffer is not a valid buffer object
-
if buffer is a sub-buffer object
-
-
CL_INVALID_VALUE -
if buffer was created with
CL_MEM_and flags specifiesWRITE_ ONLY CL_MEM_orREAD_ WRITE CL_MEM_READ_ ONLY -
if buffer was created with
CL_MEM_and flags specifiesREAD_ ONLY CL_MEM_orREAD_ WRITE CL_MEM_WRITE_ ONLY -
if buffer was created with
CL_MEM_and flags specifyHOST_ WRITE_ ONLY CL_MEM_HOST_ READ_ ONLY -
if buffer was created with
CL_MEM_and flags specifyHOST_ READ_ ONLY CL_MEM_HOST_ WRITE_ ONLY -
if buffer was created with
CL_MEM_and flags specifyHOST_ NO_ ACCESS CL_MEM_orHOST_ READ_ ONLY CL_MEM_HOST_ WRITE_ ONLY -
if buffer was created with
CL_MEM_and flags specifiesIMMUTABLE_ EXT CL_MEM_,READ_ WRITE CL_MEM_, orWRITE_ ONLY CL_MEM_HOST_ WRITE_ ONLY -
if flags specifies
CL_MEM_orUSE_ HOST_ PTR CL_MEM_orALLOC_ HOST_ PTR CL_MEM_COPY_ HOST_ PTR -
if the value specified in buffer_create_type is not valid
-
if buffer_create_info is
NULL -
if a value specified in buffer_create_info for a given buffer_create_type is not valid
-
if the region specified by the
cl_buffer_structure passed in buffer_create_info is out of bounds in bufferregion
-
-
CL_INVALID_BUFFER_ SIZE -
if the size field of the
cl_buffer_structure passed in buffer_create_info is zeroregion
-
-
CL_MISALIGNED_SUB_ BUFFER_ OFFSET -
if there are no devices in context associated with buffer for which the origin field of the
cl_buffer_structure passed in buffer_create_info is aligned to theregion CL_DEVICE_value. This error code is missing before version 1.1.MEM_ BASE_ ADDR_ ALIGN
-
-
CL_MEM_OBJECT_ ALLOCATION_ FAILURE -
if there is a failure to allocate memory for the data store associated with the sub-buffer object
-
-
CL_OUT_OF_ RESOURCES -
if there is a failure to allocate resources required by the OpenCL implementation on the device
-
-
CL_OUT_OF_ HOST_ MEMORY -
if there is a failure to allocate resources required by the OpenCL implementation on the host
-
|
Concurrent reading from, writing to and copying between both a buffer object and its sub-buffer object(s) is undefined. Concurrent reading from, writing to and copying between overlapping sub-buffer objects created with the same buffer object is undefined. Only reading from both a buffer object and its sub-buffer objects or reading from multiple overlapping sub-buffer objects is defined. |
Document Notes
For more information, see the OpenCL Specification
This page is extracted from the OpenCL Specification. Fixes and changes should be made to the Specification, not directly.