Метод 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 |