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

Сочетание 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

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

ID3D12GraphicsCommandList

Плитки ресурсов