インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

イメージ・オブジェクトの作成/破棄関数

インテル® グラフィックス・テクノロジー・ランタイムの内部イメージ・オブジェクトを作成/破棄します。このトピックは、インテル® グラフィックス・テクノロジーをターゲットとする場合にのみ適用されます。

構文

C++ インターフェイス: テンプレートとコンストラクター

template <class T>  class GfxImage2D:
     GfxImage2D(T * ptr, size_t height, size_t width, int format = 0)

template <class T>  class GfxSharedImage2D:
     GfxSharedImage2D(T * ptr, size_t height, size_t width, int format = 0)

C インターフェイス: コンストラクター

GfxResourceHandle _GFX_create_image_2d (void * ptr, size_t element_size, size_t height, size_t width, int format, int flags);

C インターフェイス: デストラクター

int _GFX_close_resource_handle(GfxResourceHandle handle);

パラメーター

ptr

ホストデータ (共有またはコピーされる 2D イメージ) へのポインター

element_size

各要素のサイズ (バイト)。この引数は C バージョンでのみ利用できます。C++ バージョンでは、テンプレートで要素のサイズを指定します。

height

イメージの高さ (行数)

width

イメージの幅 (要素数)

format

イメージのピクセル形式。

format = 0 の場合、ランタイムは指定されたサイズのデータ要素をビット単位で完全に表現できる最適な形式を選択します。

その他の値は、システムのビデオレイヤー (Windows* 8 では DirectX* 11、Windows* 7 では DirectX* 9) に依存します。

flags

イメージ・オブジェクトの追加のプロパティーを示すビット・マスク。次の値がサポートされています。

GFX_MEMORY_GPU_ONLY

イメージはターゲットメモリー上に作成されます。イメージの作成時にホストデータがターゲットにコピーされ、イメージの破棄時にホストにデータがコピーされます。

GFX_MEMORY_SHARED

ホストとターゲット間でイメージが共有されます。そのためコピーは不要です。

handle

_GFX_create_image_2d によって返される内部イメージ・オブジェクトへのハンドル

説明

C++ クラスのコンストラクターまたは C 形式の _GFX_create_image_2d 関数により、インテル® グラフィックス・テクノロジー・ランタイムの内部イメージ・オブジェクトを作成します。

内部イメージ・オブジェクトは、少なくとも次のいずれかの状態になるまで有効です。

つまり、イメージのライフタイム管理はランタイムに任せて、簡潔で直感的なユーザーコードを記述することができます。

GfxSharedImage2D はホストとターゲット間で 2D イメージを共有します。GfxImage2D はターゲット側でのみ 2D イメージを保持します。

2D イメージを共有する場合、ホストとターゲットのメモリーを同期する読み取り/書き込み操作は不要ですが、ターゲット側でタイル化によるメモリーアクセスの最適化は行われません。一方、ターゲットで 2D イメージを保持する場合、ターゲット側では 2D イメージに効率良くアクセスできますが、オフロードタスクの実行前後にデータ転送が発生します。共有イメージ GfxSharedImage2D を使用する場合、ホスト側のメモリーはページ境界 (4096 バイト) でアライメントされていなければなりません。メモリーが適切にアライメントされていないと、ターゲットイメージが作成され、GfxSharedImage2DGfxImage2D のように動作します。

戻り値

以下の戻り値は C バージョンにのみ適用されます。

_GFX_create_image_2d の場合:

NULL

エラーが発生しました。

内部イメージ・オブジェクトへの NULL 以外のハンドル

関数の実行に成功しました。

C++ バージョンの GfxImage2D オブジェクトまたは GfxSharedImage2D オブジェクトは、GfxResourceHandle メンバーのみを持つ C++ 形式のハンドルホルダー GfxImage2DBase から継承されます。

_GFX_close_resource_handle の場合:

GFX_SUCCESS (0)

関数の実行に成功しました。

非ゼロのエラーコード

エラーが発生しました。_GFX_get_last_error() 関数を使用してエラーコードを取得してください。各種エラーステータス値は、gfx_rt.h で定義されています。