次の方法で共有


DXGKARG_SUBMITCOMMAND構造体 (d3dkmddi.h)

DXGKARG_SUBMITCOMMAND構造体では、ディスプレイ ミニポート ドライバーが DxgkDdiSubmitCommand の呼び出し中にハードウェア コマンド実行ユニットに送信するダイレクト メモリ アクセス (DMA) バッファーについて説明します。

構文

typedef struct _DXGKARG_SUBMITCOMMAND {
  union {
    HANDLE hDevice;
    HANDLE hContext;
  };
  UINT                           DmaBufferSegmentId;
  PHYSICAL_ADDRESS               DmaBufferPhysicalAddress;
  UINT                           DmaBufferSize;
  UINT                           DmaBufferSubmissionStartOffset;
  UINT                           DmaBufferSubmissionEndOffset;
  VOID                           *pDmaBufferPrivateData;
  UINT                           DmaBufferPrivateDataSize;
  UINT                           DmaBufferPrivateDataSubmissionStartOffset;
  UINT                           DmaBufferPrivateDataSubmissionEndOffset;
  UINT                           SubmissionFenceId;
  D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
  D3DDDI_FLIPINTERVAL_TYPE       FlipInterval;
  DXGK_SUBMITCOMMANDFLAGS        Flags;
  UINT                           EngineOrdinal;
  D3DGPU_VIRTUAL_ADDRESS         DmaBufferVirtualAddress;
  UINT                           NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;

メンバー

hDevice

[入力]ドライバーが複数エンジンに対応していない場合 (つまり、ドライバーはコンテキストの作成をサポートしていません)、 hDevice は、送信要求の送信元のディスプレイ デバイス (グラフィックス コンテキスト) へのハンドルです。 デバイス ハンドルは、DXGKARG_SUBMITCOMMAND含まれる共用体のドライバーの DxgkDdiSubmitCommand 関数に提供されます。

一部のページング操作では、 hDevice は NULL です (たとえば、電源管理中にフレーム バッファー全体の内容を削除するページング操作)。 ページング操作は、Flags メンバーのページング ビット フィールド フラグによって示されます。

hContext

[入力]ドライバーが複数エンジンに対応している場合 (つまり、ドライバーはコンテキストの作成をサポートしています)、申請要求の送信元のデバイス コンテキストへのハンドル。 コンテキスト ハンドルは、DXGKARG_SUBMITCOMMANDに含まれる共用体のドライバーの DxgkDdiSubmitCommand 関数に提供されます。

一部のページング操作では、 hContext は NULL です (たとえば、電源管理中にフレーム バッファー全体の内容を削除するページング操作)。 ページング操作は、Flags メンバーのページング ビット フィールド フラグによって示されます。

DmaBufferSegmentId

[入力]DMA バッファーがページングされたメモリ セグメントの識別子。

ドライバーの DxgkDdiCreateContext 関数の呼び出しで、DXGK_CONTEXTINFO構造体の DmaBufferSegmentSet メンバーを 0 に設定することで、ドライバーが DMA バッファーをセグメントにマップしないことを示した場合、識別子は 0 になります。 DmaBufferSegmentId が 0 の場合、DMA バッファーはシステム メモリの連続したブロックとして割り当てられます。

DmaBufferPhysicalAddress

[入力]DMA バッファーがページングされた物理アドレスを示すPHYSICAL_ADDRESSデータ型 (LARGE_INTEGERとして定義されます)。

DmaBufferSegmentId が 0 の場合、DmaBufferPhysicalAddress は DMA バッファーが配置されているシステム メモリ内の物理アドレスです。

DmaBufferSegmentId が 0 以外の場合、DmaBufferPhysicalAddress は DMA バッファーのセグメント物理アドレスです。つまり、アドレスは、物理メモリで定義された連続したアドレス空間である開口セグメントの物理アドレスを指します (DXGK_SEGMENTDESCRIPTOR。BaseAddress + DmaBuffer.SegmentOffset)。

DmaBufferPhysicalAddress は常に DMA バッファーの先頭を参照します。ただし、DMA バッファーの先頭を含まない DMA バッファーのセクション (つまり、DmaBufferSubmissionStartOffset メンバーが 0 以外の場合) に、ドライバーが修正プログラムを適用または送信する必要がある場合でも、常に DMA バッファーの先頭を参照します。

DmaBufferSize

[入力]DMA バッファーのサイズ (バイト単位)。

DmaBufferSize は、DMA バッファーの長さの全体を表します。ただし、修正プログラムの適用または送信の要求は、DMA バッファーの一部のみを参照している可能性があります。

DmaBufferSubmissionStartOffset

[入力]DMA バッファーの先頭から、修正プログラムの適用または送信を必要とする DMA バッファーの部分の先頭までのオフセット (バイト単位)。 パッチ時に受信されるオフセットは、送信時に受信されるオフセットと一致します。

DmaBufferSubmissionEndOffset

[入力]DMA バッファーの先頭から、修正プログラムの適用または送信を必要とする DMA バッファーの部分の末尾までのオフセット (バイト単位)。 パッチ時に受信されるオフセットは、送信時に受信されるオフセットと一致します。

pDmaBufferPrivateData

[入力] DxgkDdiRenderDxgkDdiPresent、または DxgkDdiPatch 関数の間に入力された DMA バッファーに関連付けられているドライバー常駐のプライベート データへのポインター。

ページング操作では、複数の独立した送信に 1 つのページング バッファーが使用されます。 そのシナリオでは、ドライバーは、 DxgkDdiBuildPagingBuffer 関数の呼び出しで適切なプライベート ドライバー データ ポインターを返すことによって、すべての申請に対して 1 つのドライバー プライベート データ範囲を持つか、提出ごとに 1 つを持つかどうかを示すことができます。

DmaBufferPrivateDataSize

[入力] pDmaBufferPrivateData が指すプライベート ドライバー データのサイズ (バイト単位)。

DmaBufferPrivateDataSize は、プライベート ドライバー データ バッファーの長さの全体を表します。ただし、現在の申請に関連付けられている部分は小さい場合があります。

このメンバーが 0 の場合、KMD はプライベート データを検証しないでください。

DmaBufferPrivateDataSubmissionStartOffset

[入力] pDmaBufferPrivateData が指定する DMA バッファープライベート データの先頭から、現在の送信に関連付けられているプライベート データの部分の先頭までのオフセット (バイト単位)。 DmaBufferPrivateDataSubmissionStartOffset は、非paging要求の場合、常に 0 です。

DmaBufferPrivateDataSubmissionEndOffset

[入力] pDmaBufferPrivateData が指定する DMA バッファープライベート データの先頭から、現在の送信に関連付けられているプライベート データの部分の末尾までのオフセット (バイト単位)。

SubmissionFenceId

[入力]ドライバーがリング バッファー内のフェンス コマンドに書き込むことができる一意の識別子。これは、DMA バッファーがグラフィックス処理装置 (GPU) の実行のためにキューに入れられているバッファーです。 これらの種類の識別子の詳細については、「 フェンス識別子の指定」を参照してください。

VidPnSourceId

[入力]反転操作のビデオ 存在ネットワーク (VidPN) トポロジのパス内のビデオ存在ソースの 0 から始まる識別番号。 このメンバーは、Flip または FlipWithNoWait ビット フィールド フラグが Flags メンバーに設定されている場合にのみ有効です。

FlipInterval

[入力]反転間隔を示す D3DDDI_FLIPINTERVAL_TYPE型指定の値 (つまり、0、1、2、3、または 4 つの垂直同期の後に反転が発生した場合)。 FlipInterval は、Flip ビット フィールド フラグが Flags メンバーに設定されている (つまり TRUE) 場合にのみ有効です。

Flags

[入力]送信する DMA バッファーに関する情報を識別する DXGK_SUBMITCOMMANDFLAGS 構造体。

EngineOrdinal

[入力] 将来の使用のために予約されています。

DmaBufferVirtualAddress

このメンバーは予約済みであり、0 に設定する必要があります。 Windows 7 以降でサポートされています。

NodeOrdinal

コンテキストが作成されるノードの 0 から始まるインデックス。 コンテキストが NULL の場合にノードを識別します。 Windows 8 以降でサポートされています。

注釈

ディスプレイ ミニポート ドライバーの DxgkDdiSubmitCommand 関数は、複数のプロセスが hDevice メンバーが同時に指定するデバイス オブジェクトにアクセスできることに注意する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista (WDDM 1.0)
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand