ID3D12VideoEncodeCommandList
COM公式ドキュメント
モーション推定を含む、ビデオエンコード用のグラフィックスコマンドのリストをカプセル化します。
メソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コマンドリストへの記録が終了したことを示します。(ID3D12VideoEncodeCommandList::Close)
戻り値
Type: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、次のいずれかの値を返します。
- E_FAIL: コマンドリストが既にクローズされている場合、またはコマンドリストの記録中に無効な API が呼び出された場合。
- E_OUTOFMEMORY: 記録中にオペレーティングシステムのメモリが不足した場合。
- E_INVALIDARG: 記録中にコマンドリスト API へ無効な引数が渡された場合。
その他の返される可能性のある値については、Direct3D 12 リターンコードを参照してください。
解説(Remarks)
ランタイムは、コマンドリストが以前にクローズされていないことを検証します。記録中にエラーが発生した場合は、そのエラーコードがここで返されます。この場合、ランタイムはクローズのデバイスドライバーインターフェイス (DDI) を呼び出しません。
コマンドリストを作成する例については、ID3D12GraphicsCommandList::Close メソッドを参照してください。
新しいコマンドリストが作成された直後であるかのように、コマンドリストを初期状態にリセットします。(ID3D12VideoEncodeCommandList::Reset)
| pAllocator | ID3D12CommandAllocator* | in | デバイスがコマンドリストの作成元とする ID3D12CommandAllocator オブジェクトへのポインターです。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、次のいずれかの値を返します。
- E_FAIL: Reset の呼び出しが行われたときにコマンドリストが「クローズ」状態でなかった場合、またはデバイスごとの上限を超過してしまう場合。
- E_OUTOFMEMORY: オペレーティングシステムのメモリが不足した場合。
- E_INVALIDARG: アロケーターが現在「記録中」状態の別のコマンドリストで使用されている場合、または指定されたアロケーターが誤った種類で作成されていた場合。
解説(Remarks)
このメソッドの使用に関する追加情報と例については、ID3D12GraphicsCommandList::Reset メソッドを参照してください。
ダイレクトコマンドリストの状態を、コマンドリストが作成されたときの状態にリセットします。(ID3D12VideoEncodeCommandList::ClearState)
リソースへの複数のアクセスを同期する必要があることをドライバーに通知します。(ID3D12VideoEncodeCommandList::ResourceBarrier)
| NumBarriers | DWORD | in | 送信するバリア記述の数です。 |
| pBarriers | D3D12_RESOURCE_BARRIER* | in | バリア記述の配列へのポインターです。 |
解説(Remarks)
このメソッドは void を返します。
リソースの現在の内容を破棄できることを示します。(ID3D12VideoEncodeCommandList::DiscardResource)
| pResource | ID3D12Resource* | in | 破棄するリソースの ID3D12Resource インターフェイスへのポインターです。 |
| pRegion | D3D12_DISCARD_REGION* | inoptional | リソース破棄操作の詳細を記述する D3D12_DISCARD_REGION 構造体へのポインターです。 |
クエリの実行を開始します。(ID3D12VideoEncodeCommandList::BeginQuery)
| pQueryHeap | ID3D12QueryHeap* | in | このクエリのストレージを指定する ID3D12QueryHeap へのポインターです。 |
| Type | D3D12_QUERY_TYPE | in | クエリの種類を指定する D3D12_QUERY_TYPE 列挙体のメンバーです。 |
| Index | DWORD | in | クエリヒープ内のクエリのインデックスです。 |
解説(Remarks)
一部のクエリは BeginQuery を使用せず、EndQuery のみを持ちます。適切な使用方法については、D3D12_QUERY_TYPE の各クエリの種類を参照してください。
クエリを終了します。(ID3D12VideoEncodeCommandList::EndQuery)
| pQueryHeap | ID3D12QueryHeap* | in | このクエリのストレージを指定する ID3D12QueryHeap へのポインターです。 |
| Type | D3D12_QUERY_TYPE | in | クエリの種類を指定する D3D12_QUERY_TYPE 列挙体のメンバーです。 |
| Index | DWORD | in | クエリヒープ内のクエリのインデックスです。 |
クエリからデータを抽出します。(ID3D12VideoEncodeCommandList::ResolveQueryData)
| pQueryHeap | ID3D12QueryHeap* | in | 解決するクエリを格納しているストレージを指定する ID3D12QueryHeap へのポインターです。 |
| Type | D3D12_QUERY_TYPE | in | クエリの種類を指定する D3D12_QUERY_TYPE 列挙体のメンバーです。 |
| StartIndex | DWORD | in | 解決する最初のクエリのインデックスです。 |
| NumQueries | DWORD | in | 解決するクエリの数です。 |
| pDestinationBuffer | ID3D12Resource* | in | デスティネーションバッファーを表す ID3D12Resource へのポインターです。このリソースは D3D12_RESOURCE_STATE_COPY_DEST 状態でなければなりません。 |
| AlignedDestinationBufferOffset | ULONGLONG | in | デスティネーションバッファーへのアライメントオフセットです。これは 8 バイトの倍数でなければなりません。 |
述語値が指定された演算をパスした場合に、後続のコマンドを実行しないよう指定します。(ID3D12VideoEncodeCommandList::SetPredication)
| pBuffer | ID3D12Resource* | inoptional | 64 ビットの述語値を読み取るバッファーを表す ID3D12Resource へのポインターです。 |
| AlignedBufferOffset | ULONGLONG | in | UINT64 にアライメントされたバッファーオフセットです。 |
| Operation | D3D12_PREDICATION_OP | in | 述語演算を指定する D3D12_PREDICATION_OP 列挙体のメンバーです。 |
内部使用のみ。直接呼び出すことを意図したものではありません。(ID3D12VideoEncodeCommandList::SetMarker)
| Metadata | DWORD | in | 内部用。 |
| pData | void* | inoptional | 内部用。 |
| Size | DWORD | in | 内部用。 |
内部使用のみ。直接呼び出すことを意図したものではありません。(ID3D12VideoEncodeCommandList::BeginEvent)
| Metadata | DWORD | in | 内部用。 |
| pData | void* | inoptional | 内部用。 |
| Size | DWORD | in | 内部用。 |
内部使用のみ。直接呼び出すことを意図したものではありません。(ID3D12VideoEncodeCommandList::EndEvent)
モーション推定操作を実行します。
| pMotionEstimator | ID3D12VideoMotionEstimator* | in | ビデオモーション推定コンテキストオブジェクトを表す ID3D12VideoMotionEstimator です。 |
| pOutputArguments | D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* | in | ビデオモーション推定の出力引数を表す D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT 構造体です。 |
| pInputArguments | D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* | in | ビデオモーション推定の入力引数を表す D3D12_VIDEO_MOTION_ESTIMATOR_INPUT 構造体です。 |
EstimateMotion メソッドのモーションベクトル出力を、ハードウェア依存の形式から、ビデオモーション推定 API で定義された一貫した形式へ変換します。
| pOutputArguments | D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* | in | 変換されたモーションベクトルを格納する D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT 構造体です。 |
| pInputArguments | D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* | in | 変換対象のモーションベクトルを格納する D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT 構造体です。 |
複数の 32 ビットの即値を、コマンドストリームから直接、指定されたバッファーの場所へ書き込みます。(ID3D12VideoEncodeCommandList::WriteBufferImmediate)
| Count | DWORD | in | pParams および pModes 配列内の要素の数です。 |
| pParams | D3D12_WRITEBUFFERIMMEDIATE_PARAMETER* | in | サイズが Count の D3D12_WRITEBUFFERIMMEDIATE_PARAMETER 構造体の配列のアドレスです。 |
| pModes | D3D12_WRITEBUFFERIMMEDIATE_MODE* | inoptional | サイズが Count の D3D12_WRITEBUFFERIMMEDIATE_MODE 構造体の配列のアドレスです。既定値は null です。null を渡すと、システムはすべての即値を D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT を使用して書き込みます。 |
解説(Remarks)
この機能の対応状況は D3D12_FEATURE_DATA_D3D12_OPTIONS3::WriteBufferImmediateSupportFlags で指定されます。
ビデオエンコードコマンドリスト内の後続のコマンドによって保護されたリソースにアクセスできるかどうかを指定します。
| pProtectedResourceSession | ID3D12ProtectedResourceSession* | inoptional | ID3D12ProtectedResourceSession への省略可能なポインターです。ID3D12ProtectedResourceSession は ID3D12Device4::CreateProtectedResourceSession を呼び出すことで取得できます。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D12VideoEncodeCommandList "{8455293A-0CBD-4831-9B39-FBDBAB724723}" #usecom global ID3D12VideoEncodeCommandList IID_ID3D12VideoEncodeCommandList "{}" #comfunc global ID3D12VideoEncodeCommandList_Close 9 #comfunc global ID3D12VideoEncodeCommandList_Reset 10 sptr #comfunc global ID3D12VideoEncodeCommandList_ClearState 11 #comfunc global ID3D12VideoEncodeCommandList_ResourceBarrier 12 int,var #comfunc global ID3D12VideoEncodeCommandList_DiscardResource 13 sptr,var #comfunc global ID3D12VideoEncodeCommandList_BeginQuery 14 sptr,int,int #comfunc global ID3D12VideoEncodeCommandList_EndQuery 15 sptr,int,int #comfunc global ID3D12VideoEncodeCommandList_ResolveQueryData 16 sptr,int,int,int,sptr,int64 #comfunc global ID3D12VideoEncodeCommandList_SetPredication 17 sptr,int64,int #comfunc global ID3D12VideoEncodeCommandList_SetMarker 18 int,sptr,int #comfunc global ID3D12VideoEncodeCommandList_BeginEvent 19 int,sptr,int #comfunc global ID3D12VideoEncodeCommandList_EndEvent 20 #comfunc global ID3D12VideoEncodeCommandList_EstimateMotion 21 sptr,var,var #comfunc global ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap 22 var,var #comfunc global ID3D12VideoEncodeCommandList_WriteBufferImmediate 23 int,var,var #comfunc global ID3D12VideoEncodeCommandList_SetProtectedResourceSession 24 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D12VideoEncodeCommandList "{8455293A-0CBD-4831-9B39-FBDBAB724723}" #usecom global ID3D12VideoEncodeCommandList IID_ID3D12VideoEncodeCommandList "{}" #comfunc global ID3D12VideoEncodeCommandList_Close 9 #comfunc global ID3D12VideoEncodeCommandList_Reset 10 sptr #comfunc global ID3D12VideoEncodeCommandList_ClearState 11 #comfunc global ID3D12VideoEncodeCommandList_ResourceBarrier 12 int,sptr #comfunc global ID3D12VideoEncodeCommandList_DiscardResource 13 sptr,sptr #comfunc global ID3D12VideoEncodeCommandList_BeginQuery 14 sptr,int,int #comfunc global ID3D12VideoEncodeCommandList_EndQuery 15 sptr,int,int #comfunc global ID3D12VideoEncodeCommandList_ResolveQueryData 16 sptr,int,int,int,sptr,int64 #comfunc global ID3D12VideoEncodeCommandList_SetPredication 17 sptr,int64,int #comfunc global ID3D12VideoEncodeCommandList_SetMarker 18 int,sptr,int #comfunc global ID3D12VideoEncodeCommandList_BeginEvent 19 int,sptr,int #comfunc global ID3D12VideoEncodeCommandList_EndEvent 20 #comfunc global ID3D12VideoEncodeCommandList_EstimateMotion 21 sptr,sptr,sptr #comfunc global ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap 22 sptr,sptr #comfunc global ID3D12VideoEncodeCommandList_WriteBufferImmediate 23 int,sptr,sptr #comfunc global ID3D12VideoEncodeCommandList_SetProtectedResourceSession 24 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。