DXGK_SEGMENTFLAGS構造体 (d3dkmddi.h)

DXGK_SEGMENTFLAGS構造体は、ドライバーが DxgkDdiQueryAdapterInfo 関数の呼び出しを通じて提供するセグメントのプロパティを識別します。

構文

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

メンバー

Aperture

[out]セグメントがメモリ セグメントではなく開口セグメントであるかどうかを指定する UINT 値。 絞りセグメントには、割り当て用のコンテンツを保持できる物理ページがありません。 ビデオ メモリ マネージャーがメモリ セグメントに割り当てをページすると、メモリ マネージャーは、割り当ての内容をシステム メモリ バッキング ストアからセグメントの場所に転送します。 ビデオ メモリ マネージャーがアロケーションをアパーチャ セグメントにページ分割すると、メモリ マネージャーはアロケーション バッキング ストアの物理ページをセグメントにマップします。

ドライバーがこのメンバーを指定する場合は、 DxgkDdiBuildPagingBuffer 関数の map-aperture-segment および unmap-aperture-segment 操作の種類も実装する必要があります。

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

Agp

[out]セグメントが AGP**タイプの開口セグメントであるかどうかを指定する UINT 値。チップセットが公開する AGP 開口の一部を使用します。 ビデオ メモリ マネージャーは、基になるアパーチャのページを割り当て、グラフィック アドレス再マップ テーブル (GART) ドライバーと通信して、アパーチャのメモリをマップおよびマップ解除します。 AGP セグメントは 1 つだけ存在できるため、ドライバーは、他のDXGK_SEGMENTFLAGSビット フィールド フラグと共に Agp ビット フィールド フラグを指定しないでください。

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

CpuVisible

[out]メモリ セグメントを記述するDXGK_SEGMENTDESCRIPTOR構造体のCpuTranslatedAddress メンバーによって指定されたアドレスで、メモリ セグメントに CPU がアクセスできるかどうかを指定する UINT 値。

この部材は、AGP型開口セグメントを含む開口セグメントに対して意味を持たない。 唯一の例外は、ユーザー モード ディスプレイ ドライバーがプライマリ割り当ての代替仮想アドレスを設定していない場合 (つまり、pfnLockCb 関数の呼び出し中に、D3DDDICB_LOCKFLAGS構造体の Flags メンバーでドライバーが UseAlternateVA を設定していない場合) に発生します。

詳細については、「解説」を参照してください。

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

UseBanking

[out]セグメント内の割り当ての配置に関するヒントをビデオ メモリ マネージャーに提供するためにドライバーが使用するバンクにセグメントを分割するかどうかを指定する UINT 値。 ドライバーは、セグメントを記述するDXGK_SEGMENTDESCRIPTOR構造体の NbOfBanks および pBankRangeTable メンバーに有効な銀行情報も指定する必要があります。

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

CacheCoherent

[out]絞りセグメントが、開口にマップされたキャッシュ可能なページとのキャッシュの一貫性を維持できるかどうかを指定する UINT 値。 このメンバーは、 Aperture メンバーを設定する場合にのみ設定できます (つまり、 CacheCoherent にはメモリ セグメントに意味はありません)。

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

PitchAlignment

[out]セグメントにマップされる割り当てをピッチアラインする必要があるかどうかを指定する UINT 値。 この種類のセグメントでは、ビデオ メモリ マネージャーは、割り当てにDXGK_ALLOCATIONINFO構造体の Size メンバーを使用して、割り当てのバッキング ストアを割り当てます。 ただし、ビデオ メモリ マネージャーは、DXGK_ALLOCATIONINFO の PitchAlignedSize メンバーを使用して、セグメントのリソースを割り当てます。 この種類のセグメントを対象とする割り当ては、通常、バッキング ストアとセグメントのサイズが異なります。 バッキング ストアのサイズがセグメント サイズと一致しない場合、ドライバーは割り当て内のデータを正しく移動する方法を決定する必要があります。 この種類のセグメントは、削除には使用できません。

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

PopulatedFromSystemMemory

[out]初期化中にドライバーが割り当てたシステム メモリからメモリ セグメントが実際に設定されるかどうかを示す UINT 値。 BIOS が予約したシステム メモリからメモリ セグメントが設定され、オペレーティング システムからアクセスできない場合 (つまり、オペレーティング システムがシステム メモリの合計量を報告したときに、オペレーティング システムはこのシステム メモリをカウントしません)、ドライバーはこのフラグを設定しないでください。 このフラグは無効であり、開口セグメントでは無視されます。

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

PreservedDuringStandby

[out]スタンバイ システムの電源状態への切り替えでセグメントを保持するかどうかを指定する UINT 値。

電源切り替えオプションの詳細については、「解説」を参照してください。

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

Windows 8 以降でサポートされています。

PreservedDuringHibernate

[out]休止状態のシステム電源状態への切り替えでセグメントを保持するかどうかを指定する UINT 値。 PreservedDuringStandby メンバーも設定されていない限り、このフラグを設定しないでください。 電源切り替えオプションの詳細については、「解説」を参照してください。

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

Windows 8 以降でサポートされています。

PartiallyPreservedDuringHibernate

[out]休止状態のシステム電源状態への切り替えでセグメントを部分的に保持するかどうかを指定する UINT 値。 PreservedDuringStandby メンバーも設定されていない限り、このフラグを設定しないでください。 電源切り替えオプションの詳細については、「解説」を参照してください。

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

Windows 8 以降でサポートされています。

DirectFlip

[out]セグメントが Direct Flip 割り当てをサポートするかどうかを指定する UINT 値。 この場合、ドライバーは Direct Flip 割り当てをピン留めして、このセグメントからスキャンできることを確認する必要があります。

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

Windows 8 以降でサポートされています。

Use64KBPages

[out]設定すると、GPU メモリ セグメントは 64 KB ページをサポートします。 それ以外の場合は、4 KB ページがサポートされます。 ドライバーが上限を設定し、割り当てをセグメントにページングできる場合、 DXGK_ALLOCATIONINFOからカーネル モード ドライバーによって返される割り当てアラインメントは、64 KB の複数の a である必要があります。

Windows 10 以降でサポートされています。

ReservedSysMem

[out]システム用に予約されており、カーネル モード ドライバーで設定しないでください。

Windows 10 以降でサポートされています。

SupportsCpuHostAperture

[out]設定すると、セグメントは CPU ホスト開口を介してマップできます。 このフラグは、 CpuVisible フラグと組み合わせて使用することはできません。

Windows 10 以降でサポートされています。

SupportsCachedCpuHostAperture

[out]設定すると、ハードウェアが CPU キャッシュコヒーレント CPU ホストの開口をサポートしていることを示します。 さらに、 SupportsCpuHostAperture フラグを設定する必要があります。 フラグは通常、ソフトウェア GPU エミュレーション ドライバーによって設定されます。

Windows 10 以降でサポートされています。

ApplicationTarget

[out]設定すると、このセグメントをアプリケーション予算の対象にする必要があることを示します。

Windows 10 以降でサポートされています。

VprSupported

[out]を設定すると、ビデオ保護リージョン (VPR) がサポートされていることを示します。

VprPreservedDuringStandby

[out]を設定すると、VPR のコンテンツがスタンバイ中に保持されることを示します。

EncryptedPagingSupported

[out]を設定すると、ハードウェアで保護された割り当てがページング中に暗号化されることを示します。

LocalBudgetGroup

[out]を設定すると、このセグメントがローカル メモリ セグメント予算グループに対してカウントされることを示します。

NonLocalBudgetGroup

[out]を設定すると、このセグメントがローカル以外のメモリ セグメント予算グループに対してカウントされることを示します。

PopulatedByReservedDDRByFirmware

[out]を設定すると、このセグメントが予約システム DDR メモリからファームウェアによって設定されることを示します。 Windows Server 2022 (WDDM 2.9) 以降で使用できます。

Reserved

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

Value

[out]セグメントのプロパティを識別する 32 ビット値を保持できる、DXGK_SEGMENTFLAGSに含まれる共用体内のメンバー。

注釈

ドライバーは、32 ビットの Value メンバーでビットを設定するか、または含まれる共用体の構造体の個々のメンバー DXGK_SEGMENTFLAGS設定することによって、セグメントのプロパティを指定できます。

AGP タイプの絞りセグメントの場合、ドライバーは、DXGK_SEGMENTFLAGS含まれる共用体内の構造体の Agp メンバーのみを設定する必要があることに注意してください。 AGP タイプの絞りセグメントは絞りであり、CPU に表示されますが、他のメンバーが設定されている場合、アダプターの初期化に失敗します。

割り当てが共有プライマリ割り当て (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATAで開口セグメントを使用する特殊な場合。StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE)、 DXGK_ALLOCATIONINFOFLAGSUseAlternateVA が設定されていない場合、ドライバーはセクションに基づくプライマリ割り当て (DXGK_VIDMMCAPSを使用する必要があります。SectionBackedPrimary が設定されます)。 ドライバーの DxgkDdiQueryAdapterInfo 関数が呼び出されたとき。 セクションに基づくプライマリを使用すると、絞りセグメントに対する CpuVisible の制限を回避できます。

セクションに基づく共有プライマリ割り当てを使用することで、絞りセグメントに対する CpuVisible の制限を回避できます。 この場合は、共有プライマリ割り当て (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATAで開口セグメントを使用します。StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE)、 DXGK_ALLOCATIONINFOFLAGS設定しないでください。UseAlternateVA を使用し、セクションに基づくプライマリ割り当てを使用します ( DXGK_VIDMMCAPS設定します。SectionBackedPrimary) ドライバーの DxgkDdiQueryAdapterInfo 関数が呼び出されたとき。

最適化されたスタンバイ設定

次のように、 PreservedDuringStandbyPreservedDuringHibernateおよび PartiallyPreservedDuringHibernate メンバーの値の組み合わせによって、システムが低電力 (スタンバイ) システム状態になったときにセグメントがそのコンテンツを消去するかどうかを決定します。

スタンバイ中に保持される 休止中に保持 休止中に部分的に保持される スタンバイ状態 休止状態
1 1 1 無効 無効
1 1 0 消去されない 消去されない
1 0 1 消去されない 部分的に消去
1 0 0 消去されない 削除
0 1 1 無効 無効
0 1 0 無効 無効
0 0 1 無効 無効
0 0 0 削除 削除

オペレーティング システムは、"無効" とマークされているこのテーブル内の組み合わせを認識しません。

ハイブリッド スリープ モードが有効になっている場合、システムは休止状態の場合と同様に機能します。休止中に保持されていないセグメントは、低電力状態になっても消去されます。

要件

要件
サポートされている最小のクライアント Windows Vista 以降で使用できます。
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo