次の方法で共有


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 に設定すると、リーフ 1 を除くすべてのレベルのページ テーブルで、大きなページ (DXGK_PTEで LargePageビット) がサポートされます。

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 に設定すると、ビデオ メモリ マネージャー 割り当て削除中に TransferVirtual の SourcePageTable アドレスが設定されます。

LegacyBehaviors.Reserved

引っ込み思案;使用しないでください。

必要条件

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