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