Skip to content

Commit bf7568c

Browse files
Merge pull request #648 from Devsh-Graphics-Programming/nsct
Nabla Shader Compiler Tool looks good enough to merge
2 parents 885d309 + 620345f commit bf7568c

File tree

51 files changed

+2667
-786
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+2667
-786
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,9 @@ android-sample/bin/*
2929
preprocessed.hlsl
3030
compiled.spv
3131
.vs/*
32+
tools/nsc/__main__.py
33+
tools/nsc/.vscode/*
34+
tools/nsc/.profiles/*
35+
tools/nsc/bin/*
36+
*/__pycache__/*
37+
__pycache__/*

3rdparty/CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,15 @@ set(_OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
6262
set(_OLD_SKIP_INSTALL_ALL ${SKIP_INSTALL_ALL})
6363
set(BUILD_SHARED_LIBS OFF)
6464
set(SKIP_INSTALL_ALL ON)
65+
6566
add_subdirectory(zlib zlib EXCLUDE_FROM_ALL)
66-
execute_process(COMMAND ${CMAKE_COMMAND} -E rename zconf.h.included zconf.h
67-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib") # clean zlib git working-tree
67+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
68+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/zconf.h.included")
69+
execute_process(COMMAND "${CMAKE_COMMAND}" -E rename zconf.h.included zconf.h
70+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/zlib"
71+
) # clean zlib git working-tree
72+
endif()
73+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/zlib" DIRECTORY RELEASE RESULT_VARIABLE NBL_LOCK)
6874
set(SKIP_INSTALL_ALL ${_OLD_SKIP_INSTALL_ALL})
6975
set(BUILD_SHARED_LIBS ${_OLD_BUILD_SHARED_LIBS})
7076

3rdparty/dxc/CMakeLists.txt

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -97,42 +97,6 @@ endif()
9797
set(CMAKE_CXX_STANDARD 20) # it's mandatory
9898
unset(CMAKE_CXX_STANDARD_REQUIRED)
9999

100-
include(FetchContent)
101-
set(FC_EXTERNAL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/external")
102-
103-
set(DXC_BINARY_DIR "${FC_EXTERNAL_BINARY_DIR}/dxc" CACHE INTERNAL "")
104-
set(DXC_DOWNLOAD_DIR "${DXC_BINARY_DIR}/download" CACHE INTERNAL "")
105-
set(DXC_UNPACK_DIR "${DXC_BINARY_DIR}/unpack" CACHE INTERNAL "")
106-
107-
FetchContent_Declare(
108-
FC_DXC
109-
URL "${CMAKE_CURRENT_SOURCE_DIR}/exe/bin.tar.bz2"
110-
DOWNLOAD_DIR "${DXC_DOWNLOAD_DIR}"
111-
SOURCE_DIR "${DXC_UNPACK_DIR}"
112-
BINARY_DIR "${DXC_BINARY_DIR}"
113-
)
114-
115-
if(NOT DEFINED FC_DXC_POPULATED OR NOT ${FC_DXC_POPULATED})
116-
message(STATUS "Populating DXC executable...")
117-
118-
FetchContent_MakeAvailable(FC_DXC)
119-
FetchContent_GetProperties(FC_DXC POPULATED _FC_DXC_POPULATED_)
120-
121-
if(${_FC_DXC_POPULATED_})
122-
set(FC_DXC_POPULATED ON CACHE INTERNAL "")
123-
else()
124-
set(FC_DXC_POPULATED OFF CACHE INTERNAL "")
125-
endif()
126-
127-
unset(_FC_DXC_POPULATED_)
128-
endif()
129-
130-
set(DXC_EXT_EXECUTABLE "${DXC_UNPACK_DIR}/dxc.exe" CACHE STRING "" FORCE)
131-
132-
if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
133-
add_subdirectory(CT CT)
134-
endif()
135-
136100
include("${DXC_BUILD_DIR}/nbl/generate/dxc/config/debug.cmake")
137101
include("${DXC_BUILD_DIR}/nbl/generate/dxc/config/release.cmake")
138102

3rdparty/dxc/CT/CMakeLists.txt

Lines changed: 0 additions & 134 deletions
This file was deleted.

3rdparty/dxc/exe/bin.tar.bz2

-1.8 MB
Binary file not shown.

CMakeLists.txt

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -108,19 +108,25 @@ if(NOT CMAKE_BUILD_TYPE)
108108
endif()
109109

110110
option(_NBL_MEMORY_CONSUMPTION_CHECK_SKIP_ "Turn it ON to bypass memory consumption test given _NBL_JOBS_AMOUNT_. Be aware you are doing it on your own risk of potential build failures!" OFF)
111+
option(_NBL_JOBS_OVERRIDE_ "Override jobs with safe bias if required to respect currently available memory" OFF)
111112

112113
include(ProcessorCount)
114+
113115
if(NOT DEFINED _NBL_JOBS_AMOUNT_)
114-
ProcessorCount(_NBL_JOBS_AMOUNT_)
115-
if(_NBL_JOBS_AMOUNT_ EQUAL 0)
116-
set(_NBL_JOBS_AMOUNT_ 1)
116+
if(NOT "$ENV{_NBL_JOBS_AMOUNT_}" STREQUAL "")
117+
set(_NBL_JOBS_AMOUNT_ "$ENV{_NBL_JOBS_AMOUNT_}")
118+
else()
119+
ProcessorCount(_NBL_JOBS_AMOUNT_)
120+
if(_NBL_JOBS_AMOUNT_ EQUAL 0)
121+
set(_NBL_JOBS_AMOUNT_ 1)
122+
endif()
117123
endif()
118124
endif()
119125

120126
cmake_host_system_information(RESULT _NBL_TOTAL_PHYSICAL_MEMORY_ QUERY TOTAL_PHYSICAL_MEMORY) # MB
121127
cmake_host_system_information(RESULT _NBL_AVAILABLE_PHYSICAL_MEMORY_ QUERY AVAILABLE_PHYSICAL_MEMORY) # MB
122128

123-
if(NBL_CI_MODE)
129+
if(_NBL_JOBS_OVERRIDE_)
124130
math(EXPR _CI_NBL_JOBS_AMOUNT_ "(${_NBL_AVAILABLE_PHYSICAL_MEMORY_} - 512)/(2*1024)") # override with safe bias, respect memory and don't take more then max processors we have
125131
if(_CI_NBL_JOBS_AMOUNT_ LESS _NBL_JOBS_AMOUNT_)
126132
message(WARNING "Overriding _NBL_JOBS_AMOUNT_: \"${_NBL_JOBS_AMOUNT_}\" with \"${_CI_NBL_JOBS_AMOUNT_}\"")
@@ -129,7 +135,7 @@ if(NBL_CI_MODE)
129135
endif()
130136
endif()
131137

132-
set(_NBL_JOBS_AMOUNT_ "${_NBL_JOBS_AMOUNT_}" CACHE STRING "Max jobs amount for the build to be invoked" FORCE)
138+
message(STATUS "_NBL_JOBS_AMOUNT_: \"${_NBL_JOBS_AMOUNT_}\"")
133139

134140
math(EXPR _NBL_DEBUG_MEMORY_CONSUPTION_WITH_ALL_JOBS_ "${_NBL_JOBS_AMOUNT_}*2*1024") # MB
135141
math(EXPR _NBL_CURRENTLY_USED_PHYSICAL_MEMORY_ "${_NBL_TOTAL_PHYSICAL_MEMORY_}-${_NBL_AVAILABLE_PHYSICAL_MEMORY_}") # MB
@@ -312,7 +318,7 @@ option(NBL_BUILD_EXAMPLES "Enable building examples" ON)
312318

313319
option(NBL_BUILD_MITSUBA_LOADER "Enable nbl::ext::MitsubaLoader?" OFF) # TODO: once it compies turn this ON by default!
314320

315-
option(NBL_BUILD_IMGUI "Enable nbl::ext::ImGui?" ON)
321+
option(NBL_BUILD_IMGUI "Enable nbl::ext::ImGui?" OFF)
316322

317323
option(NBL_BUILD_OPTIX "Enable nbl::ext::OptiX?" OFF)
318324
if(NBL_COMPILE_WITH_CUDA)
@@ -336,23 +342,20 @@ set(THIRD_PARTY_BINARY_DIR "${PROJECT_BINARY_DIR}/3rdparty")
336342

337343
set(NBL_MEDIA_DIRECTORY "${PROJECT_SOURCE_DIR}/examples_tests/media")
338344
get_filename_component(NBL_MEDIA_DIRECTORY_ABS "${NBL_MEDIA_DIRECTORY}" ABSOLUTE)
339-
340-
option(NBL_UPDATE_GIT_SUBMODULE "Turn this ON to let CMake update all public submodules for you" ON)
341-
option(NBL_FORCE_ON_UPDATE_GIT_SUBMODULE "Submodules will be updated with --force flag if NBL_FORCE_UPDATE_GIT_SUBMODULE is turned ON, use with caution - if there are any uncommited files in submodules' working tree they will be removed!" OFF)
342-
option(NBL_SYNC_ON_UPDATE_GIT_SUBMODULE "Sync initialized submodule paths if NBL_FORCE_UPDATE_GIT_SUBMODULE is turned ON, this is useful when any submodule remote path got modified and you want to apply this modification to your local repository. Turning NBL_FORCE_ON_UPDATE_GIT_SUBMODULE implies this option" OFF)
343-
option(NBL_UPDATE_GIT_SUBMODULE_INCLUDE_PRIVATE "Turn this ON to attempt to update private Nabla submodules" OFF)
344-
option(NBL_CI_GIT_SUBMODULES_SHALLOW "" OFF)
345-
346-
find_package(Git REQUIRED)
345+
346+
include(submodules/update)
347347
find_package (Python3 COMPONENTS Interpreter REQUIRED)
348348
include(common)
349349

350-
NBL_UPDATE_SUBMODULES()
351350
add_subdirectory(${THIRD_PARTY_SOURCE_DIR})
352351

353352
add_subdirectory(src/nbl)
354353
add_subdirectory("${NBL_PYTHON_MODULE_ROOT_PATH}" tests) # Python Framework
355-
add_subdirectory(examples_tests)
354+
if(NBL_BUILD_EXAMPLES)
355+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY GUARD PROCESS RESULT_VARIABLE NBL_LOCK TIMEOUT 60)
356+
add_subdirectory(examples_tests)
357+
file(LOCK "${CMAKE_CURRENT_SOURCE_DIR}/examples_tests" DIRECTORY RELEASE RESULT_VARIABLE NBL_LOCK)
358+
endif()
356359
add_subdirectory(tools)
357360

358361
if(NBL_BUILD_DOCS)

0 commit comments

Comments
 (0)