C Specification
The cl_image_ image format descriptor structure describes an image
format, and is defined as:
// Provided by CL_VERSION_1_0
typedef struct cl_image_format {
cl_channel_order image_channel_order;
cl_channel_type image_channel_data_type;
} cl_image_format;
Members
-
image_channel_order specifies the number of channels and the channel layout i.e. the memory layout in which channels are stored in the image. Valid values are described in the Image Channel Order table.
-
image_channel_data_type describes the size of the channel data type. The list of supported values is described in the Image Channel Data Types table. The number of bits per element determined by the
image_channel_data_typeandimage_channel_ordermust be a power of two.
Description
| Image Channel Order | Description |
|---|---|
|
Single channel image formats where the single channel represents a |
missing before version 2.0. Also supported if the |
A single channel image format where the single channel represents a |
|
A single channel image format where the single channel represents a |
|
A single channel image format where the single channel represents an |
|
Two channel image formats.
The first channel always represents a |
missing before version 1.1. |
A two channel image format, where the first channel represents a |
provided by the |
A two channel image format, where the first channel represents
a |
|
A three channel image format, where the three channels represent |
missing before version 1.1. |
A three channel image format, where the first two channels represent |
|
Four channel image formats, where the four channels represent |
missing before version 1.1. |
A four channel image format, where the first three channels represent |
missing before version 2.0. |
A three channel image format, where the three channels represent |
missing before version 2.0. |
Four channel image formats, where the first three channels represent |
missing before version 2.0. |
A four channel image format, where the three channels represent |
| Image Channel Data Type | Description |
|---|---|
|
Each channel component is a normalized signed 8-bit integer value |
|
Each channel component is a normalized signed 16-bit integer value |
|
Each channel component is a normalized unsigned 8-bit integer value |
Also supported if the |
Each channel component is a normalized unsigned 16-bit integer value |
|
Represents a normalized 5-6-5 3-channel RGB image.
The channel order must be |
|
Represents a normalized x-5-5-5 4-channel xRGB image.
The channel order must be |
|
Represents a normalized x-10-10-10 4-channel xRGB image.
The channel order must be |
missing before version 2.1. |
Represents a normalized 10-10-10-2 four-channel RGBA image.
The channel order must be |
|
Each channel component is an unnormalized signed 8-bit integer value |
provided by the |
Represents a normalized 2-10-10-10 four-channel ABGR image.
The channel order must be |
|
Each channel component is an unnormalized signed 16-bit integer value |
|
Each channel component is an unnormalized signed 32-bit integer value |
|
Each channel component is an unnormalized unsigned 8-bit integer value |
|
Each channel component is an unnormalized unsigned 16-bit integer value |
provided by the |
Each channel component is a normalized unsigned 24-bit integer value |
|
Each channel component is an unnormalized unsigned 32-bit integer value |
|
Each channel component is a 16-bit half-float value |
Also supported if the |
Each channel component is a single precision floating-point value |
provided by the |
Each channel component is an unnormalized unsigned 10-bit integer value
stored in bits 15:6 of a 16-bit location.
The channel order must be |
provided by the |
Each channel component is an unnormalized unsigned 12-bit integer value
stored in bits 15:4 of a 16-bit location.
The channel order must be |
provided by the |
Each channel component is an unnormalized unsigned 14-bit integer value
stored in bits 15:2 of a 16-bit location.
The channel order must be |
provided by the |
Each channel component is a normalized unsigned 10-bit integer value
stored in bits 15:6 of a 16-bit location.
The channel order must be |
provided by the |
Each channel component is a normalized unsigned 12-bit integer value
stored in bits 15:4 of a 16-bit location.
The channel order must be |
provided by the |
Each channel component is a normalized unsigned 14-bit integer value
stored in bits 15:2 of a 16-bit location.
The channel order must be |
For example, to specify a normalized unsigned 8-bit / channel RGBA image,
image_channel_order = CL_RGBA, and image_channel_data_type =
CL_UNORM_.
The memory layout of this image format is described below:
R |
G |
B |
A |
… |
with the corresponding byte offsets
0 |
1 |
2 |
3 |
… |
Similar, if image_channel_order = CL_RGBA and image_channel_data_type =
CL_SIGNED_, the memory layout of this image format is described below:
R |
G |
B |
A |
… |
with the corresponding byte offsets
0 |
2 |
4 |
6 |
… |
image_channel_data_type values of CL_UNORM_, CL_UNORM_,
CL_UNORM_, and CL_UNORM_ 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_, R is in bits 15:11, G is in bits 10:5 and B is in
bits 4:0.
For CL_UNORM_, bit 15 is undefined, R is in bits 14:10, G in bits
9:5 and B in bits 4:0.
For CL_UNORM_, bits 31:30 are undefined, R is in bits 29:20, G in
bits 19:10 and B in bits 9:0.
For CL_UNORM_, R is in bits 31:22, G in bits 21:12, B in bits
11:2 and A in bits 1:0.
For CL_UNORM_, A is in bits 31:30, B in bits 29:20, G in bits
19:10 and R 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 clCreateImage, clCreateImageWithProperties,
clCreateImage2D, or clCreateImage3D will return a NULL memory object.
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.