DXGK_ALLOCATIONINFOFLAGS 結構 (d3dkmddi.h)

DXGK_ALLOCATIONINFOFLAGS結構會識別配置的屬性。

語法

typedef struct _DXGK_ALLOCATIONINFOFLAGS {
  union {
    struct {
      UINT CpuVisible : 1;
      UINT PermanentSysMem : 1;
      UINT Cached : 1;
      UINT Protected : 1;
      UINT ExistingSysMem : 1;
      UINT ExistingKernelSysMem : 1;
      UINT FromEndOfSegment : 1;
      UINT Swizzled : 1;
      UINT Overlay : 1;
      UINT Capture : 1;
      UINT UseAlternateVA : 1;
      UINT SynchronousPaging : 1;
      UINT LinkMirrored : 1;
      UINT LinkInstanced : 1;
      UINT HistoryBuffer : 1;
      UINT AccessedPhysically : 1;
      UINT ExplicitResidencyNotification : 1;
      UINT HardwareProtected : 1;
      UINT CpuVisibleOnDemand : 1;
      UINT Reserved : 4;
      UINT DXGK_ALLOC_RESERVED16 : 1;
      UINT DXGK_ALLOC_RESERVED15 : 1;
      UINT DXGK_ALLOC_RESERVED14 : 1;
      UINT DXGK_ALLOC_RESERVED13 : 1;
      UINT DXGK_ALLOC_RESERVED12 : 1;
      UINT DXGK_ALLOC_RESERVED11 : 1;
      UINT DXGK_ALLOC_RESERVED10 : 1;
      UINT DXGK_ALLOC_RESERVED9 : 1;
      UINT DXGK_ALLOC_RESERVED4 : 1;
      UINT DXGK_ALLOC_RESERVED3 : 1;
      UINT DXGK_ALLOC_RESERVED2 : 1;
      UINT DXGK_ALLOC_RESERVED1 : 1;
      UINT DXGK_ALLOC_RESERVED0 : 1;
    };
    UINT Value;
  };
} DXGK_ALLOCATIONINFOFLAGS;

成員

CpuVisible

[out]UINT 值,指定 CPU 是否可以直接存取配置。 顯示迷你埠驅動程序必須設定此旗標,使用者模式顯示驅動程式才能成功在配置上呼叫 pfnLockCb 函式。 如果未在配置上設定此旗標, pfnLockCb 會傳回錯誤。

請注意,只有建立共用配置的進程可以鎖定該配置。

設定此成員相當於設定 32 位 Value 成員的第一個位 (0x00000001) 。

PermanentSysMem

[out]UINT 值,指定配置複本是否應該保留在系統記憶體中,即使內容位於記憶體區段中亦然。 根據預設,將配置傳輸至記憶體區段時,介面系統記憶體支援存放區會遺失。 指定 PermanentSysMem 旗標並從記憶體區段收回配置時,會捨棄配置的內容,而且如果配置未變更,則不會分頁 (也就是說,配置不是寫入作業的目標,因為它已分頁) 。

配置上的 pfnLockCb 呼叫一律會傳回配置的系統記憶體支援存放區。 如果使用者模式顯示驅動程式呼叫 pfnUnlockCb 時,配置位於記憶體區段中,則配置的記憶體區段資源會以新的內容更新。 透過 DxgkDdiBuildPagingBuffer 函式,此更新會顯示為顯示迷你埠驅動程式的一般分頁作業。 請注意,如果顯示迷你埠驅動程式需要頁面作業的最小區域大小或對齊方式,此需求應該反映在鎖定的區域。 當驅動程式設定 PermanentSysMem 時,驅動程式也必須設定 CpuVisible 成員。 驅動程式不得在主要介面上設定 PermanentSysMem

設定此成員相當於設定 32 位 Value 成員的第二個位 (0x00000002) 。

Cached

[out]UINT 值,指定配置備份儲存區是否應該配置為快取記憶體;根據預設,配置備份存放區會儲存為寫入合併的記憶體。 當快取記憶體配置用於未快取一致 (的區段中時,例如記憶體區段或 AGP 區段) ,視訊記憶體管理員會在適當的時間從處理器的快取排清配置內容,以確保配置內容的共通性。

當驅動程式設定 Cached ,同時設定 ExistingSysMemExistingKernelSysMem 成員時,驅動程式會向視訊記憶體管理員指出現有的記憶體已對應可快取。 如果現有的記憶體已對應可快取,但驅動程式無法設定快 取成員, 則視訊記憶體管理員無法確保數據一致性,而且會發生損毀。 驅動程式應該為應用程式或使用者模式顯示驅動程式讀取的配置設定快取成員。 驅動程式絕對不應該為僅寫入配置設定快取成員。

當驅動程式設定此成員時,驅動程式也必須設定 CpuVisible 成員。 驅動程式 不得在主要 介面上設定快取。

設定此成員相當於設定 32 位 Value 成員的第三個位 (0x00000004) 。

Protected

[out]UINT 值,指定配置支援存放區是否應該配置在核心記憶體中,而不是使用者位址空間,以保護配置不受應用程式的潛在直接 CPU 存取。 驅動程式無法結合 PermanentSysMemExistingSysMem 或 ExistingKernelSysMem 成員來設定此成員。 驅動程式不得在主要介面上設定 Protected

設定此成員相當於設定 32 位 Value 成員的第四個位 (0x00000008) 。

ExistingSysMem

[out]UINT 值,指定視訊記憶體管理員是否應該使用現有的系統記憶體範圍作為配置支援存放區。 系統記憶體範圍必須是目前進程的有效使用者模式位址,才能用於配置的大小。 系統記憶體範圍也必須是頁面對齊,而且必須是大小為倍數的頁面。

如果系統記憶體範圍是可快取的虛擬位址,驅動程式應該設定 Cached 成員,以通知視訊記憶體管理員,以確保配置上的快取一致性。 如果未指定 快取 成員,視訊記憶體管理員會判斷系統記憶體範圍無法快取、寫入合併或可快取;不過,在此情況下,驅動程式可確保快取一致性,或判斷快取一致性不是指定使用量的問題。

請注意,這種類型的配置會隱含地與 設定 PermanentSysMem 成員的配置具有相同的鎖定語意。

驅動程式無法將 ExistingSysMemPermanentSysMemProtectedExistingKernelSysMem 成員結合。 驅動程式不得在主要介面上設定 ExistingSysMem

設定此成員相當於設定 32 位 Value 成員的第五個位 (0x00000010) 。

ExistingKernelSysMem

[out]UINT 值,指定視訊記憶體管理員是否應該使用現有的系統記憶體範圍作為配置支援存放區。 系統記憶體範圍必須是一個有效的內核模式位址,該位址會對齊頁面和大小為倍數的頁面。

如果系統記憶體範圍是可快取的虛擬位址,驅動程式應該設定 Cached 成員,以通知視訊記憶體管理員,以確保配置上的快取一致性。 如果未指定 快取 成員,視訊記憶體管理員會判斷系統記憶體範圍無法快取、寫入合併或可快取;不過,在此情況下,驅動程式可確保快取一致性,或判斷快取一致性不是指定使用量的問題。

請注意,這種類型的配置會隱含地與 設定 PermanentSysMem 成員的配置具有相同的鎖定語意。

驅動程式無法與 PermanentSysMemProtectedExistingSysMem 成員結合來設定 ExistingKernelSysMem 驅動程式不得在主要介面上設定 ExistingKernelSysMem

設定此成員相當於設定 32 位 Value 成員 (0x00000020) 的第六個位。

FromEndOfSegment

[out]UINT 值,指定分頁期間是否應該從區段結尾配置配置。 視訊記憶體管理員會掃描區段位址空間,並尋找區段結尾的配置空間,而不是從區段開頭掃描, (這是預設行為) 。 不過,提示和慣用區段資訊會優先於此旗標。

設定此成員相當於設定 32 位 Value 成員的第七位 (0x00000040) 。

Swizzled

[out]UINT 值,指定配置是否雜亂,而且需要視訊記憶體管理員的特殊支持來鎖定配置。 如需有關撥動配置的詳細資訊,請參閱 鎖定雜亂配置。

設定這個成員相當於設定 32 位 Value 成員的第八位 (0x00000080) 。

Overlay

[out]UINT 值,指定配置是否適用於重迭作業。 重疊配置會釘選在記憶體中,除非發生逾時偵測和復原 (TDR) 程式、隨插即用 (PnP) 停止或層級 3 同步處理,否則視訊記憶體管理員無法收回這些配置。 請注意,在層級 3 同步處理發生之前,通常會終結重疊。 根據預設,重迭配置會受到限制,而且不能佔用超過最後 20% 的區段。 如果重疊配置配置在光圈區段中,顯示迷你埠驅動程序應該限制使用該光圈區段做為收回區段的任何其他配置大小,達到區段大小的 80%。 顯示迷你埠驅動程式表示配置可以使用區段進行收回,方法是為配置之 DXGK_ALLOCATIONINFO 結構的 EvictionSegmentSet 成員中指定適當的區段。 如果顯示迷你埠驅動程式未限制另一個配置的大小,視訊記憶體管理員就無法透過區段收回該配置,因為釘選的配置 (亦即,重疊配置) 佔用收回所需的區域。 在此情況下,正在收回的其他配置內容會遺失,且擁有遺失配置的應用程式無法再使用該配置轉譯。

設定此成員相當於設定 32 位 Value 成員的第九位 (0x00000100) 。

Capture

[out]UINT 值,指定配置是否用於擷取作業。 擷取配置會釘選在記憶體中,類似於重疊配置。 因此,套用至重迭配置的問題也適用於擷取配置。 如需這些問題的詳細資訊,請參閱 重迭 旗標的描述。 請注意,在 層級 3 同步 處理發生之前,通常會停止擷取。

設定此成員相當於設定 32 位 Value 成員的第十位 (0x00000200) 。

UseAlternateVA

[out]UINT 值,指定是否可以鎖定主要配置。 UseAlternateVA 僅適用於主要配置。 如果為任何其他配置指定 UseAlternateVA ,則不會建立配置。 使用 UseAlternateVA建立主要配置時,會在建立配置時設定主要配置的撥動範圍。

設定此成員相當於設定 32 位 Value 成員的第十一位 (0x00000400) 。

SynchronousPaging

[out]UINT 值,指定是否應該以同步方式分頁配置。 如果顯示迷你埠驅動程式為配置設定此位,則視訊記憶體管理員會等到配置不再忙碌 (,影片記憶體管理員會等到圖形處理單位 (GPU) 報告所有參考配置) 的柵欄,然後影片記憶體管理員才會提交參考配置的分頁緩衝區。

同樣地,影片記憶體管理員會在視訊記憶體管理員允許驅動程式提交非分頁直接記憶體存取 (DMA) 緩衝區之前,等候同步配置上的分頁作業完成。

設定此成員相當於設定 32 位 Value 成員的第十二位 (0x00000800) 。

LinkMirrored

[out]UINT 值,指定配置的單一實例是否應該復寫到邏輯配接器中的所有實體適配卡 (也就是連結) 。 視訊記憶體管理員會呼叫驅動程式來分頁,並在系統記憶體中使用單一共用備份存放區收回所有實體適配卡上的配置。

設定此成員相當於設定 32 位 Value 成員的第十三位 (0x00001000) 。

LinkInstanced

[out]UINT 值,指定配置的不同實例是否會分頁,並從 (邏輯配接器中的所有實體適配卡收回,也就是連結) 。 邏輯適配卡中的每個實體適配卡有一個系統記憶體備份儲存區。

設定此成員相當於設定 32 位 Value 成員的第十四位 (0x00002000) 。

HistoryBuffer

[out]UINT 值,指定使用者模式顯示驅動程式是否配置歷程記錄緩衝區。 顯示迷你埠驅動程序必須設定此旗標,以指出使用者模式驅動程式可以管理歷程記錄緩衝區的建立和解構。

當顯示迷你埠驅動程式設定 HistoryBuffer 時,它也必須設定 CpuVisible 旗標。 如果驅動程序支援快取一致的光圈區段,它也必須設定 [ 取],而且所有其他成員都必須設定為零。

設定此成員相當於設定 32 位 Value 成員的第十五位 (0x00004000) 。

從 Windows 8.1 開始支援。

AccessedPhysically

核心模式驅動程式會在配置上設定旗標,這些配置是由其實體位址存取。 這類配置將會從 GPU 記憶體區段連續配置。 從系統記憶體配置時,配置將不會連續。

設定此成員相當於設定 32 位 Value 成員的第十六位 (0x00008000) 。

從Windows 10 開始支援。

ExplicitResidencyNotification

當指定此旗標時,當配置落地變更 (認可) 時,驅動程式會收到 NotifyResidency 分頁緩衝區作業。 只有在已設定 AccessedPhysically 旗標時,才能設定旗標。

設定此成員相當於設定 32 位 Value 成員的第十七位 (0x00010000) 。

從Windows 10 開始支援。

HardwareProtected

設定此成員時,配置會保留用於硬體數位版權管理的內容 (DRM) 。

CpuVisibleOnDemand

設定此成員時,視訊記憶體管理員會嘗試在對應/鎖定時配置配置虛擬位址。 這會導致配置沒有永久的虛擬位址,這可減少使用的虛擬位址空間量。 其行為類似於 CpuVisible 旗標,因為它是 CPU 直接存取的配置,但它只會取得「隨選」的虛擬位址,而不是永久指派。

Reserved

保留供系統使用。 從 Windows 10 開始提供。

DXGK_ALLOC_RESERVED16

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED15

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED14

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED13

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED12

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED11

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED10

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED9

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED4

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED3

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED2

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED1

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

DXGK_ALLOC_RESERVED0

[in]這個成員是保留的,而且應該設定為零。 從 Windows 8 開始支援。

Value

[out] 聯集中的成員,DXGK_ALLOCATIONINFOFLAGS 包含可保存可識別配置屬性的32位值。

備註

以 WDDM 2.0 之前的任何 WDDM 版本為目標的顯示迷你埠驅動程式會使用此結構來指定視訊記憶體管理員的這些旗標。 以WDDM版本 >為目標的驅動程式 = WDDM 2.0 應該使用 DXGK_ALLOCATIONINFOFLAGS_WDDM2_0

您可以在 32 位 Value 成員中設定位,或在 DXGK_ALLOCATIONINFOFLAGS 結構所包含的等位中設定結構的個別成員,以指定配置的屬性。

規格需求

需求
最低支援的用戶端 Windows Vista
標頭 d3dkmddi.h (include D3dkmddi.h)

另請參閱

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS_WDDM2_0

DxgkDdiBuildPagingBuffer

pfnLockCb

pfnUnlockCb