检查资源数组以确定它们是否可能导致在 Draw 时间出现大停滞,因为系统必须使资源可访问 GPU。
语法
HRESULT CheckResourceResidency(
[in] IDirect3DResource9 **pResourceArray,
[in] UINT32 NumResources
);
参数
[in] pResourceArray
类型: IDirect3DResource9**
IDirect3DResource9 指针的数组,指示要检查的资源。
[in] NumResources
类型: UINT32
一个 值,指示传递到 pResourceArray 参数的资源数,最大为 65535。
返回值
类型: HRESULT
如果所有资源都位于 GPU 可访问的内存中,则 方法将返回S_OK。 系统可能需要执行重新映射操作来提升资源,但不必复制数据。
如果磁盘上没有包含资源的分配,但至少有一个分配不在 GPU 可访问的内存中,则 该方法将返回S_RESIDENT_IN_SHARED_MEMORY。 系统可能需要执行复制来提升资源。
如果磁盘上至少有一个包含资源的分配,此方法将返回S_NOT_RESIDENT。 系统可能需要执行复制来提升资源。
备注
此 API 不过是驻留时的合理猜测,因为应用程序使用资源时可能已降级。
预期的使用模式如下所示。 如果应用程序确定一组资源不是常驻资源,则应用程序将替换低 LOD 版本的资源并继续呈现。 视频内存管理器 API 提供一项功能,使应用程序能够表达希望这些低 LOD 资源更有可能驻留在 GPU 可访问的内存中。 应用负责创建、填充和销毁这些低 LOD 版本(如果选择)。
当驻留检查指示资源不驻留在 GPU 可访问的内存中时,应用程序还需要开始升级高 LOD 版本。 由于每个进程锁在内核模式下存在,因此高性能实现将生成一个单独的进程,其唯一的工作是提升资源。 应用程序通过共享资源共享图面 API 在两个进程之间传达 资源 标识,并通过 SetPriority 提升它们。
要求
| 目标平台 | Windows |
| 标头 | d3d9.h |
| Library | D3D9.lib |