typedef struct _cl_image_format { cl_channel_order image_channel_order; cl_channel_type image_channel_data_type; } cl_image_format; |
Format | Description |
---|---|
CL_R, or CL_A | |
CL_INTENSITY | This format can only be used if channel data type = CL_UNORM_INT8, CL_UNORM_INT16, CL_SNORM_INT8, CL_SNORM_INT16, CL_HALF_FLOAT, or CL_FLOAT. |
CL_LUMINANCE | This format can only be used if channel data type = CL_UNORM_INT8, CL_UNORM_INT16, CL_SNORM_INT8, CL_SNORM_INT16, CL_HALF_FLOAT, or CL_FLOAT. |
CL_RG, or CL_RA | |
CL_RGB | This format can only be used if channel data type = CL_UNORM_SHORT_565, CL_UNORM_SHORT_555 or CL_UNORM_INT_101010. |
CL_RGBA | |
CL_ARGB, CL_BGRA. | This format can only be used if channel data type = CL_UNORM_INT8, CL_SNORM_INT8, CL_SIGNED_INT8 or CL_UNSIGNED_INT8. |
image_channel_data_type
and image_channel_order
must be a power of two. The list of supported values is described in the table below.
Image Channel Data Type | Description |
---|---|
CL_SNORM_INT8 | Each channel component is a normalized signed 8-bit integer value. |
CL_SNORM_INT16 | Each channel component is a normalized signed 16-bit integer value. |
CL_UNORM_INT8 | Each channel component is a normalized unsigned 8-bit integer value. |
CL_UNORM_INT16 | Each channel component is a normalized unsigned 16-bit integer value. |
CL_UNORM_SHORT_565 | Represents a normalized 5-6-5 3-channel RGB image. The channel order must be CL_RGB. |
CL_UNORM_SHORT_555 | Represents a normalized x-5-5-5 4-channel xRGB image. The channel order must be CL_RGB. |
CL_UNORM_INT_101010 | Represents a normalized x-10-10-10 4-channel xRGB image. The channel order must be CL_RGB. |
CL_SIGNED_INT8 | Each channel component is an unnormalized signed 8-bit integer value. |
CL_SIGNED_INT16 | Each channel component is an unnormalized signed 16-bit integer value. |
CL_SIGNED_INT32 | Each channel component is an unnormalized signed 32-bit integer value. |
CL_UNSIGNED_INT8 | Each channel component is an unnormalized unsigned 8-bit integer value. |
CL_UNSIGNED_INT16 | Each channel component is an unnormalized unsigned 16-bit integer value. |
CL_UNSIGNED_INT32 | Each channel component is an unnormalized unsigned 32-bit integer value. |
CL_HALF_FLOAT | Each channel component is a 16-bit half-float value. |
CL_FLOAT | Each channel component is a single precision floating-point value. |
The following example shows how to specify a normalized unsigned 8-bit / channel RGBA image:
image_channel_order = CL_RGBA
image_channel_data_type = CL_UNORM_INT8
image_channel_data_type
values of CL_UNORM_SHORT_565,
CL_UNORM_SHORT_555 and CL_UNORM_INT_101010 are special cases of packed image
formats where the channels of each element are packed into a single unsigned short or unsigned
int. For these special packed image formats, the channels are normally packed with the first
channel in the most significant bits of the bitfield, and successive channels occupying
progressively less significant locations. For CL_UNORM_SHORT_565, R is in bits 15:11, G is
in bits 10:5 and B is in bits 4:0. For CL_UNORM_SHORT_555, bit 15 is undefined, R is in
bits 14:10, G in bits 9:5 and B in bits 4:0. For CL_UNORM_INT_101010, bits 31:30 are
undefined, R is in bits 29:20, G in bits 19:10 and B in bits 9:0.
OpenCL implementations must maintain the minimum precision specified by the number of bits in image_channel_data_type
. If the image format specified by
image_channel_order
, and image_channel_data_type
cannot be supported by the
OpenCL implementation, then the call to clCreateImage2D or clCreateImage3D will return a NULL memory object.