D3DDDI_ALLOCATIONINFO2 構造体 (d3dukmdt.h)

D3DDDI_ALLOCATIONINFO2構造体は、割り当てを記述します。

構文

typedef struct _D3DDDI_ALLOCATIONINFO2 {
  D3DKMT_HANDLE                         hAllocation;
  union {
    HANDLE     hSection;
    const VOID *pSystemMem;
  } D3DKMT_ALIGN64;
  void                                  D3DKMT_PTR(
    VOID               *unnamedParam1,
    pPrivateDriverData unnamedParam2
  );
  UINT                                  PrivateDriverDataSize;
  D3DDDI_VIDEO_PRESENT_SOURCE_ID        VidPnSourceId;
  union {
    struct {
      UINT Primary : 1;
      UINT Stereo : 1;
      UINT OverridePriority : 1;
#if ...
      UINT Reserved : 29;
#elif
      UINT Reserved : 30;
#else
      UINT Reserved : 31;
#endif
    };
    UINT Value;
  } Flags;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
  union {
    UINT                     Priority;
    D3DKMT_ALIGN64 ULONG_PTR Unused;
  };
#if ...
  D3DKMT_ALIGN64 ULONG_PTR              Reserved[5];
#else
  D3DKMT_ALIGN64 ULONG_PTR              Reserved[6];
#endif
} D3DDDI_ALLOCATIONINFO2;

メンバー

hAllocation

[out]割り当てに対するカーネル モード ハンドルを 表すD3DKMT_HANDLE ハンドル。 このハンドルは、Direct3D ランタイムの pfnAllocateCb 関数が D3DDDICB_ALLOCATE 構造体の hKMResource メンバーで返すカーネル モード リソース ハンドル (NULL 以外の場合) に関連付けられます。 ユーザー モード ディスプレイ ドライバーは、このカーネル モードの割り当てハンドルを使用して、コマンド バッファー内の割り当てを参照できます。

D3DKMT_ALIGN64

hSectionpSystemMem との和集合。

D3DKMT_ALIGN64.hSection

[入力]有効なセクション オブジェクトへのハンドル。 D3DKMT_CREATEALLOCATIONFLAGS::ExistingSection が設定されている場合は、hSection を使用します。

D3DKMT_ALIGN64.pSystemMem

[入力]事前に割り当てられたシステム メモリへのポインター。 D3DKMT_CREATEALLOCATIONFLAGS::ExistingSection が設定されていない場合は、pSystemMem を使用します。

void D3DKMT_PTR( VOID *unnamedParam1, pPrivateDriverData unnamedParam2)

PrivateDriverDataSize

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

VidPnSourceId

[入力]割り当てがプライマリ サーフェス用の場合、ビデオ 存在ネットワーク (VidPN) トポロジのパス内のビデオ 存在ソースの 0 から始まる VidPN 識別番号。 ドライバーは、他の種類の割り当てではなく、プライマリ割り当ての種類にのみ VidPnSourceId を設定する必要があります。 ドライバーが pfnAllocateCb 関数の呼び出しで他の割り当て型に VidPnSourceId を設定した場合、pfnAllocateCb はD3DDDI_ID_NOTAPPLICABLEを返します。

DirectX グラフィックス カーネル サブシステムが共有プライマリ サーフェスの割り当ての作成を開始すると、ディスプレイ ミニポート ドライバーは、DXGK_ALLOCATIONINFO構造体の pPrivateDriverData メンバーが指すD3DKMDDI_SHAREDPRIMARYSURFACEDATA構造体の VidPnSourceId メンバーから識別番号を決定できます。

Flags

[入力]構造体または割り当ての種類を識別する 32 ビット値を含む共用体。

Flags.Primary

[入力]割り当てがデスクトップの一部であるかどうかを指定する UINT。 このような割り当ては、CPU から暗黙的にアクセスできます。 プライマリ割り当ては、作成時に固定するか、作成時にピン留めすることはできません。

このメンバーの設定は、32 ビット メンバー (0x00000001) の最初のビットを設定することと同じです。

Flags.Stereo

[入力]Windows 8 (WDDM 1.2) 以降でサポートされます。 割り当てがステレオ プライマリ割り当てであるかどうかを指定する UINT。 Stereo メンバーは、プライマリ メンバーが設定されている場合にのみ設定できます。

このメンバーの設定は、32 ビット Value メンバー (0x00000002) の 2 番目のビットを設定することと同じです。

Flags.OverridePriority

[入力]Windows 10 バージョン 1703 (WDDM 2.2) 以降でサポートされています。 ユーザー モード グラフィックス ドライバーによって確立された優先度をオーバーライドします。

Flags.Reserved

[入力]このメンバーは予約済みであり、0 に設定する必要があります。

Flags.Value

[入力]割り当ての種類を識別する 32 ビット値。

GpuVirtualAddress

[out]作成された割り当ての GPU 仮想アドレス。

Priority

[入力]割り当ての優先順位。

Unused

未使用。

Reserved[5]

Reserved[6]

解説

ユーザー モードディスプレイ ドライバーが、D3DDDI_ALLOCATIONINFO の Flags メンバーでプライマリ ビット フィールド フラグを設定すると、ディスプレイ ミニポート ドライバーの DxgkDdiCreateAllocation 関数の呼び出しで割り当てに対して、DXGKARG_CREATEALLOCATION構造体の pAllocationInfo メンバーのDXGK_ALLOCATIONINFO構造体に特定の制限が適用されます。 これらの制限は以下のとおりです。

  • 割り当ては、優先順位に従って割り当てられます。それ以外の場合、割り当ては既定でサポートされている書き込みセグメント セットに設定され、書き込みセグメント セット内のすべての指定されたセグメントに CPU アクセス可能である必要があります。

  • ディスプレイ ミニポート ドライバーは、DXGK_ALLOCATIONINFOFlags メンバーで次のビット フィールド フラグを設定できません。

  • PermanentSysMem

  • キャッシュ済み

  • Protected

  • ExistingSysMem

  • ExistingKernelSysMem

D3DDDI_ID_NOTAPPLICABLE定数は D3dukmdt.h で定義されます。

要件

要件
サポートされている最小のクライアント Windows 7
Header d3dukmdt.h

こちらもご覧ください

CreateResource

D3DDDICB_ALLOCATE

D3DDDI_SURFACEINFO

D3DKMDDI_SHAREDPRIMARYSURFACEDATA

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DxgkDdiCreateAllocation

pfnAllocateCb