Skip to content

Commit b291f7a

Browse files
Fix paths and aliases on mounted folders when NBL_EMBED_RESOURCES=OFF, missing return on CMountDirectoryArchive::getFile, made sure IFileArchive::m_absolutePath is preferred form and const.
P.S. Also take the opportunity rename all the variables about DXC_BUILTIN into SPIRV_BUILTIN because
1 parent 47a27e3 commit b291f7a

File tree

9 files changed

+56
-51
lines changed

9 files changed

+56
-51
lines changed

3rdparty/boost/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ set(BOOST_PREPROCESSOR_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/superproject/libs/pr
33
get_filename_component(_BOOST_PREPROCESSOR_BR_BUNDLE_SEARCH_DIRECTORY_ "${BOOST_PREPROCESSOR_INCLUDE}" ABSOLUTE)
44
get_filename_component(_BOOST_PREPROCESSOR_BR_OUTPUT_DIRECTORY_SOURCE_ "${CMAKE_CURRENT_BINARY_DIR}/src" ABSOLUTE)
55
get_filename_component(_BOOST_PREPROCESSOR_BR_OUTPUT_DIRECTORY_HEADER_ "${CMAKE_CURRENT_BINARY_DIR}/include" ABSOLUTE)
6-
set(BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH "${_BOOST_PREPROCESSOR_BR_BUNDLE_SEARCH_DIRECTORY_}" CACHE INTERNAL "" FORCE)
6+
set(BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH "${_BOOST_PREPROCESSOR_BR_BUNDLE_SEARCH_DIRECTORY_}/boost" CACHE INTERNAL "" FORCE)
77

88
if(NBL_EMBED_BUILTIN_RESOURCES)
99
include("${NBL_ROOT_PATH}/src/nbl/builtin/utils.cmake")
1010

11-
file(GLOB_RECURSE BOOST_HEADERS_REC_REL RELATIVE "${BOOST_PREPROCESSOR_INCLUDE}/boost" "${BOOST_PREPROCESSOR_INCLUDE}/*")
11+
file(GLOB_RECURSE BOOST_HEADERS_REC_REL RELATIVE "${BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH}" "${BOOST_PREPROCESSOR_INCLUDE}/*")
1212

1313
foreach(BOOST_HEADER_REL IN LISTS BOOST_HEADERS_REC_REL)
1414
LIST_BUILTIN_RESOURCE(BOOST_RESOURCES_TO_EMBED "${BOOST_HEADER_REL}")

3rdparty/dxc/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ endif()
5454

5555
# perform DXC compile standard requirement test
5656
set(CMAKE_CXX_STANDARD_REQUIRED ON)
57+
# TODO: Don't they support a higher standard now, like 17 ?
5758
set(CMAKE_CXX_STANDARD 11) # compiler must support exactly c++11 or c++14 standard in order to be able to build DXC libraries
5859

5960
try_compile(DXC_COMPILE_TEST_PASSED
@@ -166,7 +167,7 @@ CACHE INTERNAL "" FORCE)
166167
get_filename_component(_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_ "${DXC_SPIRV_HEADERS_DIR}/include" ABSOLUTE)
167168
get_filename_component(_SPIRV_BR_OUTPUT_DIRECTORY_SOURCE_ "${CMAKE_CURRENT_BINARY_DIR}/src" ABSOLUTE)
168169
get_filename_component(_SPIRV_BR_OUTPUT_DIRECTORY_HEADER_ "${CMAKE_CURRENT_BINARY_DIR}/include" ABSOLUTE)
169-
set(DXC_BUILTIN_RESOURCES_DIRECTORY_PATH "${_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_}" CACHE INTERNAL "" FORCE)
170+
set(SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH "${_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_}/spirv" CACHE INTERNAL "" FORCE)
170171

171172
if(NBL_EMBED_BUILTIN_RESOURCES)
172173
include("${NBL_ROOT_PATH}/src/nbl/builtin/utils.cmake")
@@ -175,6 +176,6 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
175176
LIST_BUILTIN_RESOURCE(SPIRV_RESOURCES_TO_EMBED "unified1/spirv.h")
176177
LIST_BUILTIN_RESOURCE(SPIRV_RESOURCES_TO_EMBED "unified1/spirv.hpp")
177178

178-
ADD_CUSTOM_BUILTIN_RESOURCES(dxcBuiltinResourceData SPIRV_RESOURCES_TO_EMBED "${_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_}" "spirv" "spirv::builtin" "${_SPIRV_BR_OUTPUT_DIRECTORY_HEADER_}" "${_SPIRV_BR_OUTPUT_DIRECTORY_SOURCE_}" "STATIC" "INTERNAL")
179+
ADD_CUSTOM_BUILTIN_RESOURCES(spirvBuiltinResourceData SPIRV_RESOURCES_TO_EMBED "${_SPIRV_BR_BUNDLE_SEARCH_DIRECTORY_}" "spirv" "spirv::builtin" "${_SPIRV_BR_OUTPUT_DIRECTORY_HEADER_}" "${_SPIRV_BR_OUTPUT_DIRECTORY_SOURCE_}" "STATIC" "INTERNAL")
179180
endif()
180181

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ endif()
6565
get_filename_component(NBL_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ABSOLUTE)
6666
get_filename_component(NBL_ROOT_PATH_BINARY "${CMAKE_CURRENT_BINARY_DIR}" ABSOLUTE)
6767
get_filename_component(NBL_PYTHON_MODULE_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tests" ABSOLUTE)
68-
set(NBL_BUILTIN_RESOURCES_DIRECTORY_PATH "${NBL_ROOT_PATH}/include")
68+
set(NBL_BUILTIN_RESOURCES_DIRECTORY_PATH "${NBL_ROOT_PATH}/include/nbl/builtin")
6969
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${NBL_ROOT_PATH}/cmake" CACHE PATH "")
7070

7171
# Configure CCache if available

include/nbl/config/BuildConfigOptions.h.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
#endif
8484

8585
#define NBL_BUILTIN_RESOURCES_DIRECTORY_PATH "@NBL_BUILTIN_RESOURCES_DIRECTORY_PATH@"
86-
#define DXC_BUILTIN_RESOURCES_DIRECTORY_PATH "@DXC_BUILTIN_RESOURCES_DIRECTORY_PATH@"
86+
#define SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH "@SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH@"
8787
#define BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH "@BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH@"
8888

8989
// DDL exports

include/nbl/system/CMountDirectoryArchive.h

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,49 +11,51 @@ namespace nbl::system
1111

1212
class CMountDirectoryArchive : public IFileArchive
1313
{
14-
ISystem* m_system;
14+
ISystem* m_system;
1515

16-
public:
17-
inline CMountDirectoryArchive(path&& _defaultAbsolutePath, system::logger_opt_smart_ptr&& logger, ISystem* system) :
18-
IFileArchive(std::move(_defaultAbsolutePath), std::move(logger))
19-
{
20-
m_system = system;
21-
}
22-
23-
core::smart_refctd_ptr<IFile> getFile(const path& pathRelativeToArchive, const std::string_view& password) override
24-
{
16+
public:
17+
inline CMountDirectoryArchive(path&& _defaultAbsolutePath, system::logger_opt_smart_ptr&& logger, ISystem* system) :
18+
IFileArchive(std::move(_defaultAbsolutePath), std::move(logger))
2519
{
26-
//std::unique_lock(itemMutex); already inside `getItemFromPath`
27-
if (!getItemFromPath(pathRelativeToArchive))
28-
return nullptr;
20+
m_system = system;
2921
}
30-
system::ISystem::future_t<core::smart_refctd_ptr<system::IFile>> future;
31-
m_system->createFile(future, m_defaultAbsolutePath / pathRelativeToArchive, system::IFile::ECF_READ);
32-
if (auto file = future.acquire())
33-
return *file;
34-
}
3522

36-
37-
SFileList listAssets() const override {
38-
auto items = m_system->listItemsInDirectory(m_defaultAbsolutePath);
39-
auto new_entries = std::make_shared<core::vector<SFileList::SEntry>>();
40-
for (auto item : items)
23+
core::smart_refctd_ptr<IFile> getFile(const path& pathRelativeToArchive, const std::string_view& password) override
4124
{
42-
if (item.has_extension())
4325
{
44-
auto relpath = item.lexically_relative(m_defaultAbsolutePath);
45-
auto entry = SFileList::SEntry{ relpath, 0xdeadbeefu, 0xdeadbeefu, 0xdeadbeefu, EAT_NONE };
46-
new_entries->push_back(entry);
26+
//std::unique_lock(itemMutex); already inside `getItemFromPath`
27+
if (!getItemFromPath(pathRelativeToArchive))
28+
return nullptr;
4729
}
30+
system::ISystem::future_t<core::smart_refctd_ptr<system::IFile>> future;
31+
m_system->createFile(future, m_defaultAbsolutePath / pathRelativeToArchive, system::IFile::ECF_READ);
32+
if (auto file = future.acquire())
33+
return *file;
34+
35+
return nullptr;
4836
}
49-
setItemList(new_entries);
5037

51-
return IFileArchive::listAssets();
52-
}
38+
39+
SFileList listAssets() const override {
40+
auto items = m_system->listItemsInDirectory(m_defaultAbsolutePath);
41+
auto new_entries = std::make_shared<core::vector<SFileList::SEntry>>();
42+
for (auto item : items)
43+
{
44+
if (item.has_extension())
45+
{
46+
auto relpath = item.lexically_relative(m_defaultAbsolutePath);
47+
auto entry = SFileList::SEntry{ relpath, 0xdeadbeefu, 0xdeadbeefu, 0xdeadbeefu, EAT_NONE };
48+
new_entries->push_back(entry);
49+
}
50+
}
51+
setItemList(new_entries);
52+
53+
return IFileArchive::listAssets();
54+
}
5355

54-
void populateItemList(const path& p) const {
55-
56-
}
56+
void populateItemList(const path& p) const
57+
{
58+
}
5759
};
5860

5961
} //namespace nbl::system

include/nbl/system/IFileArchive.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,19 +100,21 @@ class NBL_API2 IFileArchive : public core::IReferenceCounted
100100

101101
protected:
102102
IFileArchive(path&& _defaultAbsolutePath, system::logger_opt_smart_ptr&& logger) :
103-
m_defaultAbsolutePath(std::move(_defaultAbsolutePath)), m_logger(std::move(logger)) {}
103+
m_defaultAbsolutePath(std::move(_defaultAbsolutePath.make_preferred())), m_logger(std::move(logger))
104+
{
105+
}
104106

105107
inline const SFileList::SEntry* getItemFromPath(const system::path& pathRelativeToArchive) const
106108
{
107109
const SFileList::SEntry itemToFind = { pathRelativeToArchive };
108110
auto items = m_items.load();
109111
const auto found = std::lower_bound(items->begin(), items->end(),itemToFind);
110-
if (found== items->end() || found->pathRelativeToArchive != pathRelativeToArchive)
112+
if (found==items->end() || found->pathRelativeToArchive != pathRelativeToArchive)
111113
return nullptr;
112114
return &(*found);
113115
}
114116

115-
path m_defaultAbsolutePath;
117+
const path m_defaultAbsolutePath;
116118
// files and directories
117119
//
118120
system::logger_opt_smart_ptr m_logger;

src/nbl/CMakeLists.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ if(_NBL_COMPILE_WITH_GLI_)
537537
target_include_directories(Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/gli)
538538
endif()
539539

540-
# DXC
540+
# DXC (TODO: nah, lets remove/disable it)
541541
if(_NBL_ENABLE_DXC_COMPILE_TESTS_)
542542
add_dependencies(Nabla HLSL_NABLA_COMPILE_TEST)
543543
endif()
@@ -610,19 +610,19 @@ endif()
610610

611611
if(NBL_EMBED_BUILTIN_RESOURCES)
612612
get_target_property(_NABLA_INCLUDE_DIRECTORIES_ Nabla INCLUDE_DIRECTORIES)
613-
get_target_property(_DXC_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_ dxcBuiltinResourceData BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
613+
get_target_property(_SPIRV_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_ spirvBuiltinResourceData BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
614614
get_target_property(_BOOST_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_ boostBuiltinResourceData BUILTIN_RESOURCES_INCLUDE_SEARCH_DIRECTORY)
615615

616-
target_include_directories(dxcBuiltinResourceData PUBLIC "${_NABLA_INCLUDE_DIRECTORIES_}") # the reason behind the patch is because this internal BR target gets created before Nabla
616+
target_include_directories(spirvBuiltinResourceData PUBLIC "${_NABLA_INCLUDE_DIRECTORIES_}") # the reason behind the patch is because this internal BR target gets created before Nabla
617617
target_include_directories(boostBuiltinResourceData PUBLIC "${_NABLA_INCLUDE_DIRECTORIES_}") # the reason behind the patch is because this internal BR target gets created before Nabla
618618

619619
target_include_directories(Nabla PUBLIC
620-
"${_DXC_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}"
620+
"${_SPIRV_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}"
621621
"${_BOOST_BR_OUTPUT_INCLUDE_SEARCH_DIRECTORY_}"
622622
)
623623

624624
add_subdirectory(builtin)
625-
add_dependencies(Nabla nblBuiltinResourceData dxcBuiltinResourceData boostBuiltinResourceData)
625+
add_dependencies(Nabla nblBuiltinResourceData spirvBuiltinResourceData boostBuiltinResourceData)
626626

627627
if(NBL_STATIC_BUILD)
628628
set(_NBL_LINK_QUALIFIER_ INTERFACE)
@@ -632,7 +632,7 @@ if(NBL_EMBED_BUILTIN_RESOURCES)
632632

633633
target_link_libraries(Nabla ${_NBL_LINK_QUALIFIER_}
634634
nblBuiltinResourceData
635-
dxcBuiltinResourceData
635+
spirvBuiltinResourceData
636636
boostBuiltinResourceData
637637
)
638638

@@ -693,7 +693,7 @@ nbl_install_config_header(BuildConfigOptions.h)
693693

694694
if(NBL_EMBED_BUILTIN_RESOURCES)
695695
nbl_install_builtin_resources(nblBuiltinResourceData)
696-
nbl_install_builtin_resources(dxcBuiltinResourceData)
696+
nbl_install_builtin_resources(spirvBuiltinResourceData)
697697
nbl_install_builtin_resources(boostBuiltinResourceData)
698698
endif()
699699

src/nbl/system/ISystem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ ISystem::ISystem(core::smart_refctd_ptr<ISystem::ICaller>&& caller) : m_dispatch
2626
#else
2727
// TODO: absolute default entry paths? we should do something with it
2828
mount(core::make_smart_refctd_ptr<nbl::system::CMountDirectoryArchive>(NBL_BUILTIN_RESOURCES_DIRECTORY_PATH, nullptr, this), "nbl/builtin");
29-
mount(core::make_smart_refctd_ptr<nbl::system::CMountDirectoryArchive>(DXC_BUILTIN_RESOURCES_DIRECTORY_PATH, nullptr, this), "dxc");
29+
mount(core::make_smart_refctd_ptr<nbl::system::CMountDirectoryArchive>(SPIRV_BUILTIN_RESOURCES_DIRECTORY_PATH, nullptr, this), "spirv");
3030
mount(core::make_smart_refctd_ptr<nbl::system::CMountDirectoryArchive>(BOOST_BUILTIN_RESOURCES_DIRECTORY_PATH, nullptr, this), "boost");
3131
#endif
3232
}

0 commit comments

Comments
 (0)