PFND3DDDI_QUERYRESOURCERESIDENCY回呼函式 (d3dumddi.h)
QueryResourceResidency 函式會決定指定資源清單的落地。
語法
PFND3DDDI_QUERYRESOURCERESIDENCY Pfnd3dddiQueryresourceresidency;
HRESULT Pfnd3dddiQueryresourceresidency(
HANDLE hDevice,
const D3DDDIARG_QUERYRESOURCERESIDENCY *unnamedParam2
)
{...}
參數
hDevice
顯示裝置的句柄 (圖形內容) 。
unnamedParam2
pData [in]
D3DDDIARG_QUERYRESOURCERESIDENCY結構的指標,描述已驗證落地的資源清單。
傳回值
QueryResourceResidency 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 所有資源都位於 GPU 可存取的記憶體中。 |
S_RESIDENT_IN_SHARED_MEMORY | 沒有組成資源的配置位於磁碟上。 不過,至少有一個配置不在 GPU 可存取的記憶體中。 |
S_NOT_RESIDENT | 至少一個包含資源的配置位於磁碟上。 |
E_INVALIDARG | 已驗證參數,並判斷為不正確。 |
E_OUTOFMEMORY | QueryResourceResidency 無法配置完成所需的記憶體。 |
備註
Microsoft Direct3D 運行時間會呼叫使用者模式顯示驅動程式的 QueryResourceResidency 函式,以判斷如果系統必須讓資源可存取 GPU,操作系統是否會在繪製時間產生重大停頓。 從 QueryResourceResidency 傳回的資訊是資源的落地近似值,因為資源可能會在應用程式使用資源之前降級。
使用者模式顯示驅動程式的 QueryResourceResidency 函式必須呼叫 pfnQueryResidencyCb 函式。 pfnQueryResidencyCb 函式會傳回D3DDDICB_QUERYRESIDENCY 結構之 pResidencyStatus 成員所指定數位元素中資源的落地狀態。 如果 pfnQueryResidencyCb 針對任何查詢傳回 D3DDDI_RESIDENCYSTATUS_NOTRESIDENT,QueryResourceResidency 必須傳回S_NOT_RESIDENT。 如果 pfnQueryResidencyCb 針對任何查詢傳回D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY,而且不會傳回任何查詢的D3DDDI_RESIDENCYSTATUS_NOTRESIDENT, 則 QueryResourceResidency 必須傳回S_RESIDENT_IN_SHARED_MEMORY。 只有在所有查詢的所有呼叫 pfnQueryResidencyCb 傳回D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY時,QueryResourceResidency 才必須傳回S_OK。
針對運行時間透過對 QueryResourceResidency 的呼叫查詢的每個資源,使用者模式顯示驅動程式必須決定哪些屬於資源的配置,才能透過 呼叫 pfnQueryResidencyCb 進行查詢。 對於擁有單一配置的資源,判斷很簡單--驅動程式會查詢該配置。 不過,如果資源擁有多個配置,則判斷會比較困難。 驅動程式必須判斷應用程式可能用於轉譯的配置,而且驅動程式只能查詢這些配置。 例如,如果資源擁有用於轉譯的配置,以及處理鎖定作業的臨時配置,則驅動程式應該只查詢第一個配置的落地,因為應用程式很可能不會使用第二個配置進行轉譯。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | 桌面 |
標頭 | d3dumddi.h (include D3dumddi.h) |