Creates a buffer object (referred to as a sub-buffer object) from an existing buffer object.
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) |
buffer
A valid object. Cannot be a sub-buffer object.
flags
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 flags:
| cl_mem_flags | Description |
|---|---|
CL_MEM_READ_WRITE
|
This flag specifies that the memory object will be read and written by a kernel. This is the default. |
CL_MEM_WRITE_ONLY
|
This flags specifies that the memory object will be written but not read by a kernel. Reading from a buffer or image object created with
|
CL_MEM_READ_ONLY
|
This flag specifies that the memory object is a read-only memory object when used inside a kernel. Writing to a buffer or image object created with
|
CL_MEM_USE_HOST_PTR
|
This flag is valid only if OpenCL implementations are allowed to cache the buffer
contents pointed to by The result of OpenCL commands that operate on multiple
buffer objects created with the same |
CL_MEM_ALLOC_HOST_PTR
|
This flag specifies that the application wants the OpenCL implementation to allocate memory from host accessible memory.
|
CL_MEM_COPY_HOST_PTR
|
This flag is valid only if
|
buffer_create_type and buffer_create_info
The type of buffer object to be created. The supported value for buffer_create_type is CL_BUFFER_CREATE_TYPE_REGION, which create a buffer object that represents a specific region in buffer. buffer_create_info is a pointer to the following structure:
typedef struct _cl_buffer_region {
size_t origin;
size_t size;
} cl_buffer_region;
(origin, size) defines the offset and size in bytes in buffer.
If buffer is created with CL_MEM_USE_HOST_PTR, the host_ptr associated with the buffer object returned is host_ptr + origin.
The buffer object returned references the data store allocated for buffer and points to a specific region given by (origin, size) in this data store.
CL_INVALID_VALUE is returned in errcode_ret if the region specified by (origin, size) is out of bounds in buffer.
CL_MISALIGNED_SUB_BUFFER_OFFSET is returned in errcode_ret if there are no devices in context associated with buffer for which the origin value is aligned to the CL_DEVICE_MEM_BASE_ADDR_ALIGN value.
errcode_ret
Returns an appropriate error code. If errcode_ret is NULL, no error code is returned.
The implementation may return the same cl_mem object with the reference count incremented
appropriately for multiple calls to clCreateSubBuffer that use the same values for buffer, flags, buffer_create_type and buffer_create_info points to the same descriptor or descriptors that
describe values that are exactly the same.
The result of OpenCL commands that read from and write to multiple sub-buffer objects created
using clCreateSubBuffer 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 clCreateSubBuffer with the same buffer object
is undefined. OpenCL commands that only read from multiple sub-buffer objects created using
clCreateSubBuffer 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.
Returns a valid non-zero buffer object and errcode_ret is set to CL_SUCCESS if
the buffer object is created successfully. Otherwise, it returns one of the following error in errcode_ret:
buffer is not a valid buffer object or is a sub-buffer object.
flags are not valid; or if value specified in buffer_create_type is not valid; or if value(s) specified in buffer_create_info (for a given buffer_create_type) is not valid or if buffer_create_info is NULL.
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.