ホーム › AI.MachineLearning.DirectML › IDMLDevice
IDMLDevice
COMメソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 7 HRESULT CheckFeatureSupport(DML_FEATURE feature, DWORD featureQueryDataSize, void* featureQueryData, DWORD featureSupportDataSize, void* featureSupportData)
| feature | DML_FEATURE | in | サポート状況を問い合わせる機能を示す DML_FEATURE 列挙値である。 |
| featureQueryDataSize | DWORD | in | featureQueryData が指す入力クエリ構造体のバイトサイズである。 |
| featureQueryData | void* | inoptional | 機能ごとのクエリパラメータ構造体へのポインタである。不要なら NULL 可。 |
| featureSupportDataSize | DWORD | in | featureSupportData が指す出力バッファのバイトサイズである。 |
| featureSupportData | void* | out | サポート結果を受け取る出力構造体へのポインタである。 |
vtbl 8 HRESULT CreateOperator(DML_OPERATOR_DESC* desc, GUID* riid, void** ppv)
| desc | DML_OPERATOR_DESC* | in | 作成する演算子を記述する DML_OPERATOR_DESC 構造体へのポインタである。 |
| riid | GUID* | in | 取得するインターフェイスの GUID(通常 IDMLOperator)である。 |
| ppv | void** | outoptional | 作成された演算子インターフェイスを受け取る出力ポインタである。 |
vtbl 9 HRESULT CompileOperator(IDMLOperator* op, DML_EXECUTION_FLAGS flags, GUID* riid, void** ppv)
| op | IDMLOperator* | in | コンパイル対象の作成済み演算子 IDMLOperator へのポインタである。 |
| flags | DML_EXECUTION_FLAGS | in | コンパイル時の挙動を制御する DML_EXECUTION_FLAGS ビットフラグである。 |
| riid | GUID* | in | 取得するインターフェイスの GUID(通常 IDMLCompiledOperator)である。 |
| ppv | void** | outoptional | コンパイル済み演算子インターフェイスを受け取る出力ポインタである。 |
vtbl 10 HRESULT CreateOperatorInitializer(DWORD operatorCount, IDMLCompiledOperator** operators, GUID* riid, void** ppv)
| operatorCount | DWORD | in | operators 配列に含まれるコンパイル済み演算子の個数である。 |
| operators | IDMLCompiledOperator** | inoptional | 初期化対象のコンパイル済み演算子の配列である。NULL や空配列も可。 |
| riid | GUID* | in | 取得するインターフェイスの GUID(IDMLOperatorInitializer)である。 |
| ppv | void** | out | 作成された初期化子インターフェイスを受け取る出力ポインタである。 |
vtbl 11 HRESULT CreateCommandRecorder(GUID* riid, void** ppv)
| riid | GUID* | in | 取得するインターフェイスの GUID(IDMLCommandRecorder)である。 |
| ppv | void** | out | 作成されたコマンドレコーダーを受け取る出力ポインタである。 |
vtbl 12 HRESULT CreateBindingTable(DML_BINDING_TABLE_DESC* desc, GUID* riid, void** ppv)
| desc | DML_BINDING_TABLE_DESC* | inoptional | バインディングテーブルの構成を記述する DML_BINDING_TABLE_DESC へのポインタである。NULL 可。 |
| riid | GUID* | in | 取得するインターフェイスの GUID(IDMLBindingTable)である。 |
| ppv | void** | out | 作成されたバインディングテーブルを受け取る出力ポインタである。 |
vtbl 13 HRESULT Evict(DWORD count, IDMLPageable** ppObjects)
| count | DWORD | in | ppObjects 配列に含まれるオブジェクトの個数である。 |
| ppObjects | IDMLPageable** | in | GPU メモリから退避(エビクト)する IDMLPageable オブジェクトの配列である。 |
vtbl 14 HRESULT MakeResident(DWORD count, IDMLPageable** ppObjects)
| count | DWORD | in | ppObjects 配列に含まれるオブジェクトの個数である。 |
| ppObjects | IDMLPageable** | in | GPU メモリへ常駐(レジデント)させる IDMLPageable オブジェクトの配列である。 |
vtbl 15 HRESULT GetDeviceRemovedReason()
vtbl 16 HRESULT GetParentDevice(GUID* riid, void** ppv)
| riid | GUID* | in | 取得する親 Direct3D 12 デバイスインターフェイスの GUID である。 |
| ppv | void** | out | 親デバイスインターフェイスを受け取る出力ポインタである。 |
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 指定が可能。