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 セグメントと unmap-aperture-segment 操作の種類も実装する必要があります。
このメンバーの設定は、32 ビット Value メンバー (0x00000001) の最初のビットを設定することと同じです。
Agp
[out]セグメントが AGP**-type aperture セグメントであるかどうかを指定する UINT 値。チップセットが公開する AGP アパーチャの一部を使用します。 ビデオ メモリ マネージャーは、基になるアパーチャのページを割り当て、グラフィック アドレス再マップ テーブル (GART) ドライバーと通信して、アパーチャのメモリをマップおよびマップ解除します。 存在できる AGP セグメントは 1 つだけであるため、ドライバーは、Agp ビット フィールド フラグを他のDXGK_SEGMENTFLAGSビット フィールド フラグと共に指定しないでください。
このメンバーの設定は、32 ビット Value メンバー (0x00000002) の 2 番目のビットを設定することと同じです。
CpuVisible
[out]メモリ セグメントを記述する DXGK_SEGMENTDESCRIPTOR 構造体の CpuTranslatedAddress メンバーによって指定されたアドレスで、CPU からメモリ セグメントにアクセスできるかどうかを指定する UINT 値。
この部材は、AGPタイプの絞りセグメントを含む絞りセグメントに対して意味を持たない。 唯一の例外は、ユーザー モード ディスプレイ ドライバーがプライマリ割り当ての代替仮想アドレスを設定していない場合 (つまり、pfnLockCb 関数の呼び出し中に、D3DDDICB_LOCKFLAGS 構造体の Flags メンバーで UseAlternateVA 設定していない場合) に発生します。
詳細については、「解説」を参照してください。
このメンバーの設定は、32 ビット Value メンバー (0x00000004) の 3 番目のビットを設定することと同じです。
UseBanking
[out]セグメント内の割り当ての配置に関するヒントをビデオ メモリ マネージャーに提供するためにドライバーが使用するバンクにセグメントを分割するかどうかを指定する UINT 値。 また、ドライバーは、NbOfBanks で有効な銀行情報を指定し、セグメントを記述する DXGK_SEGMENTDESCRIPTOR 構造体の 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 値です。 この場合、ドライバーは、ダイレクト フリップ割り当てをピン留めして、このセグメントからスキャンアウトできることを確認する必要があります。
このメンバーの設定は、32 ビット Value メンバー (0x00000400) の 11 ビットを設定することと同じです。
Windows 8 以降でサポートされています。
Use64KBPages
[out]設定すると、GPU メモリ セグメントは 64 KB ページをサポートします。 それ以外の場合は、4 KB のページがサポートされます。 ドライバーが上限を設定し、割り当てをセグメントにページングできる場合、DXGK_ALLOCATIONINFOからカーネル モード ドライバーによって返される割り当ての配置は、64 KB の倍数である必要があります。
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.StandardAllocationType が D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) で絞りセグメントを使用し、DXGK_ALLOCATIONINFOFLAGSする特殊な場合。UseAlternateVAが設定されていない、ドライバーは、ドライバーの DxgkDdiQueryAdapterInfo 関数が呼び出されたときに、セクションベースのプライマリ割り当て (DXGK_VIDMMCAPS.SectionBackedPrimary が設定されている) を使用する必要があります。 セクションベースのプライマリを使用すると、絞りセグメントの CpuVisible 制限を回避できます。
セクションに基づく共有プライマリ割り当てを使用することで、絞りセグメントに対 CpuVisible の制限を回避できます。 この場合は、共有プライマリ割り当て (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType が D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) で絞りセグメントを使用します。DXGK_ALLOCATIONINFOFLAGS設定しないでください。UseAlternateVAをし、ドライバーの DxgkDdiQueryAdapterInfo 関数が呼び出されたときに、セクションベースのプライマリ割り当て (DXGK_VIDMMCAPS設定 .SectionBackedPrimary) を使用します。
最適化されたスタンバイ設定
次のように、PreservedDuringStandby、PreservedDuringHibernate、および 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 以降で使用できます。 |
ヘッダー | d3dkmddi.h (D3dkmddi.h を含む) |
関連項目
DxgkDdiBuildPagingBufferをする
DxgkDdiQueryAdapterInfoの