## Description

The following table describes the list of additional data types supported by OpenCL.

 Type Description image2d_t A 2D image6. image3d_t A 3D image6. image2d_array_t A 2D image array6. image1d_t A 1D image6. image1d_buffer_t A 1D image created from a buffer object6. image1d_array_t A 1D image array6. image2d_depth_t A 2D depth image6. image2d_array_depth_t A 2D depth image array6. sampler_t A sampler type6. queue_t A device command queue. This queue can only be used to enqueue commands from kernels executing on the device. ndrange_t The N-dimensional range over which a kernel executes. clk_event_t A device side event that identifies a command enqueue to a device command queue. reserve_id_t A reservation ID. This opaque type is used to identify the reservation for reading and writing a pipe. event_t An event. This can be used to identify async copies from global to local memory and vice-versa. cl_mem_fence_flags This is a bitfield and can be 0 or a combination of the following values ORed together: CLK_GLOBAL_MEM_FENCE CLK_LOCAL_MEM_FENCE CLK_IMAGE_MEM_FENCE These flags are described in detail in the synchronization functions section.

[6] Refer to the detailed description of the built-in functions that use this type.

 The image2d_t, image3d_t, image2d_array_t, image1d_t, image1d_buffer_t, image1d_array_t, image2d_depth_t, image2d_array_depth_t and sampler_t types are only defined if the device supports images, i.e. the value of the CL_DEVICE_IMAGE_SUPPORT device query) is CL_TRUE.

The C99 derived types (arrays, structs, unions, functions, and pointers), constructed from the built-in scalar, vector, and other data types are supported, with specified restrictions.

The following tables describe the other built-in data types in OpenCL described in https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_C.html#table-other-builtin-types and the corresponding data type available to the application:

 Type in OpenCL C API type for application queue_t cl_command_queue clk_event_t cl_event