Skip to content

Commit 5331ebe

Browse files
committed
pull master, resolve conflicts
2 parents 777e443 + 1e637c4 commit 5331ebe

File tree

3 files changed

+57
-4
lines changed

3 files changed

+57
-4
lines changed

include/nbl/builtin/hlsl/concepts.hlsl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ NBL_CONSTEXPR bool NBL_CONCEPT_NAME = BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_CONCEPT_E
128128
namespace impl\
129129
{\
130130
template<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_DECL_TEMP_ARG, _, ARG_TYPE_LIST), typename enable=void>\
131-
struct CONCEPT_NAME : false_type {};\
131+
struct CONCEPT_NAME : ::nbl::hlsl::false_type {};\
132132
template<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_DECL_TEMP_ARG, _, ARG_TYPE_LIST)>\
133-
struct CONCEPT_NAME<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_ITER_TEMP_ARG, _, ARG_TYPE_LIST), make_void_t<decltype( __VA_ARGS__ )> > : true_type {};\
133+
struct CONCEPT_NAME<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_ITER_TEMP_ARG, _, ARG_TYPE_LIST), ::nbl::hlsl::make_void_t<decltype( __VA_ARGS__ )> > : ::nbl::hlsl::true_type {};\
134134
}\
135135
template<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_DECL_TEMP_ARG, _, ARG_TYPE_LIST)>\
136136
NBL_BOOL_CONCEPT CONCEPT_NAME = impl::CONCEPT_NAME<BOOST_PP_SEQ_FOR_EACH_I(NBL_IMPL_EXPR_ITER_TEMP_ARG, _, ARG_TYPE_LIST)>::value\
@@ -139,4 +139,4 @@ NBL_BOOL_CONCEPT CONCEPT_NAME = impl::CONCEPT_NAME<BOOST_PP_SEQ_FOR_EACH_I(NBL_I
139139
}
140140
}
141141

142-
#endif
142+
#endif

include/nbl/builtin/hlsl/spirv_intrinsics/core.hlsl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,8 @@ template<typename T, typename U NBL_FUNC_REQUIRES(concepts::Boolean<U> && (!conc
382382
[[vk::ext_instruction(spv::OpSelect)]]
383383
T select(U a, T x, T y);
384384

385-
NBL_VALID_EXPRESSION(SelectIsCallable, (T)(U), select<T,U>(experimental::declval<U>(),experimental::declval<T>(),experimental::declval<T>()));
385+
// need to use `spirv::` even in the namespace because it matches the HLSL intrinsic which is not namespaced at all, and will happily match anything
386+
NBL_VALID_EXPRESSION(SelectIsCallable, (T)(U), spirv::select<T,U>(experimental::declval<U>(),experimental::declval<T>(),experimental::declval<T>()));
386387

387388
}
388389

include/nbl/system/to_string.h

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#ifndef _NBL_SYSTEM_TO_STRING_INCLUDED_
2+
#define _NBL_SYSTEM_TO_STRING_INCLUDED_
3+
4+
#include <nbl/builtin/hlsl/cpp_compat.hlsl>
5+
6+
namespace nbl
7+
{
8+
namespace system
9+
{
10+
namespace impl
11+
{
12+
13+
template<typename T>
14+
struct to_string_helper
15+
{
16+
static std::string __call(const T& value)
17+
{
18+
return std::to_string(value);
19+
}
20+
};
21+
22+
template<typename T, int16_t N>
23+
struct to_string_helper<hlsl::vector<T, N>>
24+
{
25+
static std::string __call(const hlsl::vector<T, N>& value)
26+
{
27+
std::stringstream output;
28+
output << "{ ";
29+
for (int i = 0; i < N; ++i)
30+
{
31+
output << to_string_helper<T>::__call(value[i]);
32+
33+
if (i < N - 1)
34+
output << ", ";
35+
}
36+
output << " }";
37+
38+
return output.str();
39+
}
40+
};
41+
42+
}
43+
44+
template<typename T>
45+
std::string to_string(T value)
46+
{
47+
return impl::to_string_helper<T>::__call(value);
48+
}
49+
}
50+
}
51+
52+
#endif

0 commit comments

Comments
 (0)