DXGK_ALLOCATIONINFO構造体 (d3dkmddi.h)

DXGK_ALLOCATIONINFO構造体では、割り当てを作成するためのパラメーターについて説明します。

構文

typedef struct _DXGK_ALLOCATIONINFO {
  VOID                       *pPrivateDriverData;
  UINT                       PrivateDriverDataSize;
  union {
    UINT Alignment;
    struct {
      UINT16 MinimumPageSize;
      UINT16 RecommendedPageSize;
    };
  };
  SIZE_T                     Size;
  SIZE_T                     PitchAlignedSize;
  DXGK_SEGMENTBANKPREFERENCE HintedBank;
  DXGK_SEGMENTPREFERENCE     PreferredSegment;
  union {
    UINT SupportedReadSegmentSet;
    UINT MmuSet;
  };
  UINT                       SupportedWriteSegmentSet;
  UINT                       EvictionSegmentSet;
  union {
    UINT MaximumRenamingListLength;
    UINT PhysicalAdapterIndex;
  };
  HANDLE                     hAllocation;
  union {
    DXGK_ALLOCATIONINFOFLAGS         Flags;
    DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
  };
  DXGK_ALLOCATIONUSAGEHINT   *pAllocationUsageHint;
  UINT                       AllocationPriority;
  DXGK_ALLOCATIONINFOFLAGS2  Flags2;
} DXGK_ALLOCATIONINFO;

メンバー

pPrivateDriverData

[入力]プライベート データのブロックへのポインター。 このデータは割り当てごとに異なり、DXGKARG_CREATEALLOCATION構造体の pPrivateDriverData メンバーとは異なります。 ユーザー モードディスプレイ ドライバーは、このデータをディスプレイ ミニポート ドライバーに渡す場合があります。 ただし、Microsoft DirectX グラフィックス カーネル サブシステムがこのデータを渡して共有プライマリまたはその他のロック可能なサーフェスを記述する場合、データは DXGKARG_CREATEALLOCATION の pAllocationInfo メンバー内の配列の最初の要素として渡されます。

PrivateDriverDataSize

[入力] pPrivateDriverData 内のプライベート データのブロックのサイズ (バイト単位)。

Alignment

[out]割り当てに必要なアラインメント (バイト単位)。

MinimumPageSize

RecommendedPageSize

Size

[out]割り当てに必要なサイズ (バイト単位)。 サイズの値は、ネイティブ ホスト ページ サイズの倍数に拡張されます (たとえば、x86 アーキテクチャでは 4 KB)。 ディスプレイ ミニポート ドライバーは、ビデオ メモリ マネージャーへの割り当てサイズを指定します。

PitchAlignedSize

[out]割り当てがピッチアライン セグメント内にある場合の割り当てのサイズ (バイト単位) です。これは、セグメントのDXGK_SEGMENTDESCRIPTOR構造体の Flags メンバーの PitchAlignment ビット フィールド フラグによって指定されます。 割り当てがピッチアライン セグメントでサポートされていない場合 (グラフィックス処理ユニット [GPU] は通常、この種類のセグメントをサポートしていません)、ドライバーは PitchAlignedSize の値を 0 に設定する必要があります。 ドライバーが PitchAlignedSize で 0 以外の値を指定する場合、値は Size メンバーの値以上である必要があります。

HintedBank

[out]ディスプレイ ミニポート ドライバーがビデオ メモリ マネージャーが割り当てのページインに使用するように要求する銀行の順序設定を示す DXGK_SEGMENTBANKPREFERENCE 構造体。 このメンバーが指定されている場合、ビデオ メモリ マネージャーは、PreferredSegment メンバーが指定するDXGK_SEGMENTPREFERENCE構造体の SegmentId0 メンバーによって指定される、最も優先されるセグメントに関する銀行情報を使用します。

PreferredSegment

[out]ディスプレイ ミニポート ドライバーがビデオ メモリ マネージャーが割り当てのページインに使用するように要求する優先セグメント識別子を示す DXGK_SEGMENTPREFERENCE 構造体。

SupportedReadSegmentSet

[out]ディスプレイ ミニポート ドライバーが読み取り操作の PreferredSegment メンバーで設定できるセグメント識別子。 これらの識別子が示すセグメントは、パフォーマンスに関係なく、ビデオ メモリ マネージャーが読み取り操作の割り当てをページングするために使用するディスプレイ ミニポート ドライバーが要求するセグメントです。 ビット 0 の設定は、最初のセグメントがサポートされていることを示し、ビット 1 の設定は、2 番目のセグメントがサポートされていることを示します。

ディスプレイ ミニポート ドライバーは、読み取り操作でサポートされているセグメントに対してのみ基本設定を設定できます。 ビデオ メモリ マネージャーは、ドライバーが PreferredSegment メンバーでサポートされていないセグメントの基本設定を設定しようとした場合にアサートします。

MmuSet

SupportedWriteSegmentSet

[out]ディスプレイ ミニポート ドライバーが書き込み操作の PreferredSegment メンバーで設定できるセグメント識別子。 これらの識別子が示すセグメントは、パフォーマンスに関係なく、ビデオ メモリ マネージャーが書き込み操作の割り当てをページングするために使用するディスプレイ ミニポート ドライバーが要求するセグメントです。 ビット 0 の設定は、最初のセグメントがサポートされていることを示し、ビット 1 の設定は、2 番目のセグメントがサポートされていることを示します。

ディスプレイ ミニポート ドライバーは、書き込み操作でサポートされているセグメントに対してのみ基本設定を設定できます。 ビデオ メモリ マネージャーは、ドライバーが PreferredSegment メンバーでサポートされていないセグメントの基本設定を設定しようとした場合にアサートします。

EvictionSegmentSet

[out]削除に使用できるセグメントの識別子。 ビット 0 の設定は、最初のセグメントを削除に使用できることを示し、ビット 1 を設定すると、2 番目のセグメントを削除に使用できることを示します。

このメンバーで指定できるのは絞りセグメントだけです。 ドライバーで削除に使用する有効なセグメントが指定されている場合、ビデオ メモリ マネージャーは、削除プロセスを高速化するために、これらのアパーチャ セグメントにリソースを割り当てようとします。 ドライバーで 0 が指定されている場合、ビデオ メモリ マネージャーはドライバーを呼び出して、アロケーションの内容をページロックされたシステム メモリに直接転送します。基になるページを絞りセグメントにマッピングする必要はありません。

MaximumRenamingListLength

[out]割り当ての名前変更リストの最大長。 名前の変更リストの詳細については、「 割り当ての名前変更の要求」を参照してください。

このメンバーのサポートは、Windows 10と WDDM v2 で開始されました。

PhysicalAdapterIndex

[out]物理アダプターのインデックス。

このメンバーのサポートは、Windows 10と WDDM v2 で開始されました。

hAllocation

[out]割り当てのハンドル。 ディスプレイ ミニポート ドライバーは、割り当てのプライベート追跡構造を参照するために使用できる値にこのメンバーを設定する必要があります。

Flags

[out]ビット フィールド フラグでの割り当てのプロパティを識別する DXGK_ALLOCATIONINFOFLAGS 構造体。 これらのプロパティは、作成する割り当ての種類を示します。 ディスプレイ ミニポート ドライバーは、ビデオ メモリ マネージャーのこれらのフラグを指定します。 WDDM 2.0 より前の WDDM バージョンを対象とするドライバーでは 、Flags を使用する必要があります。WDDM バージョン >= WDDM 2.0 を対象とするドライバーでは 、FlagsWddm2 を使用する必要があります。

FlagsWddm2

[out]ビット フィールド フラグでの割り当てのプロパティを識別する DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 構造体。 これらのプロパティは、作成する割り当ての種類を示します。 ディスプレイ ミニポート ドライバーは、ビデオ メモリ マネージャーのこれらのフラグを指定します。 WDDM バージョン >= WDDM 2.0 を対象とするドライバーは FlagsWddm2 を使用する必要があります。WDDM 2.0 より前の WDDM バージョンを対象とするドライバーは Flags を使用する必要があります。

pAllocationUsageHint

[out]メモリ マネージャーが割り当ての使用方法を決定するために使用する DXGK_ALLOCATIONUSAGEHINT 構造体へのポインター。

AllocationPriority

[out]割り当ての開始優先度レベルを指定する UINT 値。

ドライバーは、割り当てごとに適切な優先度レベルを決定します。 優先度レベルの詳細については、 pfnSetPriorityCb 関数の「解説」セクションを参照してください。 割り当ての優先度レベルがドライバーの問題ではない場合、ドライバーはすべての優先度レベルを D3DDDI_ALLOCATIONPRIORITY_NORMALに設定する必要があります。 0 は無効な初期割り当て優先度であることに注意してください。

Flags2

[out]割り当ての追加のプロパティを含む DXGK_ALLOCATIONINFOFLAGS2 構造体。 Windows 11 (WDDM 3.0) 以降でサポートされます。

注釈

WDDM v2 では、読み取りおよび書き込みセグメント セットが区別されないように、 DXGK_ALLOCATIONINFO 構造が変更されました。 サーフェスの作成時に、ビデオ メモリ マネージャーは SupportedReadSegmentSet 値を無視し、 SupportedWriteSegmentSet によって提供されるセグメント セットのみを使用します。 ドライバーは、この値が意図した目的で割り当てで使用できるセグメント セットを正確に表すことを確認する必要があります。

サポートされている読み取りセグメント セットを無視しても、サポートされなくなったという意味ではなく、単にこれらのセット間に違いはなく、ビデオ メモリ マネージャーは 1 つのセグメント セットからの割り当てに適したセグメントを選択できます。

要件

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

こちらもご覧ください

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb