Skip to content

Commit 6941998

Browse files
committed
Merged the accessors fix
2 parents 5777e2a + ff85986 commit 6941998

File tree

101 files changed

+9511
-3807
lines changed

Some content is hidden

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

101 files changed

+9511
-3807
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ tools/nsc/.profiles/*
3535
tools/nsc/bin/*
3636
*/__pycache__/*
3737
__pycache__/*
38+
*.pyc

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
[submodule "examples_tests"]
7171
path = examples_tests
7272
url = [email protected]:Devsh-Graphics-Programming/Nabla-Examples-and-Tests.git
73+
[submodule "3rdparty/msdfgen"]
74+
path = 3rdparty/msdfgen
75+
url = https://github.com/Chlumsky/msdfgen
7376
branch = master
7477
[submodule "3rdparty/dxc/dxc"]
7578
path = 3rdparty/dxc/dxc

3rdparty/CMakeLists.txt

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,29 @@ add_subdirectory(simdjson simdjson EXCLUDE_FROM_ALL)
2222
set(BUILD_SHARED_LIBS ${_OLD_BUILD_SHARED_LIBS})
2323
set(BUILD_STATIC_LIBS ${_OLD_BUILD_STATIC_LIBS})
2424
set(BUILD_TESTING ${_OLD_BUILD_TESTING})
25+
26+
# freetype2
27+
set(FT_WITH_HARFBUZZ OFF)
28+
add_subdirectory(freetype2 freetype2 EXCLUDE_FROM_ALL)
29+
add_library(Freetype::Freetype ALIAS freetype) # alias target for MSDFGEN not trying to find freetype system-wide but rather to use the logical target available in our build tree
30+
31+
# msdfgen
32+
set(MSDFGEN_USE_VCPKG OFF)
33+
set(MSDFGEN_USE_SKIA OFF)
34+
set(MSDFGEN_CORE_ONLY OFF) # if turned on then MSDFGEN will be built without dependencies like freetype or skia
35+
set(MSDFGEN_INSTALL OFF)
36+
set(MSDFGEN_BUILD_STANDALONE OFF)
37+
set(MSDFGEN_USE_CPP11 ON)
38+
set(MSDFGEN_DISABLE_SVG ON)
39+
set(MSDFGEN_DISABLE_PNG ON)
40+
add_subdirectory(msdfgen msdfgen EXCLUDE_FROM_ALL)
41+
42+
if(MSDFGEN_CORE_ONLY)
43+
message(FATAL_ERROR "Internal error, MSDF must be used with extension target as well!")
44+
else()
45+
set(NBL_MSDFGEN_TARGETS msdfgen-ext msdfgen-core)
46+
endif()
47+
2548
set_property(TARGET simdjson PROPERTY CXX_STANDARD 17)
2649

2750
# DXC
@@ -373,6 +396,8 @@ set(NBL_3RDPARTY_TARGETS
373396
Iex
374397
IlmThread
375398
Imath
399+
freetype
400+
${NBL_MSDFGEN_TARGETS}
376401
blake3
377402
${NBL_BOOST_TARGETS}
378403
)
@@ -425,6 +450,13 @@ nbl_adjust_definitions()
425450
add_custom_target(3rdparty)
426451
add_dependencies(3rdparty ${NBL_3RDPARTY_TARGETS})
427452

428-
set(_NBL_3RDPARTY_TARGETS_ ${NBL_3RDPARTY_TARGETS} PARENT_SCOPE)
453+
nbl_install_dir("${CMAKE_CURRENT_SOURCE_DIR}/parallel-hashmap/parallel_hashmap")
454+
455+
# parent scope exports, must be at the end of the file
456+
set(_NBL_3RDPARTY_TARGETS_
457+
${NBL_3RDPARTY_TARGETS}
458+
PARENT_SCOPE)
429459

430-
nbl_install_dir("${CMAKE_CURRENT_SOURCE_DIR}/parallel-hashmap/parallel_hashmap")
460+
set(NBL_MSDFGEN_TARGETS
461+
${NBL_MSDFGEN_TARGETS}
462+
PARENT_SCOPE)

3rdparty/msdfgen

Submodule msdfgen added at 755c45b

cmake/adjust/flags.cmake

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ function(nbl_adjust_flags)
148148
set(NBL_TARGET_MSVC_DEBUG_INFORMATION_FORMAT "$<$<OR:$<STREQUAL:${MAPPED_CONFIG},DEBUG>,$<STREQUAL:${MAPPED_CONFIG},RELWITHDEBINFO>>:ProgramDatabase>")
149149
else()
150150
set(NBL_TARGET_MSVC_DEBUG_INFORMATION_FORMAT "$<$<STREQUAL:${MAPPED_CONFIG},DEBUG>:EditAndContinue>$<$<STREQUAL:${MAPPED_CONFIG},RELWITHDEBINFO>:ProgramDatabase>")
151-
endif()
152-
153-
# test
154-
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/TEST/GEN/${NBL_TARGET_ITEM}/test.cmake" CONTENT "TEST\nNBL_TARGET_MSVC_DEBUG_INFORMATION_FORMAT: \"${NBL_TARGET_MSVC_DEBUG_INFORMATION_FORMAT}\"\nmapped config: \"${MAPPED_CONFIG}\"" CONDITION $<CONFIG:DEBUG>)
151+
endif()
155152
endif()
156153

157154
set_target_properties(${NBL_TARGET_ITEM} PROPERTIES

cmake/common.cmake

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,10 @@ macro(nbl_create_ext_library_project EXT_NAME LIB_HEADERS LIB_SOURCES LIB_INCLUD
314314
)
315315
endif()
316316

317-
nbl_install_file_spec(${LIB_HEADERS} "nbl/ext/${EXT_NAME}")
317+
if(LIB_HEADERS)
318+
nbl_install_file_spec(${LIB_HEADERS} "nbl/ext/${EXT_NAME}")
319+
endif()
320+
318321
nbl_install_lib_spec(${LIB_NAME} "nbl/ext/${EXT_NAME}")
319322

320323
set("NBL_EXT_${EXT_NAME}_INCLUDE_DIRS"

include/nbl/application_templates/MonoDeviceApplication.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ class MonoDeviceApplication : public virtual MonoSystemMonoLoggerApplication
118118
{
119119
video::SPhysicalDeviceLimits retval = {};
120120

121-
retval.subgroupOpsShaderStages = asset::IShader::ESS_COMPUTE;
121+
retval.subgroupOpsShaderStages = asset::IShader::E_SHADER_STAGE::ESS_COMPUTE;
122122

123123
return retval;
124124
}

include/nbl/asset/ICPUComputePipeline.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class ICPUComputePipeline : public ICPUPipeline<IPipeline<ICPUPipelineLayout>,1>
3838
inline E_TYPE getAssetType() const override { return AssetType; }
3939

4040
// provide default arg
41-
inline IShader::SSpecInfo<ICPUShader> getSpecInfo() {return base_t::getSpecInfo(ICPUShader::ESS_COMPUTE);}
42-
inline IShader::SSpecInfo<const ICPUShader> getSpecInfo() const {return base_t::getSpecInfo(ICPUShader::ESS_COMPUTE);}
41+
inline IShader::SSpecInfo<ICPUShader> getSpecInfo() {return base_t::getSpecInfo(ICPUShader::E_SHADER_STAGE::ESS_COMPUTE);}
42+
inline IShader::SSpecInfo<const ICPUShader> getSpecInfo() const {return base_t::getSpecInfo(ICPUShader::E_SHADER_STAGE::ESS_COMPUTE);}
4343

4444
protected:
4545
using base_t::base_t;
@@ -51,7 +51,7 @@ class ICPUComputePipeline : public ICPUPipeline<IPipeline<ICPUPipelineLayout>,1>
5151
}
5252
inline int8_t stageToIndex(const ICPUShader::E_SHADER_STAGE stage) const override
5353
{
54-
return stage!=ICPUShader::ESS_COMPUTE ? (-1):0;
54+
return stage!=ICPUShader::E_SHADER_STAGE::ESS_COMPUTE ? (-1):0;
5555
}
5656
};
5757

include/nbl/asset/IGraphicsPipeline.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,22 @@ class IGraphicsPipeline : public IPipeline<PipelineLayoutType>
107107
if (!extra(info))
108108
return false;
109109
const auto stage = info.shader->getStage();
110-
if (stage>ICPUShader::ESS_FRAGMENT)
110+
if (stage>ICPUShader::E_SHADER_STAGE::ESS_FRAGMENT)
111111
return false;
112112
if (stagePresence.hasFlags(stage))
113113
return false;
114114
stagePresence |= stage;
115115
}
116116
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-stage-02096
117-
if (!stagePresence.hasFlags(ICPUShader::ESS_VERTEX))
117+
if (!stagePresence.hasFlags(ICPUShader::E_SHADER_STAGE::ESS_VERTEX))
118118
return false;
119119
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-00729
120120
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-00730
121-
if (stagePresence.hasFlags(ICPUShader::ESS_TESSELLATION_CONTROL)!=stagePresence.hasFlags(ICPUShader::ESS_TESSELLATION_EVALUATION))
121+
if (stagePresence.hasFlags(ICPUShader::E_SHADER_STAGE::ESS_TESSELLATION_CONTROL)!=stagePresence.hasFlags(ICPUShader::E_SHADER_STAGE::ESS_TESSELLATION_EVALUATION))
122122
return false;
123123
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-08888
124124
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-topology-08889
125-
if (stagePresence.hasFlags(ICPUShader::ESS_TESSELLATION_EVALUATION)!=(cached.primitiveAssembly.primitiveType==EPT_PATCH_LIST))
125+
if (stagePresence.hasFlags(ICPUShader::E_SHADER_STAGE::ESS_TESSELLATION_EVALUATION)!=(cached.primitiveAssembly.primitiveType==EPT_PATCH_LIST))
126126
return false;
127127

128128
return true;

include/nbl/asset/IImage.h

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#include "nbl/asset/ECommonEnums.h"
1616
#include "nbl/system/ILogger.h"
1717

18+
#include "nbl/builtin/hlsl/enums.hlsl"
19+
1820
#include <bitset>
1921
#include <compare>
2022

@@ -110,15 +112,14 @@ class IImage : public IDescriptor
110112
ET_3D,
111113
ET_COUNT
112114
};
113-
enum E_SAMPLE_COUNT_FLAGS : uint8_t
114-
{
115-
ESCF_1_BIT = 0x01,
116-
ESCF_2_BIT = 0x02,
117-
ESCF_4_BIT = 0x04,
118-
ESCF_8_BIT = 0x08,
119-
ESCF_16_BIT = 0x10,
120-
ESCF_32_BIT = 0x20,
121-
ESCF_64_BIT = 0x40
115+
enum E_SAMPLE_COUNT_FLAGS : uint8_t {
116+
ESCF_1_BIT = nbl::hlsl::SampleCountFlags::ESCF_1_BIT,
117+
ESCF_2_BIT = nbl::hlsl::SampleCountFlags::ESCF_2_BIT,
118+
ESCF_4_BIT = nbl::hlsl::SampleCountFlags::ESCF_4_BIT,
119+
ESCF_8_BIT = nbl::hlsl::SampleCountFlags::ESCF_8_BIT,
120+
ESCF_16_BIT = nbl::hlsl::SampleCountFlags::ESCF_16_BIT,
121+
ESCF_32_BIT = nbl::hlsl::SampleCountFlags::ESCF_32_BIT,
122+
ESCF_64_BIT = nbl::hlsl::SampleCountFlags::ESCF_64_BIT
122123
};
123124
enum E_USAGE_FLAGS : uint16_t
124125
{
@@ -354,7 +355,7 @@ class IImage : public IDescriptor
354355
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateInfo.html#VUID-VkImageCreateInfo-flags-08866
355356
if (_params.arrayLayers < 6u)
356357
return false;
357-
if (_params.samples != ESCF_1_BIT)
358+
if (_params.samples != E_SAMPLE_COUNT_FLAGS::ESCF_1_BIT)
358359
return false;
359360
}
360361

@@ -433,7 +434,7 @@ class IImage : public IDescriptor
433434
return false;
434435
}
435436

436-
if (_params.samples != ESCF_1_BIT)
437+
if (_params.samples != E_SAMPLE_COUNT_FLAGS::ESCF_1_BIT)
437438
{
438439
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateInfo.html#VUID-VkImageCreateInfo-samples-02257
439440
if (_params.type != ET_2D || _params.flags.hasFlags(ECF_CUBE_COMPATIBLE_BIT) || _params.mipLevels == 1u)
@@ -476,7 +477,7 @@ class IImage : public IDescriptor
476477

477478
if (asset::isPlanarFormat(_params.format))
478479
{
479-
if (_params.mipLevels > 1u || _params.samples != ESCF_1_BIT || _params.type != ET_2D)
480+
if (_params.mipLevels > 1u || _params.samples != E_SAMPLE_COUNT_FLAGS::ESCF_1_BIT || _params.type != ET_2D)
480481
return false;
481482
}
482483
else if (!_params.flags.hasFlags(ECF_ALIAS_BIT) && _params.flags.hasFlags(ECF_DISJOINT_BIT))
@@ -489,7 +490,7 @@ class IImage : public IDescriptor
489490
if (_params.usage.hasFlags(EUF_SHADING_RATE_ATTACHMENT_BIT))
490491
{
491492
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateInfo.html#VUID-VkImageCreateInfo-imageType-02082
492-
if (_params.type!=ET_2D || _params.samples!=ESCF_1_BIT)
493+
if (_params.type!=ET_2D || _params.samples != E_SAMPLE_COUNT_FLAGS::ESCF_1_BIT)
493494
return false;
494495
}
495496

@@ -681,7 +682,7 @@ class IImage : public IDescriptor
681682
}
682683
else
683684
{
684-
if (m_creationParams.samples!=ESCF_1_BIT)
685+
if (m_creationParams.samples!=E_SAMPLE_COUNT_FLAGS::ESCF_1_BIT)
685686
die = true;
686687
}
687688

@@ -850,8 +851,6 @@ class IImage : public IDescriptor
850851
static_assert(sizeof(IImage)-sizeof(IDescriptor)!=3u*sizeof(uint32_t)+sizeof(VkExtent3D)+sizeof(uint32_t)*3u,"BaW File Format won't work");
851852

852853
NBL_ENUM_ADD_BITWISE_OPERATORS(IImage::E_USAGE_FLAGS)
853-
NBL_ENUM_ADD_BITWISE_OPERATORS(IImage::E_SAMPLE_COUNT_FLAGS)
854-
855854
} // end namespace nbl::asset
856855

857856
#endif

0 commit comments

Comments
 (0)