次の方法で共有


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

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

PrivateDriverDataSize

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

Alignment

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

MinimumPageSize

RecommendedPageSize

Size

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

PitchAlignedSize

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

HintedBank

[out]割り当てのページインに VidMm 使用 KMD の銀行注文設定を指定する DXGK_SEGMENTBANKPREFERENCE 構造体。 このメンバーが指定されている場合、VidMm は、最も優先されるセグメントに関する銀行情報を使用します。これは、PreferredSegment メンバーが指定する DXGK_SEGMENTPREFERENCE 構造体の SegmentId0 メンバーによって指定されます。

PreferredSegment

[out]割り当てのページインに使用 VidMm KMD が要求する優先セグメント識別子を示す DXGK_SEGMENTPREFERENCE 構造体。

SupportedReadSegmentSet

[out]読み取り操作の PreferredSegment メンバーで KMD が設定できるセグメント識別子。 これらの識別子が示すセグメントは、パフォーマンスに関係なく、読み取り操作の割り当てに使用 VidMm KMD が要求するセグメントです。 ビット 0 の設定は、最初のセグメントがサポートされていることを示し、設定ビット 1 は 2 番目のセグメントがサポートされていることを示します。

KMD では、読み取り操作でサポートされているセグメントに対してのみ基本設定を設定できます。 VidMm は、ドライバーが PreferredSegment メンバーでサポートされていないセグメントの基本設定を設定しようとした場合にアサートします。

MmuSet

SupportedWriteSegmentSet

[out]書き込み操作の PreferredSegment メンバーで KMD が設定できるセグメント識別子。 これらの識別子が示すセグメントは、パフォーマンスに関係なく、VidMm が書き込み操作の割り当てに使用する KMD 要求のセグメントです。 ビット 0 の設定は、最初のセグメントがサポートされていることを示し、設定ビット 1 は 2 番目のセグメントがサポートされていることを示します。

KMD では、書き込み操作でサポートされているセグメントに対してのみ基本設定を設定できます。 VidMm は、ドライバーが PreferredSegment メンバーでサポートされていないセグメントの基本設定を設定しようとした場合にアサートします。

EvictionSegmentSet

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

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

MaximumRenamingListLength

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

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

PhysicalAdapterIndex

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

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

hAllocation

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

Flags

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

FlagsWddm2

[out]ビット フィールド フラグでの割り当てのプロパティを識別する DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 構造体。 これらのプロパティは、作成する割り当ての種類を示します。 KMD は、VidMmに対してこれらのフラグを指定します。 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 構造が変更され、読み取りと書き込みのセグメント セットが区別されなくなりました。 サーフェスの作成時に、VidMm は、SupportedReadSegmentSet 値を無視し、SupportedWriteSegmentSetによって提供されるセグメント セット 使用します。 ドライバーは、この値が、その目的のために割り当てで使用できるセグメント セットを正確に表すことを確認する必要があります。

サポートされている読み取りセグメント セットを無視しても、サポートされなくなったという意味ではなく、単にこれらのセット間に違いが生じないようにする必要があります。VidMm では、1 つのセグメント セットからの割り当てに適したセグメントを選択できます。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
ヘッダー d3dkmddi.h (D3dkmddi.h を含む)

関連項目

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation を する

DxgkDdiRender を する

pfnAllocateCb を する