Поделиться через


Метод IDirect3DDevice9Ex::CheckResourceResidency (d3d9.h)

Проверяет массив ресурсов, чтобы определить, может ли они привести к большой остановке во время рисования, так как система должна сделать ресурсы доступными для 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, если это так.

Приложение также должно начать продвижение версий с более высоким уровнем loD, когда проверка расположения указывает, что ресурс не находится в доступной для GPU памяти. Так как блокировка для каждого процесса существует в режиме ядра, производительной реализации будет создан отдельный процесс, единственной задачей которого является повышение уровня ресурсов. Приложение взаимодействует с удостоверениями ресурсов между двумя процессами с помощью API общих поверхностей общих ресурсов и повышает их с помощью SetPriority.

Требования

   
Целевая платформа Windows
Header d3d9.h
Библиотека D3D9.lib

См. также раздел

IDirect3DDevice9Ex