DXGK_GPUMMUCAPS 構造体 (d3dkmddi.h)

DXGK_GPUMMUCAPS構造体は、仮想メモリ アドレス指定機能を表現するためにカーネル モード ドライバーによって使用されます。

構文

typedef struct _DXGK_GPUMMUCAPS {
  union {
    struct {
      UINT ReadOnlyMemorySupported : 1;
      UINT NoExecuteMemorySupported : 1;
      UINT ZeroInPteSupported : 1;
      UINT ExplicitPageTableInvalidation : 1;
      UINT CacheCoherentMemorySupported : 1;
      UINT PageTableUpdateRequireAddressSpaceIdle : 1;
      UINT LargePageSupported : 1;
      UINT DualPteSupported : 1;
      UINT AllowNonAlignedLargePageAddress : 1;
      UINT SysMem64KBPageSupported : 1;
      UINT InvalidTlbEntriesNotCached : 1;
      UINT SysMemLargePageSupported : 1;
      UINT CachedPageTables : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 20;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#else
      UINT Reserved : 24;
#endif
    };
    UINT Value;
  };
  DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
  UINT                     VirtualAddressBitCount;
  UINT                     LeafPageTableSizeFor64KPagesInBytes;
  UINT                     PageTableLevelCount;
  struct {
    UINT SourcePageTableVaInTransfer : 1;
    UINT Reserved : 31;
  } LegacyBehaviors;
} DXGK_GPUMMUCAPS;

メンバー

ReadOnlyMemorySupported

1 に設定すると、ドライバーはメモリ ページでの読み取り専用保護をサポートします。

NoExecuteMemorySupported

1 に設定すると、ドライバーはメモリ ページで 実行 保護をサポートしません。

ZeroInPteSupported

1 に設定すると、GPU は Zero DXGK_PTE フラグをサポートします。 これは、すべてのページ テーブル レベルに適用されます。

ExplicitPageTableInvalidation

解放する前に 、UpdatePageTable を使用して、ページ テーブルまたはページ ディレクトリのすべてのエントリを無効な状態に明示的に配置する必要があることを示します。 既定では、ビデオ メモリ マネージャーは、これらのエントリが不要になった場合に、以前に有効なエントリを含むページ テーブルを解放できます (たとえば、大きな GPU 仮想アドレス範囲を解放すると、基になるページ テーブルが破棄されます)。

注意

このフラグは、通常、ページ テーブルをエミュレートする必要があり、ページ テーブルエントリごとに情報を追跡する必要があり、すべてのページ テーブルエントリの更新に明確な init/deinit ペアを必要とするソフトウェア ドライバーによって使用されます。

CacheCoherentMemorySupported

ドライバーがページ テーブル エントリの CacheCoherent ビットをサポートし、システム メモリへの I/O コヒーレント転送を実行できることを示します。

PageTableUpdateRequireAddressSpaceIdle

エンジンによって現在使用されているアドレス空間のページ テーブル エントリの更新または変換のルックアサイド バッファーの無効化が GPU でサポートされていないことを示します。 このフラグを設定すると、ビデオ メモリ マネージャーは、ページ テーブルのエントリが変更されたとき、および変換のルックアサイド バッファーが無効になったときに、アドレス空間を共有するすべてのコンテキストが中断されるようにします。

LargePageSupported

1 に設定すると、リーフ テーブルを除くすべてのレベルのページ テーブルで、大きなページ (DXGK_PTELargePage ビット) がサポートされます。

DualPteSupported

1 に設定すると、GPU では、レベル 1 のページ テーブル (4 KB ページ テーブルと 64 KB ページ テーブル) のページ テーブルへの 2 つのポインターがサポートされます。

AllowNonAlignedLargePageAddress

1 に設定すると、大きなページ エントリの物理アドレスがリーフ ページ テーブルカバレッジにアラインされていない場合、オペレーティング システムは LargePage フラグを設定できます。 Windows 10 バージョン 1607 (WDDM 2.1) 以降で使用できます。

SysMem64KBPageSupported

ドライバーは、64 KB のメモリ セグメント管理を提供します。 Windows 10 バージョン 1607 (WDDM 2.1) 以降で使用できます。

InvalidTlbEntriesNotCached

このビットが設定されている場合、ドライバーは無効な状態から有効な状態に移行している VA 範囲に対する FlushTlb 要求の DxgkDdiBuildPagingBuffer への呼び出しを受け取りません。 ハードウェアの TLB が無効な変換をキャッシュしないことが予想されます

Windows 10 バージョン 1903 (WDDM 2.6) 以降で使用できます。

SysMemLargePageSupported

ドライバーは、大きなページのサポートを提供します。 Windows Server 2022 (WDDM 2.9) 以降で使用できます。

CachedPageTables

キャッシュされたページ テーブルがサポートされています。 WDDM 3.1 以降で使用できます。

Reserved

システム使用のために予約済み。は使用しないでください。

Value

和集合の構造体の値を整数で表します。

PageTableUpdateMode

DxgkDdiUpdatePageTable 操作で使用されるアドレスの種類を定義します。 DXGK_PAGETABLEUPDATE_GPU_VIRTUALが設定されている場合、すべてのページング操作は、システム コンテキストの仮想アドレス空間で行われます。 ページ ディレクトリがローカル GPU メモリ セグメントにある場合、更新モードを DXGK_PAGETABLEUPDATE_CPU_VIRTUAL に設定することはできません。

VirtualAddressBitCount

GPU 仮想アドレス内のビット数。

LeafPageTableSizeFor64KPagesInBytes

64 KB ページが使用されている場合のリーフ ページ テーブルのサイズ。 サイズは、CPU ページ サイズ (4096) の倍数である必要があります。

PageTableLevelCount

サポートされているページ テーブル レベルの数。 最小値は 2 です ( DXGK_MIN_PAGE_TABLE_LEVEL_COUNTとして定義されます)。 最大値は DXGK_MAX_PAGE_TABLE_LEVEL_COUNT

PageTableLevelCount が 2 の場合、ルート ページ テーブルのサイズは動的に変更でき、ページ テーブルのサイズは DxgkDdiGetRootPageTableSize によって決定されます。 PageTableLevelCount が 2 より大きい場合、すべてのページ テーブル レベルのサイズは固定され、DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes で記述されます。

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

1 に設定すると、割り当ての削除中に、ビデオ メモリ マネージャーによって TransferVirtualSourcePageTable アドレスが設定されます。

LegacyBehaviors.Reserved

予約済みです。使わないでください。

要件

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