Skip to content

Commit 22fd9d1

Browse files
author
devsh
committed
note that certain variables are unaware of aliasing or get optimized out alltogether
1 parent 8414d65 commit 22fd9d1

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

include/nbl/builtin/hlsl/functional.hlsl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,18 @@ struct reference_wrapper_base<spv::StorageClassPhysicalStorageBuffer,T>
6060
// normally would have specializations of load and store
6161
};
6262

63+
// we need to explicitly white-list storage classes due to
64+
// https://github.com/microsoft/DirectXShaderCompiler/issues/6578#issuecomment-2297181671
6365
template<uint32_t StorageClass, typename T>
64-
struct reference_wrapper : reference_wrapper_base<StorageClass,T>
66+
struct reference_wrapper : enable_if_t<
67+
is_same_v<StorageClass,spv::StorageClassInput>||
68+
is_same_v<StorageClass,spv::StorageClassUniform>||
69+
is_same_v<StorageClass,spv::StorageClassWorkgroup>||
70+
is_same_v<StorageClass,spv::StorageClassPushConstant>||
71+
is_same_v<StorageClass,spv::StorageClassImage>||
72+
is_same_v<StorageClass,spv::StorageClassStorageBuffer>,
73+
reference_wrapper_base<StorageClass,T>
74+
>
6575
{
6676
};
6777
// TODO: generate atomic Add,Sub,Min,Max through partial template specializations on T

0 commit comments

Comments
 (0)