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 リソースを構成する割り当てはディスク上にありません。 ただし、少なくとも 1 つの割り当ては GPU でアクセス可能なメモリ内にありません。
S_NOT_RESIDENT リソースを構成する少なくとも 1 つの割り当てがディスク上にあります。
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を返す必要があります。 QueryResourceResidency は、 すべてのクエリに対する pfnQueryResidencyCb のすべての呼び出しがD3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORYを返す場合にのみ、S_OKを返す必要があります。

ランタイムが QueryResourceResidency の呼び出しを介してクエリを実行する各リソースについて、ユーザー モードディスプレイ ドライバーは、 pfnQueryResidencyCb の呼び出しを介してクエリを実行するリソースに属する割り当てを決定する必要があります。 1 つの割り当てを所有するリソースの場合、決定は単純です。ドライバーはその割り当てを照会します。 ただし、リソースが複数の割り当てを所有している場合、決定はより困難です。 ドライバーは、アプリケーションがレンダリングに使用する可能性が高い割り当てを決定する必要があり、ドライバーはそれらの割り当てにのみクエリを実行する必要があります。 たとえば、リソースがレンダリングに使用される割り当てと、ロック操作を処理するスクラッチ割り当てを所有している場合、アプリケーションではレンダリングに 2 番目の割り当てが使用されない可能性が高いため、ドライバーは最初の割り当ての所在地についてのみクエリを実行する必要があります。

メモ ランタイムはシステム メモリ リソースの常駐クエリをサポートしていないため、ランタイムは常にシステム メモリ リソースの常駐状態に関するアプリケーションからの要求を失敗させ、これらのシステム メモリ リソースに対してユーザー モード ディスプレイ ドライバーの QueryResourceResidency 関数を呼び出すことはありません。
 

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDIARG_QUERYRESOURCERESIDENCY

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICEFUNCS

pfnQueryResidencyCb