Skip to content

Commit a1b2324

Browse files
committed
rename spirv subgroup funcs, minor config changes
1 parent f5071f4 commit a1b2324

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

include/nbl/builtin/hlsl/spirv_intrinsics/subgroup_arithmetic.hlsl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,28 @@ T groupBitwiseXor(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T
5555
template<typename T>
5656
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
5757
[[vk::ext_instruction( spv::OpGroupNonUniformSMin )]]
58-
enable_if_t<!is_matrix_v<T> && is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
58+
enable_if_t<!is_matrix_v<T> && is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupSMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
5959
template<typename T>
6060
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
6161
[[vk::ext_instruction( spv::OpGroupNonUniformUMin )]]
62-
enable_if_t<!is_matrix_v<T> && !is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
62+
enable_if_t<!is_matrix_v<T> && !is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupUMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
6363
template<typename T>
6464
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
6565
[[vk::ext_instruction( spv::OpGroupNonUniformFMin )]]
66-
enable_if_t<!is_matrix_v<T> && is_floating_point_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
66+
enable_if_t<!is_matrix_v<T> && is_floating_point_v<typename vector_traits<T>::scalar_type>, T> groupFMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
6767

6868
template<typename T>
6969
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
7070
[[vk::ext_instruction( spv::OpGroupNonUniformSMax )]]
71-
enable_if_t<!is_matrix_v<T> && is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
71+
enable_if_t<!is_matrix_v<T> && is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupSMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
7272
template<typename T>
7373
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
7474
[[vk::ext_instruction( spv::OpGroupNonUniformUMax )]]
75-
enable_if_t<!is_matrix_v<T> && !is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
75+
enable_if_t<!is_matrix_v<T> && !is_signed_v<T> && is_integral_v<typename vector_traits<T>::scalar_type>, T> groupUMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
7676
template<typename T>
7777
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]]
7878
[[vk::ext_instruction( spv::OpGroupNonUniformFMax )]]
79-
enable_if_t<!is_matrix_v<T> && is_floating_point_v<typename vector_traits<T>::scalar_type>, T> groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
79+
enable_if_t<!is_matrix_v<T> && is_floating_point_v<typename vector_traits<T>::scalar_type>, T> groupFMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value);
8080

8181
}
8282
}

include/nbl/builtin/hlsl/subgroup2/arithmetic_portability.hlsl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,18 @@ namespace hlsl
1919
namespace subgroup2
2020
{
2121

22-
template<typename Config, class BinOp, int32_t _ItemsPerInvocation=1, class device_capabilities=void NBL_PRIMARY_REQUIRES(is_configuration_v<Config>)
22+
template<typename Config, class BinOp, int32_t _ItemsPerInvocation=1, class device_capabilities=void NBL_PRIMARY_REQUIRES(is_configuration_v<Config> && is_scalar_v<typename BinOp::type_t>)
2323
struct ArithmeticParams
2424
{
2525
using config_t = Config;
2626
using binop_t = BinOp;
27-
using scalar_t = typename BinOp::type_t; // BinOp should be with scalar type
27+
using scalar_t = typename BinOp::type_t;
2828
using type_t = vector<scalar_t, _ItemsPerInvocation>;
29+
using device_traits = device_capabilities_traits<device_capabilities>;
2930

3031
NBL_CONSTEXPR_STATIC_INLINE int32_t ItemsPerInvocation = _ItemsPerInvocation;
3132
NBL_CONSTEXPR_STATIC_INLINE bool UseNativeIntrinsics = device_capabilities_traits<device_capabilities>::shaderSubgroupArithmetic /*&& /*some heuristic for when its faster*/;
33+
// TODO add a IHV enum to device_capabilities_traits to check !is_nvidia
3234
};
3335

3436
template<typename Params>

0 commit comments

Comments
 (0)