C Specification
A 2D image object can be created using the following function
// Provided by CL_VERSION_1_0
cl_mem clCreateImage2D(
cl_context context,
cl_mem_flags flags,
const cl_image_format* image_format,
size_t image_width,
size_t image_height,
size_t image_row_pitch,
void* host_ptr,
cl_int* errcode_ret);
| clCreateImage2D is deprecated by version 1.2. |
Parameters
-
context is a valid OpenCL context on which the image object is to be created.
-
flags is a bit-field that is used to specify allocation and usage information about the image memory object being created and is described in the supported memory flag values table. If the value specified for flags is 0, the default is used which is
CL_MEM_.READ_ WRITE -
image_format is a pointer to a structure that describes format properties of the image to be allocated. Refer to the Image Format Descriptor section for a detailed description of the image format descriptor.
-
image_width and image_height are the width and height of the image in pixels. These must be values greater than or equal to 1.
-
image_row_pitch is the scan-line pitch in bytes. This must be 0 if host_ptr is
NULLand can be either 0 or ≥ image_width × size of element in bytes if host_ptr is notNULL. If host_ptr is notNULLand image_row_pitch is 0, image_row_pitch is calculated as image_width × size of element in bytes. If image_row_pitch is not 0, it must be a multiple of the image element size in bytes. -
host_ptr is a pointer to the image data that may already be allocated by the application. Refer to the
CL_MEM_entry in the required host_ptr buffer size table for a description of how large the buffer that host_ptr points to must be. The image data specified by host_ptr is stored as a linear sequence of adjacent scanlines. Each scanline is a linear sequence of image elements. Image elements are stored according to their image format as described in the Image Format Descriptor section.OBJECT_ IMAGE2D -
errcode_ret will return an appropriate error code. If errcode_ret is
NULL, no error code is returned.
Description
If CL_MEM_ is set in flags, the image created is
an immutable memory object that cannot be modified by the implementation
after creation, and CL_MEM_ or CL_MEM_ must be set
in flags.
clCreateImage2D returns a valid non-zero image object created and the
errcode_ret is set to CL_SUCCESS if the image object is created
successfully.
Otherwise, it returns a NULL value with one of the following error values
returned in errcode_ret:
-
CL_INVALID_if context is not a valid context.CONTEXT -
CL_INVALID_if values specified in flags are not valid.VALUE -
CL_INVALID_if values specified in image_format are not valid or if image_format isIMAGE_ FORMAT_ DESCRIPTOR NULL. -
CL_INVALID_if image_width or image_height are 0 or if they exceed the maximum values specified inIMAGE_ SIZE CL_DEVICE_orIMAGE2D_ MAX_ WIDTH CL_DEVICE_respectively for all devices in context or if values specified by image_row_pitch do not follow rules described in the argument description above.IMAGE2D_ MAX_ HEIGHT -
CL_INVALID_if host_ptr isHOST_ PTR NULLandCL_MEM_orUSE_ HOST_ PTR CL_MEM_are set in flags or if host_ptr is notCOPY_ HOST_ PTR NULLbutCL_MEM_orCOPY_ HOST_ PTR CL_MEM_are not set in flags.USE_ HOST_ PTR -
CL_IMAGE_if there are no devices in context that support image_format.FORMAT_ NOT_ SUPPORTED -
CL_MEM_if there is a failure to allocate memory for image object.OBJECT_ ALLOCATION_ FAILURE -
CL_INVALID_if there are no devices in context that support images (i.e.OPERATION CL_DEVICE_specified in the Device Queries table isIMAGE_ SUPPORT CL_FALSE). -
CL_OUT_if there is a failure to allocate resources required by the OpenCL implementation on the device.OF_ RESOURCES -
CL_OUT_if there is a failure to allocate resources required by the OpenCL implementation on the host.OF_ HOST_ MEMORY -
CL_INVALID_ifVALUE CL_MEM_is set in flags and neitherIMMUTABLE_ EXT CL_MEM_norCOPY_ HOST_ PTR CL_MEM_is set in flags.USE_ HOST_ PTR
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.