次の方法で共有


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 アクセス可能なメモリ内に少なくとも 1 つの割り当てがありません。
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 オペレーティング システムで使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー d3dumddi.h (D3dumddi.h を含む)

関連項目

D3DDDIARG_QUERYRESOURCERESIDENCY

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICEFUNCS

pfnQueryResidencyCb