imm_atomic_iadd (sm5 - asm)
Немедленное атомарное целое число добавляется в память. Возвращает значение в памяти перед добавлением.
imm_atomic_iadd dst0[.single_component_mask], dst1, dstAddress[.swizzle], src0[.select_component] |
---|
Элемент | Описание |
---|---|
dst0 |
[in] Содержит значение в dst1 перед записью. |
dst1 |
Это значение должно быть неупорядоченным представлением доступа (U#). В вычислительном шейдере это также может быть общая память группы потоков (g#). |
dstAddress |
[in] Наддрес памяти. |
src0 |
[in] Значение, добавляемое к dst1. |
Комментарии
Эта инструкция выполняет однокомпонентное 32-разрядное целочисленное добавление операнда src0 с dst1 с 32-разрядным адресом каждого компонента dstAddress. Подписывать нечувствительно.
Если dst1 является u#, он может быть объявлен как необработанный, типизированный или структурированный. Если тип задан, он должен быть объявлен как UINT/SINT с привязанным форматом ресурса R32_UINT/_SINT.
Если dst1 имеет значение g#, он должен быть объявлен как необработанный или структурированный.
Значение в памяти dst1 до сложения возвращается в dst0.
Количество компонентов, взятых из адреса, определяется размерностью dst1.
Вся операция выполняется атомарно.
Если вызов шейдера неактивен, например, если пиксель был отменен ранее в его выполнении или существует только вызов пикселя или образца только для того, чтобы служить вспомогательным для реального пикселя или образца для производных, эта инструкция не изменяет память dst1 вообще, а возвращаемое значение не определено.
Адресация за пределы границ в U# не приводит к записи в память, за исключением случаев, когда u# структурирован, а смещение байтов в структуре (второй компонент адреса) приводит к выходу за пределы границ доступа, то все содержимое UAV становится неопределенным.
Адресация за пределы границ в u# или g# приводит к возврату неопределенного результата в шейдер в dst0.
Эта инструкция применяется к следующим этапам шейдера:
Вершина | Корпуса | Домен | 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) | нет |