語法
參數
NumObjects類型:UINT ppObjects 陣列中要常駐於裝置的物件數目。 ppObjects [in]
類型:ID3D12Pageable *const * 記憶體區塊的指標,該區塊包含物件的 ID3D12Pageable 介面指標陣列。 雖然大部分 D3D12 物件都繼承自 ID3D12Pageable,但只有下列物件支援常駐變更:描述元堆積、堆積、認可的資源,以及查詢堆積
傳回值
類型:HRESULT 此方法會傳回其中一個 Direct3D 12 傳回碼。備註
MakeResident 會從磁碟載入與資源相關聯的資料,並從資源適當的記憶體集區重新配置記憶體。此方法應該在擁有實體記憶體的物件上呼叫。 使用此方法和 Evict 來管理 GPU 視訊記憶體。請注意,這在 D3D11 中是自動完成的,但在 D3D12 中現在必須由應用程式自行處理。 MakeResident 和 Evict 可協助應用程式在許多介面卡上管理常駐預算。MakeResident 會明確地將資料分頁載入,然後禁止分頁移出,讓 GPU 可以存取資料。Evict 則會啟用分頁移出。 某些 GPU 架構因為缺乏足夠的 GPU 虛擬位址空間,而無法從常駐操作中獲益。使用 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT 和 IDXGIAdapter3::QueryVideoMemoryInfo,可辨識每個處理序的最大 GPU VA 空間何時太小,或與常駐預算的大小大致相同。對於這類架構,常駐預算一律會受到 GPU 虛擬位址空間量的限制。在這類系統上,Evict 不會釋放任何常駐預算。 即使看起來有足夠的常駐預算可用,應用程式仍必須處理 MakeResident 失敗的情況。實體記憶體分散和介面卡架構的特殊行為,可能會導致無法使用大型連續範圍。應用程式應先釋放更多常駐預算,然後再重試。 MakeResident 會進行參考計數,因此必須呼叫 Evict 與 MakeResident 相同的次數,Evict 才會生效。支援常駐的物件會在建立時成為常駐狀態,因此單一 Evict 呼叫實際上就會收回該物件。 應用程式必須使用柵欄,以確保 GPU 不會使用非常駐的物件。MakeResident 必須在 GPU 執行參考該物件的命令清單之前傳回。Evict 必須在 GPU 完成執行參考該物件的命令清單之後呼叫。 已收回的物件仍會使用相同的 GPU 虛擬位址和相同數量的 GPU 虛擬位址空間。因此,資源描述元和其他 GPU 虛擬位址參考在 Evict 之後不會失效。需求
標頭: d3d12_xs.h 或 d3d12_x.h程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台:XBOX Series 主機與 XBOX One 系列
