Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFD3D12SynchronizationObjectCommands

IMFD3D12SynchronizationObjectCommands

COM
IID09d0f835-92ff-4e53-8efa-40faa551f233継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

D3D12 リソースのプロデューサーまたはコンシューマーが、リソースが使用可能になったとき、または解放可能になったときに下流のコンポーネントへ通知するためのコマンドを提供します。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT EnqueueResourceReady(ID3D12CommandQueue* pProducerCommandQueue)

指定したプロデューサーコマンドキューにフェンスをキューイングします。このフェンスは、関連付けられた D3D12 リソースが使用可能になったことを下流のコンシューマーに通知します。

pProducerCommandQueueID3D12CommandQueue*inフェンスを挿入するプロデューサーコマンドキューを表す ID3D12CommandQueue へのポインター。

戻り値

次の値を含む(ただしこれらに限定されない) HRESULT。

Value Description
S_OK 成功
MF_E_OPERATION_UNSUPPORTED_AT_D3D_FEATURE_LEVEL 試行された呼び出しまたはコマンドは、コンポーネントが使用している DirectX のバージョンではサポートされていません。
o MF_E_UNSUPPORTED_MEDIATYPE_AT_D3D_FEATURE_LEVEL 指定されたメディアタイプは、コンポーネントが使用している DirectX のバージョンではサポートされていません。

解説(Remarks)

このメソッドは、プロデューサーがリソースに対してスケジュールしたすべての GPU コマンドが処理されたことを、下流のコンシューマーに通知するためにプロデューサーによって使用されます。このシグナルは、リソースがコンシューマーによる消費の準備が整ったことを示します。

vtbl 4 HRESULT EnqueueResourceReadyWait(ID3D12CommandQueue* pConsumerCommandQueue)

指定したコンシューマーコマンドキューに待機コマンドをキューイングし、プロデューサーコマンドキューからのリソース準備完了シグナルの待機を開始します。

pConsumerCommandQueueID3D12CommandQueue*in待機をキューイングするコンシューマーコマンドキューを表す ID3D12CommandQueue へのポインター。

戻り値

次の値を含む(ただしこれらに限定されない) HRESULT。

Value Description
S_OK 成功
MF_E_OPERATION_UNSUPPORTED_AT_D3D_FEATURE_LEVEL 試行された呼び出しまたはコマンドは、コンポーネントが使用している DirectX のバージョンではサポートされていません。
o MF_E_UNSUPPORTED_MEDIATYPE_AT_D3D_FEATURE_LEVEL 指定されたメディアタイプは、コンポーネントが使用している DirectX のバージョンではサポートされていません。

解説(Remarks)

この関数により、コンシューマーは自身の GPU エンジンに対するコマンドのスケジュールを直ちに開始できます。この待機によって、待機の後にスケジュールされたコマンドは、プロデューサーの GPU エンジンによって対応する準備完了シグナルが発行されるまで実行されないことが保証されます。

vtbl 5 HRESULT SignalEventOnResourceReady(HANDLE hEvent)

D3D12 リソースが準備完了になったときにセットされるイベントハンドルを格納します。

hEventHANDLEinリソースが準備完了になったときにセットされるイベントへのハンドル。

戻り値

Value Description
S_OK 成功
MF_E_OPERATION_UNSUPPORTED_AT_D3D_FEATURE_LEVEL 試行された呼び出しまたはコマンドは、コンポーネントが使用している DirectX のバージョンではサポートされていません。
o MF_E_UNSUPPORTED_MEDIATYPE_AT_D3D_FEATURE_LEVEL 指定されたメディアタイプは、コンポーネントが使用している DirectX のバージョンではサポートされていません。

解説(Remarks)

イベントハンドルのアクセス権が制限されている場合、そのハンドルは少なくとも EVENT_MODIFY_STATE 権限を持っている必要があります。ハンドルを閉じるのは呼び出し元の責任です。

vtbl 6 HRESULT EnqueueResourceRelease(ID3D12CommandQueue* pConsumerCommandQueue)

指定したコマンドキューにフェンスをキューイングします。このフェンスは、GPU がコンシューマーコマンドの処理を完了したときに同期オブジェクトへ通知します。

pConsumerCommandQueueID3D12CommandQueue*inフェンスをキューイングするコンシューマーコマンドキューを表す ID3D12CommandQueue へのポインター。

戻り値

Value Description
S_OK 成功
MF_E_OPERATION_UNSUPPORTED_AT_D3D_FEATURE_LEVEL 試行された呼び出しまたはコマンドは、コンポーネントが使用している DirectX のバージョンではサポートされていません。
o MF_E_UNSUPPORTED_MEDIATYPE_AT_D3D_FEATURE_LEVEL 指定されたメディアタイプは、コンポーネントが使用している DirectX のバージョンではサポートされていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IMFD3D12SynchronizationObjectCommands "{09D0F835-92FF-4E53-8EFA-40FAA551F233}"
#usecom global IMFD3D12SynchronizationObjectCommands IID_IMFD3D12SynchronizationObjectCommands "{}"
#comfunc global IMFD3D12SynchronizationObjectCommands_EnqueueResourceReady        3 sptr
#comfunc global IMFD3D12SynchronizationObjectCommands_EnqueueResourceReadyWait    4 sptr
#comfunc global IMFD3D12SynchronizationObjectCommands_SignalEventOnResourceReady  5 sptr
#comfunc global IMFD3D12SynchronizationObjectCommands_EnqueueResourceRelease      6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。