要求重新命名配置

當使用者模式顯示驅動程式要求視訊記憶體管理員在應用程式指示捨棄表面內容時,應該要求視訊記憶體管理員重新命名與表面相關聯的配置,以作為鎖定表面 (例如頂點緩衝區) 。 Microsoft Direct3D 執行時間會傳遞 Discard 位欄位旗標,以指出它不再需要介面的目前內容。 如果保存介面內容的目前配置忙碌中,驅動程式可以要求視訊記憶體管理員配置新的配置來處理鎖定要求,而不是停止應用程式執行緒,直到目前的配置變成閒置為止。

當使用者模式顯示驅動程式要求視訊記憶體管理員在呼叫 pfnLockCb函式時,重新命名配置時,驅動程式會設定D3DDDICB_LOCKFLAGS結構的Discard成員。 視訊記憶體管理員會判斷它是否應該重新命名配置,或應該讓應用程式停止,直到配置閒置為止,取決於配置目前是否忙碌,以及目前記憶體狀況。 針對要重新命名的每個配置,視訊記憶體管理員會維護連續用於鎖定配置的配置清單。 每次應用程式捨棄配置的內容時,影片記憶體管理員都會迴圈查看清單。 清單的長度取決於應用程式需求和記憶體壓力。 視訊記憶體管理員會嘗試讓清單保持夠長的時間,以避免在鎖定要求上停止應用程式執行緒。 不過,在記憶體壓力下,視訊記憶體管理員可以修剪清單,以避免造成額外的記憶體壓力。

為了限制配置重新命名清單的長度,驅動程式會在建立配置時設定DXGK_ALLOCATIONINFO結構的MaximumRenamingListLength成員。 如果驅動程式將 MaximumRenamingListLength 設定為非零值,則視訊記憶體管理員會決定重新命名清單的適當長度,而不會超過驅動程式所加加的限制。 如果驅動程式將 MaximumRenamingListLength 設定為 0,則記憶體管理員可以將重新命名清單的大小增加到改善效能所需的大小。

請注意,當使用者模式顯示驅動程式設定D3DDDICB_LOCKFLAGSDiscard成員時,視訊記憶體管理員不會呼叫顯示器迷你埠驅動程式來配置原始配置的額外配置。 視訊記憶體管理員會使用原始配置的建立參數來建立所有額外的配置。 從顯示迷你埠驅動程式的觀點來看,相同的配置會分頁到可能同時有多個區段位置。