Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает макет ресурса, который можно скопировать. Помогает приложению заполнить D3D12_PLACED_SUBRESOURCE_FOOTPRINT и D3D12_SUBRESOURCE_FOOTPRINT при подраспределении места в кучах отправки.
Syntax
void GetCopyableFootprints(
[in] const D3D12_RESOURCE_DESC *pResourceDesc,
[in] UINT FirstSubresource,
[in] UINT NumSubresources,
UINT64 BaseOffset,
[out, optional] D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
[out, optional] UINT *pNumRows,
[out, optional] UINT64 *pRowSizeInBytes,
[out, optional] UINT64 *pTotalBytes
);
Parameters
[in] pResourceDesc
Тип: const D3D12_RESOURCE_DESC*
Описание ресурса в качестве указателя на структуру D3D12_RESOURCE_DESC .
[in] FirstSubresource
Тип: UINT
Индекс первого подресурса в ресурсе. Диапазон допустимых значений составляет от 0 до D3D12_REQ_SUBRESOURCES.
[in] NumSubresources
Тип: UINT
Количество подресурсов в ресурсе. Диапазон допустимых значений равен 0 (D3D12_REQ_SUBRESOURCES — FirstSubresource).
BaseOffset
Тип: UINT64
Смещение в байтах, которое добавляется в смещение каждого D3D12_PLACED_SUBRESOURCE_FOOTPRINT в массиве pLayouts .
[out, optional] pLayouts
Тип: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*
Указатель на массив (длину NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT структур, которые должны быть заполнены описанием и размещением каждого подресурса.
[out, optional] pNumRows
Тип: UINT*
Указатель на массив (с длиной NumSubresources) целых переменных, заполняемых числом строк для каждого подресурса.
[out, optional] pRowSizeInBytes
Тип: UINT64*
Указатель на массив (длину NumSubresources) целочисленных переменных, каждая запись, заполняемая неpadded размером в байтах строки, каждого подресурса.
Например, если ресурс Texture2D имеет ширину 32 и байт на пиксель 4,
затем pRowSizeInBytes возвращает 128.
pRowSizeInBytes не следует путать с полем строки, так как изучение pLayouts и получение поля строки от этого даст вам 256, так как он выровнен по D3D12_TEXTURE_DATA_PITCH_ALIGNMENT.
[out, optional] pTotalBytes
Тип: UINT64*
Указатель на целочисленную переменную, заполненную общим размером в байтах. Если pResourceDesc недопустим, значение pTotalBytes имеет значение UINT64_MAX.
Возвращаемое значение
None
Remarks
Эта подпрограмма помогает приложению заполнять D3D12_PLACED_SUBRESOURCE_FOOTPRINT и D3D12_SUBRESOURCE_FOOTPRINT структуры при подлокации пространства в кучах отправки. Результирующая структура — это адаптер GPU, не зависящий от того, что значения не будут отличаться от одного адаптера GPU к следующему. GetCopyableFootprints использует указанные сведения о форматах ресурсов, макетах текстур и требованиях к выравниванию (из структуры D3D12_RESOURCE_DESC ) для заполнения структур подресурсов. Приложения имеют доступ ко всем этим сведениям, поэтому этот метод или вариант его можно записать как часть приложения.
Examples
В примере D3D12Multithreading используется id3D12Device::GetCopyableFootprints следующим образом:
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
_In_ ID3D12Resource* pDestinationResource,
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
UINT64 RequiredSize = 0;
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
pDevice->Release();
return RequiredSize;
}
См. пример кода в справочнике D3D12.
Requirements
| Requirement | Value |
|---|---|
| целевая платформа | Windows |
| Header | d3d12.h |
| Library | D3d12.lib |
| DLL | D3d12.dll |