處理落地預算
在 Windows 顯示驅動程式模型 (WDDM) v2 中,系統會為進程指派可保留多少記憶體的預算。 此預算可能會隨著時間變更,但通常只有在系統處於記憶體壓力時才會加總。 在 Microsoft Direct3D 12 之前,預算是由使用者模式驅動程式以 Trim 通知和 MakeResident 失敗的形式來處理 ,並STATUS_NO_MEMORY。 TrimToBudget 通知、 收回和失敗 的 MakeResident 呼叫都會以整數 NumBytesToTrim 值的形式傳回最新的預算,指出需要修剪多少才能符合新預算。
針對 Direct3D 12 應用程式,預算完全由應用程式處理。 預算的大小是一個提示,可讓應用程式知道要自行重設大小。 藉由使用預算大小做為提示,應用程式可以決定要保留多少資源、要保留的資源解析度和品質。
若要正確管理這些預算,核心必須知道應該參與預算的記憶體。 DXGK_SEGMENTFLAGS2結構中有新的 ApplicationTarget 位,必須在核心模式驅動程式想要包含在預算邏輯中的區段上設定。 例如,在獨立圖形處理單元上, (GPU) 具有 1 個 VRAM 區段,適合應用程式使用,以及自動用於特殊用途資源的 1 個 VRAM 區段,驅動程式可能只會將主要 VRAM 區段標示為 ApplicationTarget。 針對整合式 GPU,主要光圈區段通常會標示為一個。 可以標示為 ApplicationTarget 的區段數目沒有限制。 核心會將這些匯總在一起,並以統一的大小呈現應用程式。