DXGKARG_PRESENT構造体 (d3dkmddi.h)
DXGKARG_PRESENT構造体では、ソースからプライマリへのコピー操作について説明します。
構文
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
メンバー
[out] pDmaBuffer
4 KB に配置された DMA バッファーの先頭へのポインター。 このバッファーは、DMA 経由でグラフィックス ハードウェアに送信できます。 ディスプレイ ミニポート ドライバーが DxgkDdiPresent 関数から戻る前に、ドライバーは pDmaBuffer を、ドライバーが書き込んだ最後のバイトに続く次の空のバイトに設定する必要があります。または、空き領域がない場合は、ドライバーが位置 (バッファー領域を超える 1 バイト) を指す必要があります。 バッファーが十分に大きければ、この場所は正しかったでしょう。
[in] DmaSize
pDmaBuffer が指す DMA バッファーのサイズ (バイト単位)。
[in] pDmaBufferPrivateData
pDmaBuffer が指す DMA バッファーに関連付けられているドライバー常駐のプライベート データ構造へのポインター。
[in] DmaBufferPrivateDataSize
pDmaBufferPrivateData が現在の操作を指すプライベート データ構造に残っているバイト数。
[in] pAllocationList
コピー 操作のソース 、コピー先、またはその両方を記述するDXGK_ALLOCATIONLIST構造体の配列。 ドライバーは、pAllocationList[DXGK_PRESENT_SOURCE_INDEX] 要素 (つまり要素 1) の hDeviceSpecificAllocation メンバーを介してソース割り当てハンドルにアクセスします。 ドライバーは、pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] 要素 (つまり要素 2) の hDeviceSpecificAllocation メンバーを介して宛先割り当てハンドルにアクセスします。
割り当てリストの要素で指定されるハンドルは、割り当てが開かれたときにドライバーの DxgkDdiOpenAllocation 関数が返すデバイス固有のハンドルです。 操作のソースまたは変換先が存在しない場合、それぞれの要素の hDeviceSpecificAllocation メンバーは NULL です。 このメンバーは、Windows 7 以降で使用できます。
注意
割り当てリストの最初の要素 (要素 0) の hDeviceSpecificAllocation メンバーは常に NULL です。
[in] pAllocationInfo
システムで使用するために予約されています。 ディスプレイ ミニポート ドライバーは、このメンバーを無視する必要があります。 このメンバーは、Windows 7 以降で使用できます。
[in] pPresentMultiPlaneOverlayInfo
VidPN 入力と 表示するオーバーレイ プレーンに関する情報を指定する DXGK_PRESENTMULTIPLANEOVERLAYINFO 型の構造体へのポインター。
Windows 8 以降でサポートされています。
[in/out] pPatchLocationListOut
ディスプレイ ミニポート ドライバー が 塗りつぶすパッチの場所の一覧のD3DDDI_PATCHLOCATIONLIST構造体の配列。 ドライバーが DxgkDdiPresent 関数の呼び出しから戻る前に、ドライバーは pPatchLocationListOut を、ドライバーが更新した最後のD3DDDI_PATCHLOCATIONLIST要素に続く次のD3DDDI_PATCHLOCATIONLIST要素に設定する必要があります。
[in] PatchLocationListOutSize
pPatchLocationListOut が指定するパッチの場所リスト内の要素の数。 ディスプレイ ミニポート ドライバーは、リスト全体のすべての要素を入力する必要はありません。ドライバーは、DMA バッファー内のパッチの場所を記述するために必要な要素のみを使用する必要があります。
[in/out] MultipassOffset
ディスプレイ ミニポート ドライバーの DxgkDdiPresent 関数が新しい DMA バッファーを取得するためにSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFERを返す必要がある場合に、コピー操作の進行状況を指定する UINT 値。 ドライバーの DxgkDdiPresent 関数が新しい RECT リストで最初に呼び出されると、 MultipassOffset は 0 に初期化されます。 ドライバーが DxgkDdiPresent 呼び出しから戻る前に、ドライバーは MultipassOffset を設定して、同じコマンド バッファーを使用して後続の DxgkDdiPresent 呼び出しのコピーの進行状況を表示します。 Microsoft DirectX グラフィックス カーネル サブシステムは、値をさらに変更しません。
[in] Color
color-fill 操作 (Flags メンバーで設定された ColorFill ビット フィールド フラグで指定される) または SrcColorKey または DstColorKey ビット フィールド フラグで指定されたカラー キー操作のA8R8G8B8色。 ColorFill、SrcColorKey、DstColorKey ビット フィールド フラグの 1 つだけがいつでも設定されることに注意してください。
プライマリ形式が淡色化された RGB の場合、 Color には、 D3DDDIFORMAT列挙型の D3DDDIFMT_A8R8G8B8値ではなくパレット インデックスが含まれます。
[in] DstRect
ストレッチ ファクターの計算に使用されるターゲット四角形の RECT 構造体。
[in] SrcRect
ストレッチ ファクターの計算に使用されるソース四角形の RECT 構造体。
[in] SubRectCnt
pDstSubRects が指定する配列内のコピー先のサブ四角形の数。
[in] pDstSubRects
DxgkDdiPresent 関数がコピーするコピー先のサブ四角形の一覧の RECT 構造体の配列。
[in] FlipInterval
反転間隔を示す D3DDDI_FLIPINTERVAL_TYPE型指定の値 (つまり、0、1、2、3、または 4 つの垂直同期の後に反転が発生した場合)。
[in] Flags
実行する現在の操作の種類をビット フィールド フラグで識別するDXGK_PRESENTFLAGS構造体。 Flags の ColorFill、SrcColorKey、DstColorKey ビット フィールド フラグは相互に排他的であることに注意してください。
[in] DmaBufferSegmentId
DMA バッファーがページングされたメモリ セグメントの識別子。 識別子が 0 の場合、DMA バッファーは正しくページングされません。
[in] DmaBufferPhysicalAddress
DMA バッファーがページングされた物理アドレスを示すPHYSICAL_ADDRESS データ型 ( LARGE_INTEGERとして定義されます)。 物理アドレスが 0 の場合、DMA バッファーは正しくページングされません。
[in] Reserved
システムで使用するために予約されています。 ドライバーは、このメンバーを無視する必要があります。
DmaBufferGpuVirtualAddress
DMA バッファーがページングされた仮想アドレスを示す D3DGPU_VIRTUAL_ADDRESS データ型。 物理アドレスが 0 の場合、DMA バッファーは正しくページングされません。
NumSrcAllocations
ソース内のコンテキスト割り当ての数。
NumDstAllocations
変換先のコンテキスト割り当ての数。
PrivateDriverDataSize
pPrivateDriverData のサイズ。
pPrivateDriverData
オプションのプライベート ドライバー データを含むバッファーへのポインター。
注釈
SrcRect メンバーと DstRect メンバーが指定するソースとターゲットの四角形領域の比率は、ストレッチ ファクターの計算に使用されます。 ドライバーは、コピー操作を実行するときにストレッチファクター計算を考慮できます。
ドライバーは、クリッピングを実行する必要はありません。 Microsoft DirectX グラフィックス カーネル サブシステムは、 pDstSubRects メンバーが指定する変換先のサブ四角形の一覧を DstRect メンバーが指定する変換先の四角形の座標と画面 (プライマリ) に事前にクリップします。 コピー先のサブ四角形の一覧が pDstSubRects で指定されている場合、ドライバーは SrcRect と DstRect のみを使用してストレッチ係数を計算し、実際のコピー操作に変換先のサブ四角形の座標を使用する必要があることに注意してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
Header | d3dkmddi.h (D3dkmddi.h を含む) |