Метод ID3D12GraphicsCommandList::CopyTiles (d3d12.h)
Копирует плитки из буфера в ресурс с плитками или наоборот.
Синтаксис
void CopyTiles(
[in] ID3D12Resource *pTiledResource,
[in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
[in] const D3D12_TILE_REGION_SIZE *pTileRegionSize,
[in] ID3D12Resource *pBuffer,
UINT64 BufferStartOffsetInBytes,
D3D12_TILE_COPY_FLAGS Flags
);
Параметры
[in] pTiledResource
Тип: ID3D12Resource*
Указатель на ресурс с плиткой.
[in] pTileRegionStartCoordinate
Тип: const D3D12_TILED_RESOURCE_COORDINATE*
Указатель на структуру D3D12_TILED_RESOURCE_COORDINATE , описывающую начальные координаты мозаичного ресурса.
[in] pTileRegionSize
Тип: const D3D12_TILE_REGION_SIZE*
Указатель на структуру D3D12_TILE_REGION_SIZE , описывающую размер области плитки.
[in] pBuffer
Тип: ID3D12Resource*
Указатель на ID3D12Resource , представляющий буфер по умолчанию, динамический или промежуточный буфер.
BufferStartOffsetInBytes
Тип: UINT64
Смещение в байтах в буфере в pBuffer для запуска операции.
Flags
Сочетание D3D12_TILE_COPY_FLAGS типизированных значений, которые объединяются с помощью побитовой операции OR и определяют способ копирования плиток.
Возвращаемое значение
None
Remarks
CopyTiles удаляет операции записи в несопоставленные области и обрабатывает операции чтения из несопоставленных областей (за исключением Tier_1 фрагментированных ресурсов, где чтение и запись несопоставленных областей недопустимы — см. D3D12_TILED_RESOURCES_TIER).
Если операция копирования включает запись в одно и то же расположение памяти несколько раз, так как несколько расположений в целевом ресурсе сопоставлены с одной и той же памятью плитки, результирующие операции записи в многосоставные плитки являются недетерминированными и не повторяемыми; то есть доступ к памяти плитки происходит в любом порядке, в каком оборудование выполняет операцию копирования.
Плитки, участвующие в операции копирования, не могут содержать плитки, содержащие упакованные MIP-карты, или результаты операции копирования не определены. Для передачи данных в MIP-карты и из них, которые аппаратные пакеты, в одну или несколько плиток, составляющих упакованные mips, необходимо использовать стандартные (то есть не зависящие от плиток) API копирования, такие как CopyTextureRegion.
CopyTiles копирует данные в несколько другом формате, чем стандартные методы копирования.
Расположение памяти для плиток на стороне ресурса некличного буфера операции копирования является линейным в памяти в пределах 64 КБ плиток, которые оборудование и драйвер свертывают и дескрипируют для каждой плитки при их передаче в ресурс с плиткой и из нее. Для поверхностей с сглаживания с несколькими выборками (MSAA) оборудование и драйвер просматривают выборки каждого пикселя в порядке выборки по индексу перед переходом к следующему пикселю. Для плиток, частично заполненных с правой стороны (для поверхности, ширина которого не кратна ширине плитки в пикселях), шаг и шаг для перемещения вниз по строке — это полный размер в байтах числа пикселей, которые поместятся по всей плитке, если плитка заполнена. Таким образом, между каждой строкой пикселей в памяти может быть разрыв. MIP-карты, которые меньше плитки, не упаковываются в линейный макет, что может показаться пустой тратой памяти, но, как уже упоминалось, вы не можете использовать CopyTiles для копирования в MIP-карты, которые упаковывает оборудование вместе. Вы можете просто использовать универсальные API копирования, например CopyTextureRegion, для копирования небольших MIP-карт по отдельности.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | D3d12.lib |
DLL | D3d12.dll |