cl image format/1.0

提供: Tommy6
移動: 案内検索
OpenCL > OpenCLマニュアル > OpenCLランタイム > OpenCLランタイムAPI > メモリオブジェクト > cl image format/1.0
OpenCL > OpenCL 1.0 > OpenCLマニュアル/1.0 > OpenCLランタイム/1.0 > OpenCLランタイムAPI/1.0 > メモリオブジェクト/1.0 > cl image format/1.0

イメージの形式を記述する構造体は次の通り定義されています。

typedef struct _cl_image_format {
    cl_channel_order    image_channel_order;
    cl_channel_type     image_channel_data_type
} cl_image_format;

image_channel_order は、チャンネル数とチャンネルの配置、つまりイメージ内に保存されるチャンネルのメモリ配置を指定します。有効な値は以下の通りです。

image_channel_order に指定できる列挙型値
CL_R, CL_A
CL_INTENSITY この形式は、チャンネルデータ型が CL_UNORM_INT8CL_UNORM_INT16CL_SNORM_INT8CL_SNORM_INT16CL_HALF_FLOATCL_FLOAT である時のみ使用できます。
CL_LUMINANCE この形式は、チャンネルデータ型が CL_UNORM_INT8CL_UNORM_INT16CL_SNORM_INT8CL_SNORM_INT16CL_HALF_FLOATCL_FLOAT である時のみ使用できます。
CL_RG, CL_RA
CL_RGB この形式は、チャンネルデータ型が CL_UNORM_SHORT_565CL_UNORM_SHORT_555CL_UNORM_INT_101010 である時のみ使用できます。
CL_RGBA
CL_ARGB, CL_BGRA この形式は、チャンネルデータ型が CL_UNORM_INT8CL_SNORM_INT8CL_SIGNED_INT8CL_UNSIGNED_INT8 である時のみ使用できます。

image_channel_data_type は、チャンネルのデータ型を指定します。サポートされている値は以下の通りです。image_channel_data_typeimage_channel_order で定められる要素ごとのビット数は、2のべきでなければなりません。

画像チャンネルデータ型 解説
CL_SNORM_INT8 各チャンネル要素は、正規化符号付8ビット整数値です。
CL_SNORM_INT16 各チャンネル要素は、正規化符号付16ビット整数値です。
CL_UNORM_INT8 各チャンネル要素は、正規化符号無8ビット整数値です。
CL_UNORM_INT16 各チャンネル要素は、正規化符号無16ビット整数値です。
CL_UNORM_SHORT_565 正規化5-6-5 3チャンネルRGBイメージです。チャンネル配置は、CL_RGB でなければなりません。
CL_UNORM_SHORT_555 正規化x-5-5-5 4チャンネルxRGBイメージです。チャンネル配置は、CL_RGB でなければなりません。
CL_UNORM_INT_101010 正規化x-10-10-10 4チャンネルxRGBイメージです。チャンネル配置は、CL_RGB でなければなりません。
CL_SIGNED_INT8 各チャンネル要素は、非正規化符号付8ビット整数値です。
CL_SIGNED_INT16 各チャンネル要素は、非正規化符号付16ビット整数値です。
CL_SIGNED_INT32 各チャンネル要素は、非正規化符号付32ビット整数値です。
CL_UNSIGNED_INT8 各チャンネル要素は、非正規化符号無8ビット整数値です。
CL_UNSIGNED_INT16 各チャンネル要素は、非正規化符号無16ビット整数値です。
CL_UNSIGNED_INT32 各チャンネル要素は、非正規化符号無32ビット整数値です。
CL_HALF_FLOAT 各チャンネル要素は、16ビット半精度浮動小数点値です。
CL_FLOAT 各チャンネル要素は、単精度浮動小数点値です。

例えば、各チャンネルが正規化符号無8ビットのRGBAイメージを指定する時、image_channel_order = CL_RGBAimage_channel_data_type = CL_UNORM_INT8 とします。このイメージ形式のメモリ配置は下図の通りです。

Opencl-spec image-channel-format desc 1.png

同様に、image_channel_order = CL_RGBAimage_channel_data_type = CL_SIGNED_INT16 とすると、イメージ形式のメモリ配置は下図の通りになります。

Opencl-spec image-channel-format desc 2.png

image_channel_data_type の値のうち、CL_UNORM_SHORT_565CL_UNORM_SHORT_555CL_UNORM_INT_101010 は特別なイメージ形式であり、各チャンネル要素が unsigned short もしくは unsigned int 型に詰められているものです。このような特別なイメージ形式では、最初のチャンネルがビットフィールド内の最上位ビットになるように詰められ、次のチャンネルは占有するビット領域が連続になるようにすぐ下のビット領域に詰められます。CL_UNORM_SHORT_565 では、R が15から11ビット、G が10から5ビット、B が4から0ビットに詰められます。CL_UNORM_SHORT_555 では、15ビット目は未定義となり、R が14から10ビット、G が9から5ビット、B が4から0ビットに詰められます。CL_UNORM_INT_101010 では、31から30ビットは未定義となり、R が29から20ビット、G が19から10ビット、B が9から0ビットに詰められます。

OpenCL実装は、image_channel_data_type で指定されたビット数を最低限の精度として維持しなければなりません。image_channel_order および image_channel_data_type で指定されたイメージ形式をOpenCL実装がサポートしていないとき、clCreateImage2DclCreateImage3D は NULL メモリオブジェクトを返します。

変更記録

脚注



―――― Version 1.0, The OpenCL Specification より翻訳