cl_mem clCreateBuffer
(
| cl_context context, |
cl_mem_flags flags, | |
size_t size, | |
void *host_ptr, | |
cl_int *errcode_ret) |
context
A valid OpenCL context used to create the buffer object.
flags
A bit-field that is used to specify
allocation and usage information such as the memory arena that should be
used to allocate the buffer object and how it will be used. The following
table describes the possible values for flags
. If
value specified for flags
is 0, the default is used
which is CL_MEM_READ_WRITE
.
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 flag 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
Refer to the description
of the alignment rules for
|
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
|
CL_MEM_HOST_WRITE_ONLY
|
This flag specifies that the host will only write to the memory object (using OpenCL APIs that enqueue a write or a map for write). This can be used to optimize write access from the host (e.g. enable write-combined allocations for memory objects for devices that communicate with the host over a system bus such as PCIe). |
CL_MEM_HOST_READ_ONLY
|
This flag specifies that the host will only read the memory object (using OpenCL APIs that enqueue a read or a map for read).
|
CL_MEM_HOST_NO_ACCESS
|
This flag specifies that the host will not read or write the memory object.
|
size
The size in bytes of the buffer memory object to be allocated.
host_ptr
A pointer to the buffer data that may
already be allocated by the application. The size of the buffer that
host_ptr
points to must be ≥ size
bytes.
errcode_ret
Returns an appropriate error code. If
errcode_ret
is NULL, no error code is returned.
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 a NULL value with one of the following error
values returned in errcode_ret
:
context
is not
a valid context.
flags
are not valid as defined in the table above.
size
is 0.
Implementations may return CL_INVALID_BUFFER_SIZE
if size
is greater than the CL_DEVICE_MAX_MEM_ALLOC_SIZE
value
specified in the table of allowed values for param_name
for clGetDeviceInfo
for all devices
in context.
host_ptr
is NULL and CL_MEM_USE_HOST_PTR
or
CL_MEM_COPY_HOST_PTR
are set in flags
or if
host_ptr
is not NULL but CL_MEM_COPY_HOST_PTR
or CL_MEM_USE_HOST_PTR
are not set in flags
.
clEnqueueReadBuffer, clEnqueueWriteBuffer, clEnqueueCopyBuffer, clCreateSubBuffer, Cardinality Diagram