diff options
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index dc87eb6fd..8ec5c2c67 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -196,16 +196,20 @@ ${{{{ // float32 and int64 atomic support. This is a Slang specific extension, it uses // GL_EXT_shader_atomic_float on vk - // NVAPI support on DX - // NOTE! To use this feature on HLSL, the shader needs to include 'nvHLSLExtns.h' from the NVAPI SDK - // + // NvAPI support on DX + // NOTE! To use this feature on HLSL, the shader needs to include 'nvHLSLExtns.h' from the NvAPI SDK + // + // https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float + // https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_atomic_float_add.html // Fp32 __target_intrinsic(hlsl, "($3 = NvInterlockedAddFp32($0, $1, $2))") + __cuda_sm_version(2.0) __target_intrinsic(cuda, "(*$3 = atomicAdd((float*)$0._getPtrAt($1), $2))") void InterlockedAddFp32(uint byteAddress, float valueToAdd, out float originalValue); + __specialized_for_target(glsl) void InterlockedAddFp32(uint byteAddress, float valueToAdd, out float originalValue) { @@ -216,6 +220,7 @@ ${{{{ // Without returning original value __target_intrinsic(hlsl, "(NvInterlockedAddFp32($0, $1, $2))") + __cuda_sm_version(2.0) __target_intrinsic(cuda, "atomicAdd((float*)$0._getPtrAt($1), $2)") void InterlockedAddFp32(uint byteAddress, float valueToAdd); |
