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 位 Value 成員的第一個位 (0x00000001) 。
Agp
[out]UINT 值,指定區段是否為 AGP**類型光圈區段,它會使用晶元組所公開的 AGP 光圈部分。 視訊記憶體管理員會配置基礎光圈的頁面,並與圖形位址重新對應表格 (GART) 驅動程序通訊,以對應和取消對應光圈的記憶體。 因為只有一個 AGP 區段可以存在,所以驅動程式不應該使用任何其他DXGK_SEGMENTFLAGS位欄位欄位旗標來指定 Agp 位字段旗標。
設定此成員相當於設定 32 位 Value 成員的第二個位 (0x00000002) 。
CpuVisible
[out]UINT 值,指定在描述記憶體區段之 DXGK_SEGMENTDESCRIPTOR 結構之 CpuTranslatedAddress 成員所指定的位址上,記憶體區段是否可供 CPU 存取。
此成員對於光圈區段沒有意義,包括 AGP 類型光圈區段。 唯一的例外狀況是在呼叫 pfnLockCb 函式) 期間,當驅動程式未在呼叫 pfnLockCb 函式期間,於 D3DDDICB_LOCKFLAGS 結構的 Flags 成員中設定 UseAlternateVA 時,主要配置 (設定替代虛擬位址時發生。
如需詳細資訊,請參閱。
設定此成員相當於設定 32 位 Value 成員的第三個位 (0x00000004) 。
UseBanking
[out]UINT 值,指定區段是否分割成驅動程式用來為影片記憶體管理員提供有關區段內配置位置的提示。 驅動程式也應該在描述區段之DXGK_SEGMENTDESCRIPTOR結構的 NbOfBanks 和 pBankRangeTable 成員中指定有效的銀行資訊。
設定此成員相當於設定 32 位 Value 成員的第四個位 (0x00000008) 。
CacheCoherent
[out]UINT 值,指定光圈區段是否可以與對應至光圈的可快取頁面維持快取一致性。 只有設定 Aperture 成員 (才能設定此成員,也就是 CacheCoherent 對於記憶體區段) 沒有任何意義。
設定此成員相當於設定 32 位 Value 成員的第五個位 (0x00000010) 。
PitchAlignment
[out]UINT 值,指定是否必須對齊對應至線段的配置。 針對這種類型的區段,視訊記憶體管理員會針對配置使用DXGK_ALLOCATIONINFO結構的 Size 成員,為配置備份存儲區。 不過,影片記憶體管理員會使用 DXGK_ALLOCATIONINFO的 PitchAlignedSize 成員來配置區段的資源。 針對此類型區段所設定的配置,通常針對備份儲存區和區段有不同的大小。 當備份儲存區大小不符合區段大小時,驅動程式必須決定如何正確移動配置中的數據。 這種類型的區段無法用於收回。
設定此成員相當於設定 32 位 Value 成員 (0x00000020) 的第六個位。
PopulatedFromSystemMemory
[out]UINT 值,指定是否實際從驅動程式在初始化期間配置的系統記憶體填入記憶體區段。 如果記憶體區段是從 BIOS 保留的系統記憶體填入,而且無法存取作業系統 (,則操作系統不會在操作系統報告系統記憶體總數時計算此系統記憶體) ,驅動程式不應該設定此旗標。 此旗標無效,而且會在光圈區段上忽略。
設定此成員相當於設定 32 位 Value 成員的第七位 (0x00000040) 。
PreservedDuringStandby
[out]UINT 值,指定區段是否會在轉換至待命系統電源狀態時保留。
如需電源轉換選項的詳細資訊,請參閱。
設定這個成員相當於設定 32 位 Value 成員的第八位 (0x00000080) 。
從 Windows 8 開始支援。
PreservedDuringHibernate
[out]UINT 值,指定區段是否在轉換至休眠系統電源狀態時保留。 除非也設定 PreservedDuringStandby 成員,否則請勿設定此旗標。 如需電源轉換選項的詳細資訊,請參閱。
設定此成員相當於設定 32 位 Value 成員的第九位 (0x00000100) 。
從 Windows 8 開始支援。
PartiallyPreservedDuringHibernate
[out]UINT 值,指定區段是否在轉換至休眠系統電源狀態時部分保留。 除非也設定 PreservedDuringStandby 成員,否則請勿設定此旗標。 如需電源轉換選項的詳細資訊,請參閱。
設定此成員相當於設定 32 位 Value 成員的第十位 (0x00000200) 。
從 Windows 8 開始支援。
DirectFlip
[out]UINT 值,指定區段是否支援直接翻轉配置。 在此情況下,驅動程式必須確定可以從此區段釘選並掃描直接翻轉配置。
設定此成員相當於設定 32 位 Value 成員的第十一位 (0x00000400) 。
從 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]設定時,表示在待命期間會保留 VPN 的內容。
EncryptedPagingSupported
[out]設定時,表示在分頁期間會加密受硬體保護的配置。
LocalBudgetGroup
[out]設定時,表示此區段會根據本機記憶體區段預算群組計算。
NonLocalBudgetGroup
[out]設定時,表示此區段會根據非本機記憶體區段預算群組計算。
PopulatedByReservedDDRByFirmware
[out]設定時,表示韌體會從保留的系統 DDR 記憶體填入此區段。 從 Windows Server 2022 (WDDM 2.9) 開始提供。
Reserved
[out]這個成員是保留的,而且應該設定為零。
Value
[out]DXGK_SEGMENTFLAGS的等位成員包含可保存可識別區段屬性的32位值。
備註
驅動程式可以在 32 位 Value 成員中設定位,或在DXGK_SEGMENTFLAGS包含的聯集中設定結構的個別成員,來指定區段的屬性。
請注意,針對 AGP 類型光圈區段,驅動程式必須以獨佔方式設定DXGK_SEGMENTFLAGS包含之等位中結構的 Agp 成員。 雖然 AGP 類型光圈區段是一個光圈,而且 CPU 可以看到,如果設定了任何其他成員,配接器將無法初始化。
在特殊情況下,配置會在共用的主要配置上使用光圈區段 (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA。StandardAllocationType會D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) 和DXGK_ALLOCATIONINFOFLAGS。未設定UseAlternateVA,驅動程式應該使用區段支援的主要配置 (DXGK_VIDMMCAPS。呼叫驅動程式的 DxgkDdiQueryAdapterInfo 函式時,SectionBackedPrimary 會設定) 。 藉由使用區段支援的主要複本,您可以避免對光圈區段使用 CpuVisible 的限制。
您可以使用共用、區段支援的主要配置,避免對光圈區段使用 CpuVisible 的限制。 在此情況下,請使用共用主要配置 (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA上的光圈區段。StandardAllocationTypeD3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) ,請勿設定DXGK_ALLOCATIONINFOFLAGS。UseAlternateVA,並使用區段支援的主要配置 (集DXGK_VIDMMCAPS。呼叫驅動程式的 DxgkDdiQueryAdapterInfo 函式時,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 (include D3dkmddi.h) |