次の方法で共有


DXGKARG_RENDER構造体 (d3dkmddi.h)

DXGKARG_RENDER構造体は、コマンド バッファーからダイレクト メモリ アクセス (DMA) バッファーを生成するためのメンバーを記述します。

構文

typedef struct _DXGKARG_RENDER {
  [in]     const VOID               *pCommand;
  [in]     UINT                     CommandLength;
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
  [in]     UINT                     AllocationListSize;
  [in]     D3DDDI_PATCHLOCATIONLIST *pPatchLocationListIn;
  [in]     UINT                     PatchLocationListInSize;
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
  [in]     UINT                     PatchLocationListOutSize;
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
} DXGKARG_RENDER;

メンバー

[in] pCommand

コマンド バッファーの先頭へのポインター。

メモDxgkDdiRender が呼び出されると、ディスプレイ ミニポート ドライバーはバッファーを検証する必要があります。 ドライバーがこのメンバーにアクセスする方法の重要な情報については、「 DxgkDdiRender の解説」を参照してください。
 

[in] CommandLength

pCommand が指すコマンド バッファーのサイズ (バイト単位)。

[out] pDmaBuffer

4 KB に配置された DMA バッファーの先頭へのポインター。 このバッファーは、DMA 経由でグラフィックス ハードウェアに送信できます。 ディスプレイ ミニポート ドライバーが DxgkDdiRender 関数または DxgkDdiRenderKm 関数から戻る前に、ドライバーは pDmaBuffer を、ドライバーが書き込んだ最後のバイトに続く次の空のバイトに設定する必要があります。または、空き領域がない場合は、ドライバーが位置 (バッファー領域を超える 1 バイト) を指す必要があります。 バッファーが十分に大きければ、この場所は正しかったでしょう。

[in] DmaSize

pDmaBuffer が指す DMA バッファーのサイズ (バイト単位)。

[in] pDmaBufferPrivateData

pDmaBuffer が指す DMA バッファーの生成に使用されるドライバー常駐のプライベート データ構造へのポインター。

[in] DmaBufferPrivateDataSize

pDmaBufferPrivateData が現在の操作を指すプライベート データ構造に残っているバイト数。

[in] pAllocationList

DMA バッファーが参照する割り当ての一覧の DXGK_ALLOCATIONLIST 構造体の配列。 最適なパフォーマンスを得る場合は、参照される各割り当てが 1 回表示されます。

[in] AllocationListSize

pAllocationList が指定する配列内の使用可能な要素の数。これは、DMA を介してグラフィックス ハードウェアに送信する割り当て仕様の数を表します。

[in] pPatchLocationListIn

pfnRenderCb関数の呼び出しでユーザー モードディスプレイ ドライバーが提供するパッチ位置リストのD3DDDI_PATCHLOCATIONLIST構造体の配列。

メモDxgkDdiRender が呼び出されると、ディスプレイ ミニポート ドライバーはバッファーを検証する必要があります。 ドライバーがこのメンバーにアクセスする方法の重要な情報については、「 DxgkDdiRender の解説」を参照してください。
 

[in] PatchLocationListInSize

pPatchLocationListIn が指定する patch-location リスト内の要素の数。

[in/out] pPatchLocationListOut

ディスプレイ ミニポート ドライバー 入力するパッチの場所の一覧のD3DDDI_PATCHLOCATIONLIST構造体の配列。 ドライバーが DxgkDdiRender 関数または DxgkDdiRenderKm 関数の呼び出しから戻る前に、ドライバーは pPatchLocationListOut を、ドライバーが更新した最後 のD3DDDI_PATCHLOCATIONLIST 要素に続く次の D3DDDI_PATCHLOCATIONLIST 要素に設定する必要があります。

[in] PatchLocationListOutSize

pPatchLocationListOut が指定するパッチの場所リスト内の要素の数。 ディスプレイ ミニポート ドライバーは、リスト全体のすべての要素を入力する必要はありません。ドライバーは、DMA バッファー内のパッチの場所を記述するために必要な要素のみを使用する必要があります。

[in/out] MultipassOffset

ディスプレイ ミニポート ドライバーの DxgkDdiRender 関数または DxgkDdiRenderKm 関数が新しい DMA バッファーを取得するために STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER を返す必要がある場合に、レンダリング操作の進行状況を指定する UINT 値。 ドライバーの DxgkDdiRender または DxgkDdiRenderKm 関数が新しいコマンド バッファーで最初に呼び出されると、 MultipassOffset は 0 に初期化されます。 ドライバーが DxgkDdiRender または DxgkDdiRenderKm 呼び出しから戻る前に、ドライバーは、同じコマンド バッファーを使用して後続の DxgkDdiRender または DxgkDdiRenderKm 呼び出しの翻訳の進行状況を表示するようにこのメンバーを設定します。 DirectX グラフィックス カーネル サブシステムは、値をさらに変更しません。

[in] DmaBufferSegmentId

DMA バッファーがページングされたメモリ セグメントの識別子。 識別子が 0 の場合、DMA バッファーは正しくページングされません。

[in] DmaBufferPhysicalAddress

DMA バッファーがページングされた物理アドレスを示すPHYSICAL_ADDRESS データ型 ( LARGE_INTEGERとして定義されます)。 物理アドレスが 0 の場合、DMA バッファーは正しくページングされません。

注釈

DxgkDdiRenderKm 関数のサポートは、GDI ハードウェア アクセラレーションをサポートするディスプレイ アダプターの Windows 7 以降で追加されます。

要件

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

こちらもご覧ください

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb