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 函式會傳回 pResidencyStatus 所指定之陣組元素中資源落地狀態D3DDDICB_QUERYRESIDENCY 結構的成員。 如果 pfnQueryResidencyCb 傳回任何查詢的D3DDDI_RESIDENCYSTATUS_NOTRESIDENT,QueryResourceResidency 必須傳回S_NOT_RESIDENT。 如果 pfnQueryResidencyCb 傳回任何查詢的D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY,而且不會傳回任何查詢的D3DDDI_RESIDENCYSTATUS_NOTRESIDENT,QueryResourceResidency 必須傳回S_RESIDENT_IN_SHARED_MEMORY。 只有在所有查詢的所有呼叫都傳回 pfnQueryResidencyCb 時,QueryResourceResidency 才會傳回 D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY S_OK。
針對運行時間透過呼叫查詢的每個資源,QueryResourceResidency,使用者模式顯示驅動程式必須決定要 透過呼叫 pfnQueryResidencyCb來查詢資源所屬的資源配置。 對於擁有單一配置的資源,判斷很簡單,驅動程式會查詢該配置。 不過,如果資源擁有多個配置,則判斷比較困難。 驅動程式必須判斷應用程式可能用於轉譯的配置,而驅動程式必須只查詢這些配置。 例如,如果資源擁有用於轉譯的配置,以及處理鎖定作業的臨時配置,驅動程式應該只查詢第一個配置的落地,因為應用程式很可能不會使用第二個配置進行轉譯。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows作系統中使用。 |
目標平臺 | 桌面 |
標頭 | d3dumddi.h (包括 D3dumddi.h) |