B.44. OpenCL-Cイメージ処理関数

B.44.1. サンプラー

表B.124 表:サンプラの状態

Samplerの状態(state)詳細 
座標<normalized
coords>

x,y,zの座標が正規化
されたか、非正規化され
た値かを指定します。この
状態はリテラル値で以下の
2つのenum値のどちらか
になります。

CLK_NORMALIZED_
COORDS_TRUE
CLK_NORMALIZED_
COORDS_FALSE

read_image
{f|i|ui} を複数回
呼び出すsamplerでは、
<normalized coords>
に同じ値をいれる必要が
あります。
アドレス<addressing
mode>
イメージのアドレスモード
を指定します。例えば範囲
外のイメージ座標の処理方
法です。この状態はリテラ
ル値で以下の5つのenum値
のどちらかになります。

CLK_ADDRESS_
MIRRORED_REPEAT

CLK_ADDRESS_
REPEAT

CLK_ADDRESS_
CLAMP_TO_EDGE

CLK_ADDRESS_
CLAMP

CLK_ADDRESS_
NONE

1次元、2次元のイメージ
アレイでは、アドレスモード
はxまたは(x,y)座標に
適用されます。アレイの添字
を指定する場合は常にCLK_
ADDRESS_CLAMP_TO_EDGE
モードを使います。
フィルター<filter
mode>
フィルターモードを指
定します。この状態はリ
テラル値で以下の2つの
enum値のどちらかになります。

CLK_FILTER_
NEAREST

CLK_FILTER_
LINEAR

B.44.2. イメージ読み込み・書き込み関数

表B.125 表:イメージ読み込み・書き込み関数

関数詳細
float4 read_imagef (image2d_t image,
    sampler_t sampler,
int2 coord)
float4 read_imagef (image2d_t image,
    sampler_t sampler,
float2 coord)
座標(coord.x, coord.y)
を使い2次元イメージオブジェ
クトの要素ルックアップをします。

image_channel_data_
typeがCL_UNORM_INT8
かCL_UNORM_INT16のい
ずれかに指定されて生成
されたイメージオブジェク
トにおいて、[0.0 ... 1.0]
の範囲の浮動小数点の値
を返します。

image_channel_data_
typeがCL_SNORM_INT8か
CL_SNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[-1.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_HALF_FLOATか
CL_FLOATのいずれかに指定
されて生成されたイメージ
オブジェクトにおいて、浮動
小数点の値を返します。

整数の座標を扱う呼び出し
では、フィルターモードが
CLK_FILTER_NEAREST、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_
CLAMP_TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONEの
いずれかに指定している
必要があります。
int4 read_imagei (
    image2d_t image,
    sampler_t sampler,
    int2 coord)
int4 read_imagei (
    image2d_t image,
    sampler_t sampler,
    float2 coord)
uint4 read_imageui (
    image2d_t image,
    sampler_t sampler,
    int2 coord)
uint4 read_imageui (
    image2d_t image,
    sampler_t sampler,
    float2 coord)
座標(coord.x, coord.y)
を使い2次元イメージオブジェ
クトの要素ルックアップをします。

read_imageiは正規化した
符号付き、read_imageui
は符号無しの整数値を返し
ます。各チャンネルは32ビッ
ト整数に保存されます。

read_imageiはimage_
channel_data_typeが

CL_SIGNED_INT8
CL_SIGNED_INT16
CL_SIGNED_INT32

のいずれかに指定されたイメ
ージオブジェクトにたいして
使うことができます。

read_imageuiはimage_
channel_data_typeが

CL_UNSIGNED_INT8
CL_UNSIGNED_INT16
CL_UNSIGNED_INT32

のいずれかに指定されたイメ
ージオブジェクトにたいして
使うことができます。

read_image{i|ui}のコー
ルはCLK_FILTER_NEAREST
のみをサポートします。

整数の座標を扱うread_image
{i|ui}の呼び出しでは、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONEの
いずれかに指定している
必要があります。
float4 read_imagef (
    image3d_t image,
    sampler_t sampler,
    int4 coord )
float4 read_imagef (
    image3d_t image,
    sampler_t sampler,
    float4 coord)
座標(coord.x, coord.y,
coord.z)を使い3次元イメージ
オブジェクトの要素ルックアッ
プをします。coord.wは使わ
れません。

image_channel_data_
typeがCL_UNORM_INT8か
CL_UNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[0.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_SNORM_INT8か
CL_SNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにおい
て、[-1.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_HALF_FLOATか
CL_FLOATのいずれかに指
定されて生成されたイメー
ジオブジェクトにおいて、
浮動小数点の値を返します。

整数の座標を扱う呼び出し
では、フィルターモードが
CLK_FILTER_NEAREST、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定してい
る必要があります。
int4 read_imagei (
    image3d_t image,
    sampler_t sampler,
    int4 coord)
int4 read_imagei (
    image3d_t image,
    sampler_t sampler,
    float4 coord)
uint4 read_imageui (
    image3d_t image,
    sampler_t sampler,
    int4 coord)
uint4 read_imageui (
    image3d_t image,
    sampler_t sampler,
    float4 coord)
座標(coord.x, coord.y,
coord.z)を使い3次元イメー
ジオブジェクトの要素ルック
アップをします。

read_imageiは正規化した
符号付き、read_imageuiは
符号無しの整数値を返します。
各チャンネルは32ビット整数
に保存されます。

read_imageiはimage_
channel_data_typeが

CL_SIGNED_INT8
CL_SIGNED_INT16
CL_SIGNED_INT32

のいずれかに指定された
イメージオブジェクトにた
いして使うことができます。

read_imageuiはimage_
channel_data_typeが

CL_UNSIGNED_INT8
CL_UNSIGNED_INT16
CL_UNSIGNED_INT32

のいずれかに指定されたイメ
ージオブジェクトにたいして
使うことができます。

read_image{i|ui}の
コールは
CLK_FILTER_NEAREST
のみをサポートします。

整数の座標を扱うread_image
{i|ui}の呼び出しでは、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定して
いる必要があります。
float4 read_imagef (
    image2d_array_t image,
    sampler_t sampler,
    int4 coord)
float4 read_imagef (
    image2d_array_t image,
    sampler_t sampler,
    float4 coord)
座標coord.xyを使い、
imageが指定する2次元
イメージアレイのcoord.zで
特定される2次元イメージの
要素ルックアップをします。

image_channel_data_
typeがCL_UNORM_INT8か
CL_UNORM_INT16のいずれか
に指定されて生成されたイ
メージオブジェクトにおいて、
[0.0 ... 1.0]の範囲の浮
動小数点の値を返します。

image_channel_data_
typeがCL_SNORM_INT8か
CL_SNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[-1.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_HALF_FLOAT
かCL_FLOATのいずれかに
指定されて生成されたイ
メージオブジェクトにおい
て、浮動小数点の値を返
します。

整数の座標を扱う呼び出し
では、フィルターモードが
CLK_FILTER_NEAREST、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_
CLAMP_TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定している必要があります。
int4 read_imagei (
    image2d_array_t image,
    sampler_t sampler,
    int4 coord)
int4 read_imagei (
    image2d_array_t image,
    sampler_t sampler,
    float4 coord)
uint4 read_imageui (
    image2d_array_t image,
    sampler_t sampler,
    int4 coord)
uint4 read_imageui (
    image2d_array_t image,
    sampler_t sampler,
    float4 coord)
座標coord.xyを使い、
imageが指定する2次元
イメージアレイのcoord.z
で特定される2次元イメージ
の要素ルックアップをします。

read_imageiは正規化
した符号付き、read_imageui
は符号無しの整数値を返します。
各チャンネルは32ビット整数
に保存されます。

read_imageiはimage_
channel_data_typeが

CL_SIGNED_INT8
CL_SIGNED_INT16
CL_SIGNED_INT32

のいずれかに指定された
イメージオブジェクトにた
いして使うことができます。

read_imageuiはimage_
channel_data_typeが

CL_UNSIGNED_INT8
CL_UNSIGNED_INT16
CL_UNSIGNED_INT32

のいずれかに指定された
イメージオブジェクトにた
いして使うことができます。

read_image{i|ui}の
コールはCLK_FILTER_
NEARESTのみをサポートします。

整数の座標を扱う
read_image{i|ui}の
呼び出しでは、座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定して
いる必要があります。

float4 read_imagef (
    image1d_t image,
    sampler_t sampler,
    int coord)
float4 read_imagef (
    image1d_t image,
    sampler_t sampler,
    float coord)
座標coordを使い1次元
イメージオブジェクトの要
素ルックアップをします。

image_channel_data_
typeがCL_UNORM_INT8か
CL_UNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[0.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_SNORM_INT8か
CL_SNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[-1.0 ... 1.0]の
範囲の浮動小数点の値を
返します。

image_channel_data_
typeがCL_HALF_FLOATか
CL_FLOATのいずれかに指
定されて生成されたイメー
ジオブジェクトにおいて、
浮動小数点の値を返します。

整数の座標を扱う呼び出し
では、フィルターモードが
CLK_FILTER_NEAREST、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定して
いる必要があります。
int4 read_imagei (
    image1d_t image,
    sampler_t sampler,
    int coord)
int4 read_imagei (
    image1d_t image,
    sampler_t sampler,
    float coord)
uint4 read_imageui (
    image1d_t image,
    sampler_t sampler,
    int coord)
uint4 read_imageui (
    image1d_t image,
    sampler_t sampler,
    float coord)
座標coordを使い1次元
イメージオブジェクトの要素
ルックアップをします。

read_imageiは正規化した
符号付き、read_imageui
は符号無しの整数値を返しま
す。各チャンネルは32ビット
整数に保存されます。

read_imageiはimage_
channel_data_typeが

CL_SIGNED_INT8
CL_SIGNED_INT16
CL_SIGNED_INT32

のいずれかに指定された
イメージオブジェクトにたい
して使うことができます。

read_imageuiはimage_
channel_data_typeが

CL_UNSIGNED_INT8
CL_UNSIGNED_INT16
CL_UNSIGNED_INT32

のいずれかに指定された
イメージオブジェクトにたい
して使うことができます。

read_image{i|ui}の
コールは
CLK_FILTER_NEAREST
のみをサポートします。

整数の座標を扱う
read_image{i|ui}
の呼び出しでは、座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定して
いる必要があります。
float4 read_imagef (
    image1d_array_t image,
    sampler_t sampler,
    int2 coord)
float4 read_imagef (
    image1d_array_t image,
    sampler_t sampler,
    float2 coord)
座標coord.xを使い、
imageが指定する1次元
イメージアレイのcoord.y
で特定される1次元イメージ
の要素ルックアップをします。

image_channel_data_
typeがCL_UNORM_INT8か
CL_UNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[0.0 ... 1.0]の
範囲の浮動小数点の値を返
します。

image_channel_data_
typeがCL_SNORM_INT8か
CL_SNORM_INT16のいずれ
かに指定されて生成された
イメージオブジェクトにお
いて、[-1.0 ... 1.0]の
範囲の浮動小数点の値を返します。

image_channel_data_
typeがCL_HALF_FLOATか
CL_FLOATのいずれかに指
定されて生成されたイメー
ジオブジェクトにおいて、
浮動小数点の値を返します。

整数の座標を扱う呼び出し
では、フィルターモードが
CLK_FILTER_NEAREST、
座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定してい
る必要があります。
int4 read_imagei (
    image1d_array_t image,
    sampler_t sampler,
    int2 coord)
int4 read_imagei (
    image1d_array_t image,
    sampler_t sampler,
    float2 coord)
uint4 read_imageui (
    image1d_array_t image,
    sampler_t sampler,
    int2 coord)
uint4 read_imageui (
    image1d_array_t image,
    sampler_t sampler,
    float2 coord)
座標coord.xを使い、image
が指定する1次元イメージア
レイのcoord.yで特定される
1次元イメージの要素ルック
アップをします。

read_imageiは正規化した
符号付き、read_imageuiは
符号無しの整数値を返します。
各チャンネルは32ビット整数
に保存されます。

read_imageiはimage_
channel_data_typeが

CL_SIGNED_INT8
CL_SIGNED_INT16
CL_SIGNED_INT32

のいずれかに指定された
イメージオブジェクトにた
いして使うことができます。

read_imageuiはimage_
channel_data_typeが

CL_UNSIGNED_INT8
CL_UNSIGNED_INT16
CL_UNSIGNED_INT32

のいずれかに指定された
イメージオブジェクトにた
いして使うことができます。

read_image{i|ui}の
コールは
CLK_FILTER_NEAREST
のみをサポートします。

整数の座標を扱うread_
image{i|ui}の呼び出
しでは、座標モードは
CLK_NORMALIZED_
COORDS_FALSE、
アドレスモードは
CLK_ADDRESS_CLAMP_
TO_EDGE,
CLK_ADDRESS_CLAMP、
CLK_ADDRESS_NONE

のいずれかに指定している必要があります。

Copyright 2018-2019, by Masaki Komatsu