共用方式為


處理落地預算

在 Windows 顯示驅動程式模型 (WDDM) v2 中,會分配給程序能夠保留多少常駐記憶體的配額。 此預算可能會隨著時間而變化,但通常只有在系統處於記憶體壓力下時才會施加。 在 Microsoft Direct3D 12 之前,預算的管理是透過使用者模式驅動程式進行的,表現為 Trim 通知和發生 MakeResident 失敗,並顯示 STATUS_NO_MEMORYTrimToBudget 通知、逐出和失敗的 MakeResident 呼叫都會以整數 NumBytesToTrim 的形式傳回最新的預算值,指出需要修剪多少才能符合新的預算。

針對 Direct3D 12 應用程式,預算完全由應用程式處理。 預算的大小旨在作為提示,讓應用程式知道要調整自己的大小。 透過使用預算大小作為指引,應用程式可以決定要保留多少資源,以及要保留的資源的解析度和品質。

為了正確管理這些預算,核心需要知道哪些記憶體應該參與預算。 DXGK_SEGMENTFLAGS2結構中有一個新的 ApplicationTarget 位,必須在核心模式驅動程式想要包含在預算邏輯中的區段上設定。 例如,在離散圖形處理單元 (GPU) 上,具有 1 個適合應用程式使用的 VRAM 區段,以及 1 個自動用於特殊用途資源的 VRAM 區段,驅動程式可能只會將主要 VRAM 區段標示為 ApplicationTarget。 對於整合型 GPU,主要光圈段通常是已標示的部分。 可以標示為 ApplicationTarget 的區段數目沒有限制。 核心會將這些聚合在一起,並以統一的大小呈現應用程式。