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 進行查詢。 對於擁有單一配置的資源,判斷很簡單--驅動程式會查詢該配置。 不過,如果資源擁有多個配置,則判斷會比較困難。 驅動程式必須判斷應用程式可能用於轉譯的配置,而且驅動程式只能查詢這些配置。 例如,如果資源擁有用於轉譯的配置,以及處理鎖定作業的臨時配置,則驅動程式應該只查詢第一個配置的落地,因為應用程式很可能不會使用第二個配置進行轉譯。

注意 由於運行時間不支援系統記憶體資源的落地查詢,因此運行時間一律會失敗要求來自系統記憶體資源落地狀態的應用程式,而且永遠不會針對這些系統記憶體資源呼叫使用者模式顯示驅動程式的 QueryResourceResidency 函式。
 

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 桌面
標頭 d3dumddi.h (include D3dumddi.h)

另請參閱

D3DDDIARG_QUERYRESOURCERESIDENCY

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICEFUNCS

pfnQueryResidencyCb