dcl_uav_structured (sm5 - asm)
Объявите неупорядоченное представление доступа (UAV) для использования шейдером.
dcl_uav_structured[_glc] dstUAV, structByteStride |
---|
Элемент | Описание |
---|---|
dstUAV |
[in] БПЛА. |
structByteStride |
[in] Размер структуры в байтах. |
Комментарии
dstUAV — это регистр U#, объявленный как ссылка на UnorderedAccessView структурированного буфера с указанным шагом, который должен быть привязан к слоту UAV # в API.
Содержимое структуры не имеет типа; Операции, выполняемые с памятью, могут неявно интерпретировать данные как имеющие тип.
structByteStride — это размер структуры в байтах в объявляемом буфере. Это значение должно быть больше нуля. structByteStride имеет тип uint и должен быть кратным 4.
Инструкции, ссылающиеся на структурированный U#, принимают двухадресный адрес, где первый компонент выбирает [структуру], а второй — [смещение внутри структуры, в выровненных байтах].
Флаг _glc означает "глобально согласованный". Отсутствие _glc означает, что БПЛА объявляется только как "групповая согласованность" в вычислительном шейдере или "локально когерентная" в вызове одного пиксельного шейдера.
Флаг _opc является счетчиком, сохраняющим порядок. Он указывает, что если БПЛА привязан к слоту # (u#), он должен быть создан с флагом COUNTER. Это означает, что imm_atomic_alloc или imm_atomic_consume операции в шейдере управляют счетчиком, значения которого могут использоваться в шейдере в качестве постоянной ссылки на расположение в БПЛА. После завершения шейдера нельзя изменить порядок данных.
Отсутствие флага _opc означает, что если шейдер используетинструкции imm_atomic_alloc или imm_atomic_consume и UAV привязан к слоту # (u), он должен быть создан с флагом APPEND, который предоставляет счетчик, который не гарантирует сохранение порядка после вызова шейдера.
Если флаг _opc отсутствует, а шейдер не содержит imm_atomic_alloc или imm_atomic_consume инструкций, допускается создание БПЛА, привязанного к слоту # (u), с флагом COUNTER (счетчик не будет использоваться этим шейдером), без флага (без счетчика), но не с флагом APPEND.
Примечание
cs_4_0 и cs_4_1 поддерживают dcl_tgsm_structured, но не dcl_tgsm_raw.
Эта инструкция применяется к следующим этапам шейдера:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
X | X |
Так как БПЛА доступны на всех этапах шейдера для Direct3D 11.1, эта инструкция применяется ко всем этапам шейдера для среды выполнения Direct3D 11.1, которая доступна начиная с Windows 8.
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
X | X | X | X | X | X |
Минимальная модель шейдера
Эта инструкция поддерживается в следующих моделях шейдеров:
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | нет |
Модель шейдера 4 | нет |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |
Примечание
Эта инструкция поддерживается в cs_4_0 и cs_4_1.