IDMLDevice
COM公式ドキュメント
演算子(オペレーター)、バインディングテーブル、コマンドレコーダー、その他のオブジェクトを作成するために使用される DirectML デバイスを表します。(IDMLDevice)
メソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
DirectML デバイスがサポートするオプション機能や能力に関する情報を取得します。
| feature | DML_FEATURE | in | サポートを照会したい機能を記述する DML_FEATURE 列挙型の定数です。 |
| featureQueryDataSize | DWORD | in | featureQueryData パラメーターが指す構造体のサイズです。指定されない場合は 0 です。 |
| featureQueryData | void* | inoptional | feature パラメーターの値に対応するクエリ構造体への省略可能なポインターです。各定数に対応するクエリの型を判別するには、DML_FEATURE を参照してください。 |
| featureSupportDataSize | DWORD | in | featureSupportData パラメーターが指す構造体のサイズです。 |
| featureSupportData | void* | out | feature パラメーターの値に対応するサポートデータ構造体へのポインターです。各定数に対応するサポートデータの型を判別するには、DML_FEATURE を参照してください。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合、DML_FEATURE が認識されないかサポートされていないときは DXGI_ERROR_UNSUPPORTED を、パラメーターが不正なときは E_INVALIDARG を返します。
DirectML の演算子(オペレーター)を作成します。
| desc | DML_OPERATOR_DESC* | in | 作成する演算子(オペレーター)の記述です。 |
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは IDMLOperator の GUID であることが想定されます。 |
| ppv | void** | outoptional | 演算子(オペレーター)へのポインターを受け取るメモリブロックへのポインターです。これは、作成された演算子(オペレーター)を表す IDMLOperator へのポインターのアドレスです。 |
戻り値
演算子(オペレーター)を、GPU にディスパッチできるオブジェクトにコンパイルします。
| op | IDMLOperator* | in | コンパイルする演算子(オペレーター)(IDMLDevice::CreateOperator で作成されたもの)です。 |
| flags | DML_EXECUTION_FLAGS | in | この演算子(オペレーター)の実行を制御するためのフラグです。 |
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは IDMLCompiledOperator の GUID であることが想定されます。 |
| ppv | void** | outoptional | コンパイル済みオペレーターへのポインターを受け取るメモリブロックへのポインターです。これは、作成されたコンパイル済みオペレーターを表す IDMLCompiledOperator へのポインターのアドレスです。 |
戻り値
コンパイル済みオペレーターを初期化するために使用できるオブジェクトを作成します。
| operatorCount | DWORD | in | このパラメーターは、operators パラメーターで渡される配列の要素数を決定します。 |
| operators | IDMLCompiledOperator** | inoptional | この初期化子が対象とする演算子(オペレーター)のセットを含む、IDMLCompiledOperator ポインターの定数配列への省略可能なポインターです。初期化子の実行時に、対象の演算子(オペレーター)が初期化されます。この配列は null または空でもよく、その場合は初期化子に対象の演算子(オペレーター)がないことを示します。 |
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは IDMLOperatorInitializer の GUID であることが想定されます。 |
| ppv | void** | out | オペレーター初期化子へのポインターを受け取るメモリブロックへのポインターです。これは、作成されたオペレーター初期化子を表す IDMLOperatorInitializer へのポインターのアドレスです。 |
戻り値
DirectML のコマンドレコーダーを作成します。
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは IDMLCommandRecorder の GUID であることが想定されます。 |
| ppv | void** | out | コマンドレコーダーへのポインターを受け取るメモリブロックへのポインターです。これは、作成されたコマンドレコーダーを表す IDMLCommandRecorder へのポインターのアドレスです。 |
戻り値
バインディングテーブルを作成します。これは、リソース(テンソルなど)をパイプラインにバインドするために使用できるオブジェクトです。
| desc | DML_BINDING_TABLE_DESC* | inoptional | バインディングテーブルのパラメーターを含む DML_BINDING_TABLE_DESC への省略可能なポインターです。これは nullptr でもよく、その場合は空のバインディングテーブルを示します。 |
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは IDMLBindingTable の GUID であることが想定されます。 |
| ppv | void** | out | バインディングテーブルへのポインターを受け取るメモリブロックへのポインターです。これは、作成されたバインディングテーブルを表す IDMLBindingTable へのポインターのアドレスです。 |
戻り値
1 つ以上のページング可能なオブジェクトを GPU メモリから退避 (evict) します。IDMLDevice::MakeResident も参照してください。
| count | DWORD | in | このパラメーターは、ppObjects パラメーターで渡される配列の要素数を決定します。 |
| ppObjects | IDMLPageable** | in | GPU メモリから退避するページング可能なオブジェクトを含む、IDMLPageable ポインターの定数配列へのポインターです。 |
戻り値
1 つ以上のページング可能なオブジェクトを GPU メモリに常駐 (resident) させます。IDMLDevice::Evict も参照してください。
| count | DWORD | in | このパラメーターは、ppObjects パラメーターで渡される配列の要素数を決定します。 |
| ppObjects | IDMLPageable** | in | GPU メモリに常駐させるページング可能なオブジェクトを含む、IDMLPageable ポインターの定数配列へのポインターです。 |
戻り値
DirectML デバイスが削除された理由を取得します。
戻り値
この DirectML デバイスの作成に使用された Direct3D 12 デバイスを取得します。
| riid | GUID* | in | ppv で返してほしいインターフェイスのグローバル一意識別子 (GUID) への参照です。これは ID3D12Device の GUID であることが想定されます。 |
| ppv | void** | out | デバイスへのポインターを受け取るメモリブロックへのポインターです。これは、そのデバイスを表す ID3D12Device へのポインターのアドレスです。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDMLDevice "{6DBD6437-96FD-423F-A98C-AE5E7C2A573F}" #usecom global IDMLDevice IID_IDMLDevice "{}" #comfunc global IDMLDevice_CheckFeatureSupport 7 int,int,sptr,int,sptr #comfunc global IDMLDevice_CreateOperator 8 var,var,sptr #comfunc global IDMLDevice_CompileOperator 9 sptr,int,var,sptr #comfunc global IDMLDevice_CreateOperatorInitializer 10 int,sptr,var,sptr #comfunc global IDMLDevice_CreateCommandRecorder 11 var,sptr #comfunc global IDMLDevice_CreateBindingTable 12 var,var,sptr #comfunc global IDMLDevice_Evict 13 int,sptr #comfunc global IDMLDevice_MakeResident 14 int,sptr #comfunc global IDMLDevice_GetDeviceRemovedReason 15 #comfunc global IDMLDevice_GetParentDevice 16 var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDMLDevice "{6DBD6437-96FD-423F-A98C-AE5E7C2A573F}" #usecom global IDMLDevice IID_IDMLDevice "{}" #comfunc global IDMLDevice_CheckFeatureSupport 7 int,int,sptr,int,sptr #comfunc global IDMLDevice_CreateOperator 8 sptr,sptr,sptr #comfunc global IDMLDevice_CompileOperator 9 sptr,int,sptr,sptr #comfunc global IDMLDevice_CreateOperatorInitializer 10 int,sptr,sptr,sptr #comfunc global IDMLDevice_CreateCommandRecorder 11 sptr,sptr #comfunc global IDMLDevice_CreateBindingTable 12 sptr,sptr,sptr #comfunc global IDMLDevice_Evict 13 int,sptr #comfunc global IDMLDevice_MakeResident 14 int,sptr #comfunc global IDMLDevice_GetDeviceRemovedReason 15 #comfunc global IDMLDevice_GetParentDevice 16 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。