Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 45 additions & 16 deletions cmake/common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1210,7 +1210,7 @@ struct DeviceConfigCaps

get_target_property(HEADER_RULE_GENERATED ${IMPL_TARGET} NBL_HEADER_GENERATED_RULE)
if(NOT HEADER_RULE_GENERATED)
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include")
set(INCLUDE_DIR "$<TARGET_PROPERTY:${IMPL_TARGET},BINARY_DIR>/${IMPL_TARGET}/.cmake/include")
set(INCLUDE_FILE "${INCLUDE_DIR}/$<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_PATH>")
set(INCLUDE_CONTENT $<TARGET_PROPERTY:${IMPL_TARGET},NBL_HEADER_CONTENT>)

Expand Down Expand Up @@ -1277,17 +1277,22 @@ namespace @IMPL_NAMESPACE@ {
foreach(INDEX RANGE ${LAST_INDEX})
string(JSON INPUT GET "${IMPL_INPUTS}" ${INDEX} INPUT)
string(JSON BASE_KEY GET "${IMPL_INPUTS}" ${INDEX} KEY)
string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)


set(COMPILE_OPTIONS "")
math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1")
foreach(COMP_IDX RANGE 0 ${LAST_CO})
string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX})
list(APPEND COMPILE_OPTIONS "${COMP_ITEM}")
endforeach()
string(JSON HAS_COMPILE_OPTIONS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)
if(HAS_COMPILE_OPTIONS STREQUAL "ARRAY")
string(JSON COMPILE_OPTIONS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS)
if(NOT COMPILE_OPTIONS_LENGTH EQUAL 0)
math(EXPR LAST_CO "${COMPILE_OPTIONS_LENGTH} - 1")
foreach(COMP_IDX RANGE 0 ${LAST_CO})
string(JSON COMP_ITEM GET "${IMPL_INPUTS}" ${INDEX} COMPILE_OPTIONS ${COMP_IDX})
list(APPEND COMPILE_OPTIONS "${COMP_ITEM}")
endforeach()
endif()
endif()

set(DEPENDS_ON "")
string(JSON HAS_DEPENDS TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS)
string(JSON HAS_DEPENDS ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} DEPENDS)
if(HAS_DEPENDS STREQUAL "ARRAY")
string(JSON DEPENDS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} DEPENDS)
if(NOT DEPENDS_LENGTH EQUAL 0)
Expand All @@ -1305,7 +1310,7 @@ namespace @IMPL_NAMESPACE@ {

set(HAS_CAPS FALSE)
set(CAPS_LENGTH 0)
string(JSON CAPS_TYPE TYPE "${IMPL_INPUTS}" ${INDEX} CAPS)
string(JSON CAPS_TYPE ERROR_VARIABLE ERROR_VAR TYPE "${IMPL_INPUTS}" ${INDEX} CAPS)
if(CAPS_TYPE STREQUAL "ARRAY")
string(JSON CAPS_LENGTH LENGTH "${IMPL_INPUTS}" ${INDEX} CAPS)
if(NOT CAPS_LENGTH EQUAL 0)
Expand All @@ -1323,12 +1328,27 @@ namespace @IMPL_NAMESPACE@ {

set(CAP_NAMES "")
set(CAP_TYPES "")
set(CAP_KINDS "")
if(HAS_CAPS)
math(EXPR LAST_CAP "${CAPS_LENGTH} - 1")
foreach(CAP_IDX RANGE 0 ${LAST_CAP})
string(JSON CAP_KIND ERROR_VARIABLE CAP_TYPE_ERROR GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} kind)
string(JSON CAP_NAME GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} name)
string(JSON CAP_TYPE GET "${IMPL_INPUTS}" ${INDEX} CAPS ${CAP_IDX} type)

# -> TODO: improve validation, input should be string
if(CAP_TYPE_ERROR)
set(CAP_KIND limits) # I assume its limit by default (or when invalid value present, currently)
else()
if(NOT CAP_KIND MATCHES "^(limits|features)$")
ERROR_WHILE_PARSING_ITEM(
"Invalid CAP kind \"${CAP_KIND}\" for ${CAP_NAME}\n"
"Allowed kinds are: limits, features"
)
endif()
endif()
# <-

if(NOT CAP_TYPE MATCHES "^(bool|uint16_t|uint32_t|uint64_t)$")
ERROR_WHILE_PARSING_ITEM(
"Invalid CAP type \"${CAP_TYPE}\" for ${CAP_NAME}\n"
Expand Down Expand Up @@ -1366,6 +1386,7 @@ namespace @IMPL_NAMESPACE@ {
set(CAP_VALUES_${CAP_IDX} "${VALUES}")
list(APPEND CAP_NAMES "${CAP_NAME}")
list(APPEND CAP_TYPES "${CAP_TYPE}")
list(APPEND CAP_KINDS "${CAP_KIND}")
endforeach()
endif()

Expand Down Expand Up @@ -1405,12 +1426,19 @@ namespace @IMPL_NAMESPACE@ {

]=])
unset(RETVAL_EVAL)
foreach(CAP ${CAP_NAMES})
string(CONFIGURE [=[
retval += ".@CAP@_" + std::to_string(limits.@CAP@);
]=] RETVALUE_VIEW @ONLY)
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
endforeach(CAP)
list(LENGTH CAP_NAMES CAP_COUNT)
if(CAP_COUNT GREATER 0)
math(EXPR LAST_CAP "${CAP_COUNT} - 1")
foreach(i RANGE ${LAST_CAP})
list(GET CAP_NAMES ${i} CAP)
list(GET CAP_KINDS ${i} KIND)
string(CONFIGURE [=[
retval += ".@CAP@_" + std::to_string(@KIND@.@CAP@);
]=] RETVALUE_VIEW @ONLY)
string(APPEND RETVAL_EVAL "${RETVALUE_VIEW}")
endforeach()
endif()

string(CONFIGURE "${HEADER_ITEM_VIEW}" HEADER_ITEM_EVAL @ONLY)
set_property(TARGET ${IMPL_TARGET} APPEND_STRING PROPERTY NBL_HEADER_CONTENT "${HEADER_ITEM_EVAL}")

Expand Down Expand Up @@ -1461,6 +1489,7 @@ namespace @IMPL_NAMESPACE@ {

list(GET CAP_NAMES ${CAP_INDEX} CURRENT_CAP)
list(GET CAP_TYPES ${CAP_INDEX} CURRENT_TYPE)
list(GET CAP_KINDS ${CAP_INDEX} CURRENT_KIND)
set(VAR_NAME "CAP_VALUES_${CAP_INDEX}")
set(VALUES "${${VAR_NAME}}")

Expand Down
2 changes: 1 addition & 1 deletion examples_tests
Submodule examples_tests updated 37 files
+1 −1 03_DeviceSelectionAndSharedSources/main.cpp
+47 −1 05_StreamingAndBufferDeviceAddressApp/CMakeLists.txt
+1 −4 05_StreamingAndBufferDeviceAddressApp/app_resources/shader.comp.hlsl
+6 −5 05_StreamingAndBufferDeviceAddressApp/main.cpp
+47 −1 07_StagingAndMultipleQueues/CMakeLists.txt
+28 −16 07_StagingAndMultipleQueues/main.cpp
+68 −0 10_CountingSort/CMakeLists.txt
+6 −0 10_CountingSort/app_resources/common.hlsl
+28 −17 10_CountingSort/main.cpp
+47 −1 11_FFT/CMakeLists.txt
+9 −22 11_FFT/main.cpp
+46 −0 24_ColorSpaceTest/CMakeLists.txt
+17 −18 24_ColorSpaceTest/main.cpp
+70 −1 62_CAD/CMakeLists.txt
+19 −74 62_CAD/main.cpp
+0 −6 62_CAD/shaders/globals.hlsl
+5 −5 62_CAD/shaders/main_pipeline/vertex_shader.hlsl
+53 −1 64_EmulatedFloatTest/CMakeLists.txt
+1 −0 64_EmulatedFloatTest/app_resources/benchmark/benchmark.comp.hlsl
+1 −0 64_EmulatedFloatTest/app_resources/test.comp.hlsl
+12 −40 64_EmulatedFloatTest/main.cpp
+47 −1 67_RayQueryGeometry/CMakeLists.txt
+0 −2 67_RayQueryGeometry/app_resources/render.comp.hlsl
+7 −5 67_RayQueryGeometry/main.cpp
+98 −1 70_FLIPFluids/CMakeLists.txt
+3 −0 70_FLIPFluids/app_resources/compute/diffusion.comp.hlsl
+2 −0 70_FLIPFluids/app_resources/compute/pressureSolver.comp.hlsl
+1 −0 70_FLIPFluids/app_resources/compute/updateFluidCells.comp.hlsl
+60 −88 70_FLIPFluids/main.cpp
+101 −0 71_RayTracingPipeline/CMakeLists.txt
+7 −0 71_RayTracingPipeline/app_resources/common.hlsl
+2 −1 71_RayTracingPipeline/app_resources/raytrace.rahit.hlsl
+15 −10 71_RayTracingPipeline/app_resources/raytrace.rchit.hlsl
+3 −3 71_RayTracingPipeline/app_resources/raytrace.rgen.hlsl
+2 −1 71_RayTracingPipeline/app_resources/raytrace.rint.hlsl
+3 −1 71_RayTracingPipeline/app_resources/raytrace_shadow.rahit.hlsl
+24 −75 71_RayTracingPipeline/main.cpp
2 changes: 1 addition & 1 deletion include/nbl/builtin/hlsl/ieee754.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ struct flipSign_helper<FloatingPoint, Bool NBL_PARTIAL_REQ_BOT(concepts::Floatin
const AsUint asUint = ieee754::impl::bitCastToUintType(val);
// can't use mix_helper because circular dep
#ifdef __HLSL_VERSION
return bit_cast<FloatingPoint>(asUint ^ spirv::select(AsUint(0ull), ieee754::traits<AsFloat>::signMask, flip));
return bit_cast<FloatingPoint>(asUint ^ spirv::select(flip, ieee754::traits<AsFloat>::signMask, AsUint(0ull)));
#else
return bit_cast<FloatingPoint>(asUint ^ (flip ? ieee754::traits<AsFloat>::signMask : AsUint(0ull)));
#endif
Expand Down
Loading