Skip to content

Commit 073a9f3

Browse files
committed
merge master, fix conflicts
2 parents a30f083 + d61989f commit 073a9f3

33 files changed

+2441
-499
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ include(ExternalProject)
2828
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchains/android/build.cmake)
2929

3030
project(Nabla
31-
VERSION 0.8.0.1
31+
VERSION 0.9.0.0
3232
HOMEPAGE_URL "https://www.devsh.eu/nabla"
3333
LANGUAGES CXX C
3434
)

cmake/common.cmake

Lines changed: 120 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,12 @@ define_property(TARGET PROPERTY NBL_MOUNT_POINT_DEFINES
11441144
BRIEF_DOCS "List of preprocessor defines with mount points"
11451145
)
11461146

1147+
option(NSC_DEBUG_EDIF_FILE_BIT "Add \"-fspv-debug=file\" to NSC Debug CLI" ON)
1148+
option(NSC_DEBUG_EDIF_SOURCE_BIT "Add \"-fspv-debug=source\" to NSC Debug CLI" OFF)
1149+
option(NSC_DEBUG_EDIF_LINE_BIT "Add \"-fspv-debug=line\" to NSC Debug CLI" OFF)
1150+
option(NSC_DEBUG_EDIF_TOOL_BIT "Add \"-fspv-debug=tool\" to NSC Debug CLI" ON)
1151+
option(NSC_DEBUG_EDIF_NON_SEMANTIC_BIT "Add \"-fspv-debug=vulkan-with-source\" to NSC Debug CLI" OFF)
1152+
11471153
function(NBL_CREATE_NSC_COMPILE_RULES)
11481154
set(COMMENT "this code has been autogenerated with Nabla CMake NBL_CREATE_HLSL_COMPILE_RULES utility")
11491155
set(DEVICE_CONFIG_VIEW
@@ -1178,9 +1184,34 @@ struct DeviceConfigCaps
11781184
-enable-16bit-types
11791185
-Zpr
11801186
-spirv
1181-
-fspv-target-env=vulkan1.3
1187+
-fspv-target-env=vulkan1.3
1188+
-Wshadow
1189+
-Wconversion
1190+
$<$<CONFIG:Debug>:-O0>
1191+
$<$<CONFIG:Release>:-O3>
1192+
$<$<CONFIG:RelWithDebInfo>:-O3>
11821193
)
11831194

1195+
if(NSC_DEBUG_EDIF_FILE_BIT)
1196+
list(APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=file>)
1197+
endif()
1198+
1199+
if(NSC_DEBUG_EDIF_SOURCE_BIT)
1200+
list(APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=source>)
1201+
endif()
1202+
1203+
if(NSC_DEBUG_EDIF_LINE_BIT)
1204+
list(APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=line>)
1205+
endif()
1206+
1207+
if(NSC_DEBUG_EDIF_TOOL_BIT)
1208+
list(APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=tool>)
1209+
endif()
1210+
1211+
if(NSC_DEBUG_EDIF_NON_SEMANTIC_BIT)
1212+
list(APPEND REQUIRED_OPTIONS $<$<CONFIG:Debug>:-fspv-debug=vulkan-with-source>)
1213+
endif()
1214+
11841215
if(NOT NBL_EMBED_BUILTIN_RESOURCES)
11851216
list(APPEND REQUIRED_OPTIONS
11861217
-I "${NBL_ROOT_PATH}/include"
@@ -1210,12 +1241,12 @@ struct DeviceConfigCaps
12101241

12111242
get_target_property(HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE)
12121243
if(NOT HEADER_RULE_GENERATED)
1213-
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include")
1244+
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include/$<CONFIG>")
12141245
set(INCLUDE_FILE "${INCLUDE_DIR}/$<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_PATH>")
12151246
set(INCLUDE_CONTENT $<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_CONTENT>)
12161247

12171248
file(GENERATE OUTPUT ${INCLUDE_FILE}
1218-
CONTENT ${INCLUDE_CONTENT}
1249+
CONTENT $<GENEX_EVAL:${INCLUDE_CONTENT}>
12191250
TARGET ${IMPL_TARGET}
12201251
)
12211252

@@ -1277,17 +1308,22 @@ namespace @IMPL_NAMESPACE@ {
12771308
foreach(INDEX RANGE ${LAST_INDEX})
12781309
string(JSON INPUT GET "${IMPL_INPUTS}" ${INDEX} INPUT)
12791310
string(JSON BASE_KEY GET "${IMPL_INPUTS}" ${INDEX} KEY)
1280-
string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)
1281-
1311+
12821312
set(COMPILE_OPTIONS "")
1283-
math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1")
1284-
foreach(COMP_IDX RANGE 0 ${LAST_CO})
1285-
string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX})
1286-
list(APPEND COMPILE_OPTIONS "${COMP_ITEM}")
1287-
endforeach()
1313+
string(JSON HAS_COMPILE_OPTIONS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)
1314+
if(HAS_COMPILE_OPTIONS STREQUAL "ARRAY")
1315+
string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)
1316+
if(NOT COMPILE_OPTIONS_LENGTH EQUAL 0)
1317+
math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1")
1318+
foreach(COMP_IDX RANGE 0 ${LAST_CO})
1319+
string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX})
1320+
list(APPEND COMPILE_OPTIONS "${COMP_ITEM}")
1321+
endforeach()
1322+
endif()
1323+
endif()
12881324

12891325
set(DEPENDS_ON "")
1290-
string(JSON HAS_DEPENDS TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS)
1326+
string(JSON HAS_DEPENDS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS)
12911327
if(HAS_DEPENDS STREQUAL "ARRAY")
12921328
string(JSON DEPENDS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} DEPENDS)
12931329
if(NOT DEPENDS_LENGTH EQUAL 0)
@@ -1305,7 +1341,7 @@ namespace @IMPL_NAMESPACE@ {
13051341

13061342
set(HAS_CAPS FALSE)
13071343
set(CAPS_LENGTH 0)
1308-
string(JSON CAPS_TYPE TYPE "${IMPL_INPUTS}" ${INDEX} CAPS)
1344+
string(JSON CAPS_TYPE ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} CAPS)
13091345
if(CAPS_TYPE STREQUAL "ARRAY")
13101346
string(JSON CAPS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} CAPS)
13111347
if(NOT CAPS_LENGTH EQUAL 0)
@@ -1323,12 +1359,27 @@ namespace @IMPL_NAMESPACE@ {
13231359

13241360
set(CAP_NAMES "")
13251361
set(CAP_TYPES "")
1362+
set(CAP_KINDS "")
13261363
if(HAS_CAPS)
13271364
math(EXPR LAST_CAP "${CAPS_LENGTH} - 1")
13281365
foreach(CAP_IDX RANGE 0 ${LAST_CAP})
1366+
string(JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} kind)
13291367
string(JSON CAP_NAME GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} name)
13301368
string(JSON CAP_TYPE GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} type)
13311369

1370+
# -> TODO: improve validation, input should be string
1371+
if(CAP_TYPE_ERROR)
1372+
set(CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
1373+
else()
1374+
if(NOT CAP_KIND MATCHES "^(limits|features)$")
1375+
ERROR_WHILE_PARSING_ITEM(
1376+
"Invalid CAP kind \"${CAP_KIND}\" for ${CAP_NAME}\n"
1377+
"Allowed kinds are: limits, features"
1378+
)
1379+
endif()
1380+
endif()
1381+
# <-
1382+
13321383
if(NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$")
13331384
ERROR_WHILE_PARSING_ITEM(
13341385
"Invalid CAP type \"${CAP_TYPE}\" for ${CAP_NAME}\n"
@@ -1366,6 +1417,7 @@ namespace @IMPL_NAMESPACE@ {
13661417
set(CAP_VALUES_${CAP_IDX} "${VALUES}")
13671418
list(APPEND CAP_NAMES "${CAP_NAME}")
13681419
list(APPEND CAP_TYPES "${CAP_TYPE}")
1420+
list(APPEND CAP_KINDS "${CAP_KIND}")
13691421
endforeach()
13701422
endif()
13711423

@@ -1399,68 +1451,81 @@ namespace @IMPL_NAMESPACE@ {
13991451
nbl::core::string retval = "@BASE_KEY@";
14001452
@RETVAL_EVAL@
14011453
retval += ".spv";
1402-
return retval;
1454+
return "$<CONFIG>/" + retval;
14031455
}
14041456
}
14051457

14061458
]=])
14071459
unset(RETVAL_EVAL)
1408-
foreach(CAP ${CAP_NAMES})
1409-
string(CONFIGURE [=[
1410-
retval += ".@CAP@_" + std::to_string(limits.@CAP@);
1411-
]=] RETVALUE_VIEW @ONLY)
1412-
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
1413-
endforeach(CAP)
1460+
list(LENGTH CAP_NAMES CAP_COUNT)
1461+
if(CAP_COUNT GREATER 0)
1462+
math(EXPR LAST_CAP "${CAP_COUNT} - 1")
1463+
foreach(i RANGE ${LAST_CAP})
1464+
list(GET CAP_NAMES ${i} CAP)
1465+
list(GET CAP_KINDS ${i} KIND)
1466+
string(CONFIGURE [=[
1467+
retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@);
1468+
]=] RETVALUE_VIEW @ONLY)
1469+
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
1470+
endforeach()
1471+
endif()
1472+
14141473
string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY)
14151474
set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}")
14161475

14171476
function(GENERATE_KEYS PREFIX CAP_INDEX CAPS_EVAL_PART)
14181477
if(NUM_CAPS EQUAL 0 OR CAP_INDEX EQUAL ${NUM_CAPS})
1478+
# generate .config file
14191479
set(FINAL_KEY "${BASE_KEY}${PREFIX}.spv") # always add ext even if its already there to make sure asset loader always is able to load as IShader
1420-
1421-
set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY}")
1422-
set(CONFIG_FILE "${TARGET_OUTPUT}.config")
1480+
set(CONFIG_FILE_TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY}")
1481+
set(CONFIG_FILE "${CONFIG_FILE_TARGET_OUTPUT}.config")
14231482
set(CAPS_EVAL "${CAPS_EVAL_PART}")
1424-
14251483
string(CONFIGURE "${DEVICE_CONFIG_VIEW}" CONFIG_CONTENT @ONLY)
14261484
file(WRITE "${CONFIG_FILE}" "${CONFIG_CONTENT}")
14271485

1428-
set(NBL_NSC_COMPILE_COMMAND
1429-
"$<TARGET_FILE:nsc>"
1430-
-Fc "${TARGET_OUTPUT}"
1431-
${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
1432-
"${CONFIG_FILE}"
1433-
)
1434-
1435-
add_custom_command(OUTPUT "${TARGET_OUTPUT}"
1436-
COMMAND ${NBL_NSC_COMPILE_COMMAND}
1437-
DEPENDS ${DEPENDS_ON}
1438-
COMMENT "Creating \"${TARGET_OUTPUT}\""
1439-
VERBATIM
1440-
COMMAND_EXPAND_LISTS
1441-
)
1442-
1443-
set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}")
1444-
target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE})
1445-
1446-
set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES
1447-
HEADER_FILE_ONLY ON
1448-
VS_TOOL_OVERRIDE None
1449-
)
1450-
1451-
set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES
1452-
NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}"
1453-
NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}"
1454-
NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}"
1455-
NBL_SPIRV_ACCESS_KEY "${FINAL_KEY}"
1456-
)
1457-
1458-
set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}")
1486+
# generate keys and commands for compiling shaders
1487+
foreach(BUILD_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES})
1488+
set(FINAL_KEY_REL_PATH "${BUILD_CONFIGURATION}/${FINAL_KEY}")
1489+
set(TARGET_OUTPUT "${IMPL_BINARY_DIR}/${FINAL_KEY_REL_PATH}")
1490+
1491+
set(NBL_NSC_COMPILE_COMMAND
1492+
"$<TARGET_FILE:nsc>"
1493+
-Fc "${TARGET_OUTPUT}"
1494+
${COMPILE_OPTIONS} ${REQUIRED_OPTIONS} ${IMPL_COMMON_OPTIONS}
1495+
"${CONFIG_FILE}"
1496+
)
1497+
1498+
add_custom_command(OUTPUT "${TARGET_OUTPUT}"
1499+
COMMAND ${NBL_NSC_COMPILE_COMMAND}
1500+
DEPENDS ${DEPENDS_ON}
1501+
COMMENT "Creating \"${TARGET_OUTPUT}\""
1502+
VERBATIM
1503+
COMMAND_EXPAND_LISTS
1504+
)
1505+
1506+
set(HEADER_ONLY_LIKE "${CONFIG_FILE}" "${TARGET_INPUT}" "${TARGET_OUTPUT}")
1507+
target_sources(${IMPL_TARGET} PRIVATE ${HEADER_ONLY_LIKE})
1508+
1509+
set_source_files_properties(${HEADER_ONLY_LIKE} PROPERTIES
1510+
HEADER_FILE_ONLY ON
1511+
VS_TOOL_OVERRIDE None
1512+
)
1513+
1514+
set_source_files_properties("${TARGET_OUTPUT}" PROPERTIES
1515+
NBL_SPIRV_REGISTERED_INPUT "${TARGET_INPUT}"
1516+
NBL_SPIRV_PERMUTATION_CONFIG "${CONFIG_FILE}"
1517+
NBL_SPIRV_BINARY_DIR "${IMPL_BINARY_DIR}"
1518+
NBL_SPIRV_ACCESS_KEY "${FINAL_KEY_REL_PATH}"
1519+
)
1520+
1521+
set_property(TARGET ${IMPL_TARGET} APPEND PROPERTY NBL_SPIRV_OUTPUTS "${TARGET_OUTPUT}")
1522+
endforeach()
14591523
return()
14601524
endif()
14611525

14621526
list(GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
14631527
list(GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
1528+
list(GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
14641529
set(VAR_NAME "CAP_VALUES_${CAP_INDEX}")
14651530
set(VALUES "${${VAR_NAME}}")
14661531

@@ -1534,4 +1599,4 @@ function(NBL_CREATE_RESOURCE_ARCHIVE)
15341599
if(IMPL_LINK_TO)
15351600
LINK_BUILTIN_RESOURCES_TO_TARGET(${IMPL_LINK_TO} ${IMPL_TARGET})
15361601
endif()
1537-
endfunction()
1602+
endfunction()

examples_tests

Submodule examples_tests updated 68 files

include/nbl/builtin/hlsl/algorithm.hlsl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,71 +19,71 @@ namespace impl
1919
// TODO: use structs
2020

2121
template<typename T>
22-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
22+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
2323
{
2424
T tmp = lhs;
2525
lhs = rhs;
2626
rhs = tmp;
2727
}
2828

2929
template<>
30-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(uint16_t) lhs, NBL_REF_ARG(uint16_t) rhs)
30+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(uint16_t) lhs, NBL_REF_ARG(uint16_t) rhs)
3131
{
3232
lhs ^= rhs;
3333
rhs ^= lhs;
3434
lhs ^= rhs;
3535
}
3636

3737
template<>
38-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(uint32_t) lhs, NBL_REF_ARG(uint32_t) rhs)
38+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(uint32_t) lhs, NBL_REF_ARG(uint32_t) rhs)
3939
{
4040
lhs ^= rhs;
4141
rhs ^= lhs;
4242
lhs ^= rhs;
4343
}
4444

4545
template<>
46-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(uint64_t) lhs, NBL_REF_ARG(uint64_t) rhs)
46+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(uint64_t) lhs, NBL_REF_ARG(uint64_t) rhs)
4747
{
4848
lhs ^= rhs;
4949
rhs ^= lhs;
5050
lhs ^= rhs;
5151
}
5252

5353
template<>
54-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(int16_t) lhs, NBL_REF_ARG(int16_t) rhs)
54+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(int16_t) lhs, NBL_REF_ARG(int16_t) rhs)
5555
{
5656
lhs ^= rhs;
5757
rhs ^= lhs;
5858
lhs ^= rhs;
5959
}
6060

6161
template<>
62-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(int32_t) lhs, NBL_REF_ARG(int32_t) rhs)
62+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(int32_t) lhs, NBL_REF_ARG(int32_t) rhs)
6363
{
6464
lhs ^= rhs;
6565
rhs ^= lhs;
6666
lhs ^= rhs;
6767
}
6868

6969
template<>
70-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(int64_t) lhs, NBL_REF_ARG(int64_t) rhs)
70+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(int64_t) lhs, NBL_REF_ARG(int64_t) rhs)
7171
{
7272
lhs ^= rhs;
7373
rhs ^= lhs;
7474
lhs ^= rhs;
7575
}
7676
#else
7777
template<typename T>
78-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
78+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
7979
{
8080
std::swap(lhs, rhs);
8181
}
8282
#endif
8383
}
8484

8585
template<typename T>
86-
NBL_CONSTEXPR_INLINE_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
86+
NBL_CONSTEXPR_FUNC void swap(NBL_REF_ARG(T) lhs, NBL_REF_ARG(T) rhs)
8787
{
8888
impl::swap<T>(lhs, rhs);
8989
}

include/nbl/builtin/hlsl/blit/default_blit.comp.hlsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ using namespace nbl::hlsl::blit;
5959
// TODO: push constants
6060

6161
[numthreads(ConstevalParameters::WorkGroupSize,1,1)]
62+
[shader("compute")]
6263
void main()
6364
{
6465
InImgAccessor inImgA;

include/nbl/builtin/hlsl/bxdf/ndf/ggx.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ template<class T>
406406
struct is_ggx : impl::is_ggx<T, typename T::scalar_type> {};
407407

408408
template<typename T>
409-
NBL_CONSTEXPR bool is_ggx_v = is_ggx<T>::value;
409+
NBL_CONSTEXPR_INLINE_NSPC_SCOPE_VAR bool is_ggx_v = is_ggx<T>::value;
410410

411411
}
412412
}

0 commit comments

Comments
 (0)