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


Метод ID3D12Device4::GetResourceAllocationInfo1(UINT,UINT,constD3D12_RESOURCE_DESC*,D3D12_RESOURCE_ALLOCATION_INFO1*) (d3d12.h)

Получает подробные сведения о размере и выравнивании памяти, необходимых для сбора ресурсов на этом адаптере. См. также ID3D12Device::GetResourceAllocationInfo.

Помимо D3D12_RESOURCE_ALLOCATION_INFO, возвращенных из метода, эта версия также возвращает массив структур D3D12_RESOURCE_ALLOCATION_INFO1, которые предоставляют дополнительные сведения для каждого описания ресурса, переданного в качестве входных данных. См. параметр pResourceAllocationInfo1.

Синтаксис

D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
  [in]  UINT                            visibleMask,
  [in]  UINT                            numResourceDescs,
  [in]  const D3D12_RESOURCE_DESC       *pResourceDescs,
  [out] D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1
);

Параметры

[in] visibleMask

Тип: UINT

Для операции с одним GPU задайте для этого значение нулю. Если есть несколько узлов GPU, установите биты для идентификации узлов (физические адаптеры устройства). Каждый бит маски соответствует одному узлу. См. также многоадаптерные системы.

[in] numResourceDescs

Тип: UINT

Количество дескрипторов ресурсов в массиве pResourceDescs. Это также размер (количество элементов в) pResourceAllocationInfo1.

[in] pResourceDescs

Тип: const D3D12_RESOURCE_DESC*

Массив D3D12_RESOURCE_DESC структур, описывающих ресурсы для получения сведений.

[out] pResourceAllocationInfo1

Тип: D3D12_RESOURCE_ALLOCATION_INFO1*

Массив структур D3D12_RESOURCE_ALLOCATION_INFO1, содержащий дополнительные сведения для каждого описания ресурса, переданного в качестве входных данных. Это упрощает выделение кучи для нескольких ресурсов и без ручного вычисления смещения для размещения каждого ресурса.

Возвращаемое значение

Тип: D3D12_RESOURCE_ALLOCATION_INFO

Структура D3D12_RESOURCE_ALLOCATION_INFO, предоставляющая сведения о памяти видео, выделенной для указанного массива ресурсов.

Замечания

При использовании CreatePlacedResourceприложение должно использовать GetResourceAllocationInfo, чтобы понять характеристики размера и выравнивания ресурсов текстур. Результаты этого метода зависят от конкретного адаптера и должны рассматриваться как уникальные для этого адаптера и версии драйвера.

Приложение не может использовать выходные данные GetResourceAllocationInfo для понимания упакованных свойств текстур mIP. Чтобы понять упакованные свойства текстур mip, приложение должно использовать GetResourceTiling.

Размеры ресурсов текстур значительно отличаются от сведений, возвращаемых GetResourceTiling, так как некоторые архитектуры адаптеров выделяют дополнительную память для текстур, чтобы уменьшить эффективную пропускную способность во время распространенных сценариев отрисовки. Это даже включает текстуры, имеющие ограничения на их макеты текстур или стандартизированные макеты текстур. Эта дополнительная память не может быть разреженной или перемеченной приложением с помощью CreateReservedResource и UpdateTileMappings, поэтому не сообщается GetResourceTiling.

Приложение может забыло использовать GetResourceAllocationInfo для буферных ресурсов (D3D12_RESOURCE_DIMENSION_BUFFER). Буферы имеют одинаковый размер для всех адаптеров, что является лишь наименьшим из 64 КБ, который больше или равен D3D12_RESOURCE_DESC::Width.

При передаче нескольких описаний ресурсов используется алгоритм C++ для вычисления размера структуры и выравнивания. Например, массив с тремя элементами с двумя крошечными 64 КБ-выровненными ресурсами и крошечным выровненным в 4 МБ ресурсом, сообщает о разных размерах в зависимости от порядка массива. Если выровненный ресурс размером 4 МБ находится в середине, то результирующий размер составляет 12 МБ. В противном случае результирующий размер составляет 8 МБ. Возвращаемый выравнивания всегда будет 4 МБ, так как это супермножество всех выравниваний в массиве ресурсов.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Сборка Windows 10 20348
минимальный поддерживаемый сервер Сборка Windows 10 20348
целевая платформа Виндоус
заголовка d3d12.h
библиотеки d3d12.lib
DLL d3d12.dll

См. также

ID3D12Device4