clEnqueueWriteImage

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

cl_int clEnqueueWriteImage (cl_command_queue command_queue, cl_mem image, cl_bool blocking_write,                      const size_t origin[3], const size_t region[3],                      size_t input_row_pitch, size_t input_slice_pitch, void *ptr,                      cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event)

-1.1() : OpenCL 1.1で削除

+1.1() : OpenCL 1.1で追加

ホストメモリから2Dもしくは3Dイメージオブジェクトへの書き込みを行うコマンドを挿入します。

パラメータ

command_queue
書き込みコマンドを挿入するコマンドキューを指定します。command_queueimage は同じOpenCLコンテキスト上で作成されたものでなければなりません。
image
有効な2Dもしくは3Dイメージオブジェクトを指定します。
blocking_write
書き込み操作を、ブロッキングで行うのかノンブロッキングで行うのかを指定します。
blocking_writeCL_TRUE を指定すると、OpenCL実装は ptr が参照するデータを複製しコマンドキューに書き込み操作を挿入します。clEnqueueWriteImage が返った後は、アプリケーションは ptr が指すメモリを再利用できます。
blocking_writeCL_FALSE を指定すると、OpenCL実装は ptr を使用してノンブロッキング書き込みを行います。書き込みがノンブロッキングで行われるため、実装はすぐに返ることができます。呼び出しが返った後も、ptr が指すメモリを再利用することはできません。event 引数に返されるイベントオブジェクトを利用し、書き込みコマンドの実行状況を確認できます。書き込みコマンドが完了すると、アプリケーションは ptr が指すメモリを再利用できるようになります。
origin
書き込みを行うイメージ内での (x, y, z) オフセットをピクセルで指定します。image が2Dイメージオブジェクトであるとき、origin[2] で指定する z 値は0でなければなりません。
region
書き込みを行う2Dもしくは3D矩形領域の (width, height, depth) をピクセルで指定します。image が2Dイメージオブジェクトであるとき、region[2] で指定する depth 値は1でなければなりません。
input_row_pitch
各行が使用する長さをバイトで指定します。この値は、画素のバイトサイズ*width 以上でなければなりません。input_row_pitch に0を指定すると、画素のバイトサイズ*width に基づいて適切な長さが計算されます。
input_slice_pitch
書き込みを行う3Dイメージ内の3D領域の各2Dスライスが使用する長さをバイトで指定します。image が2Dイメージオブジェクトである時、この値は0でなければなりません。この値は、input_row_pitch*heigth 以上でなければなりません。input_slice_pitch に0を指定すると、input_row_pitch*height に基づいて適切な長さが計算されます。
ptr
書き込むデータの読み込み元となるホストメモリバッファへのポインタを指定します。
num_events_in_wait_list
event_wait_list で指定したイベントオブジェクトの数を指定します。
event_wait_list
このコマンドが実行される前に完了していなければならないイベントを指定します。event_wait_list が NULL のとき、このコマンドはどのイベントの完了待ちも行いません。event_wait_list が NULL のとき、num_events_in_wait_list は 0 でなければなりません。event_wait_list が NULL ではないとき、event_wait_list が指す各イベントは有効でなければならず、また num_events_in_wait_list は0より大きな値でなければなりません。event_wait_list に指定したイベントは同期点としてふるまいます。event_wait_list 内のイベントと関連付けられたOpenCLコンテキストと command_queue と関連付けられたOpenCLコンテキストは同じでなければなりません。
event
この書き込みコマンドを識別するイベントオブジェクトが返され、コマンド完了の確認やコマンド完了待ちを行えます。event が NULL のとき、アプリケーションはコマンドの状況確認やコマンド完了待ちを行えなくなります。

エラー

実行が成功した場合、clEnqueueWriteImage は CL_SUCCESS を返します。そうでない場合は以下のエラーのうちひとつを返します。

  • CL_INVALID_COMMAND_QUEUE - command_queue が有効なコマンドキューでないとき。
  • CL_INVALID_CONTEXT - command_queue と関連付けられたコンテキストと image と関連付けられたコンテキストが同じでないとき、あるいは command_queue と関連付けられたコンテキストと event_wait_list 内のイベントと関連付けられたコンテキストが同じでないとき。
  • CL_INVALID_MEM_OBJECT - image が有効なイメージオブジェクトでないとき。
  • CL_INVALID_VALUE - originregion で指定した書き込み領域が範囲外のとき。あるいは ptr が NULL のとき。
  • CL_INVALID_VALUE - image が2Dイメージオブジェクトで origin[2] が0でない、あるいは region[2] が1でない、あるいは input_slice_pitch が0でないとき。
  • CL_INVALID_EVENT_WAIT_LIST - event_wait_list が NULL で num_events_in_wait_list が 0 より大きいとき。あるいは event_wait_list が NULL でなく num_events_in_wait_list が 0 のとき。あるいは event_wait_list 内のイベントオブジェクトが有効なものでないとき。
  • +1.1(CL_INVALID_IMAGE_SIZE - image の寸法(幅、高さ、行・スライスの長さ)が command_queue と関連付けられたデバイスでサポートされていないとき。)
  • CL_MEM_OBJECT_ALLOCATION_FAILURE - image と関連付けられたデータ保存領域のためのメモリの確保に失敗したとき。
  • CL_INVALID_OPERATION - command_queue と関連付けられたデバイスがイメージ機能をサポートしていない(clGetDeviceInfo で取得できる CL_DEVICE_IMAGE_SUPPORTCL_FALSE である)とき。
  • +1.1(CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST - 書き込みコマンドがブロッキングで、かつ event_wait_list 内のイベントのいずれかの実行状況が負の整数値のとき。)
  • +1.1(CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。)
  • CL_OUT_OF_HOST_MEMORY - ホスト上でのリソース確保に失敗したとき。

変更記録

脚注



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