Skip to content

Commit de62785

Browse files
Merge pull request #771 from Devsh-Graphics-Programming/spirv_optimizer_fix
Small fix for SPIRV Optimizer + small fix to optimizer pass serialization
2 parents 64b8084 + 0cc3a18 commit de62785

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

include/nbl/asset/utils/ISPIRVOptimizer.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class ISPIRVOptimizer final : public core::IReferenceCounted
2424
EOP_SIMPLIFICATION,
2525
EOP_VECTOR_DCE,
2626
EOP_DEAD_INSERT_ELIM,
27-
EOP_AGGRESSIVE_DCE,
2827
EOP_DEAD_BRANCH_ELIM,
2928
EOP_BLOCK_MERGE,
3029
EOP_LOCAL_MULTI_STORE_ELIM,
@@ -34,11 +33,13 @@ class ISPIRVOptimizer final : public core::IReferenceCounted
3433
EOP_REDUCE_LOAD_SIZE,
3534
EOP_STRENGTH_REDUCTION,
3635
EOP_IF_CONVERSION,
36+
EOP_STRIP_DEBUG_INFO,
37+
EOP_AGGRESSIVE_DCE,
3738

3839
EOP_COUNT
3940
};
4041

41-
ISPIRVOptimizer(std::initializer_list<E_OPTIMIZER_PASS> _passes) : m_passes(std::move(_passes)) {}
42+
ISPIRVOptimizer(std::span<const E_OPTIMIZER_PASS> _passes) : m_passes(_passes.begin(), _passes.end()) {}
4243

4344
core::smart_refctd_ptr<ICPUBuffer> optimize(const uint32_t* _spirv, uint32_t _dwordCount, system::logger_opt_ptr logger) const;
4445
core::smart_refctd_ptr<ICPUBuffer> optimize(const ICPUBuffer* _spirv, system::logger_opt_ptr logger) const;
@@ -50,4 +51,4 @@ class ISPIRVOptimizer final : public core::IReferenceCounted
5051

5152
}
5253

53-
#endif
54+
#endif

src/nbl/asset/utils/ISPIRVOptimizer.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
using namespace nbl::asset;
99

10-
static constexpr spv_target_env SPIRV_VERSION = spv_target_env::SPV_ENV_UNIVERSAL_1_5;
10+
static constexpr spv_target_env SPIRV_VERSION = spv_target_env::SPV_ENV_UNIVERSAL_1_6;
1111

1212
nbl::core::smart_refctd_ptr<ICPUBuffer> ISPIRVOptimizer::optimize(const uint32_t* _spirv, uint32_t _dwordCount, system::logger_opt_ptr logger) const
1313
{
@@ -32,7 +32,6 @@ nbl::core::smart_refctd_ptr<ICPUBuffer> ISPIRVOptimizer::optimize(const uint32_t
3232
&spvtools::CreateSimplificationPass,
3333
&spvtools::CreateVectorDCEPass,
3434
&spvtools::CreateDeadInsertElimPass,
35-
//&spvtools::CreateAggressiveDCEPass,
3635
&spvtools::CreateDeadBranchElimPass,
3736
&spvtools::CreateBlockMergePass,
3837
&spvtools::CreateLocalMultiStoreElimPass,
@@ -41,7 +40,9 @@ nbl::core::smart_refctd_ptr<ICPUBuffer> ISPIRVOptimizer::optimize(const uint32_t
4140
&spvtools::CreateCCPPass,
4241
CreateReduceLoadSizePass,
4342
&spvtools::CreateStrengthReductionPass,
44-
&spvtools::CreateIfConversionPass
43+
&spvtools::CreateIfConversionPass,
44+
&spvtools::CreateStripDebugInfoPass,
45+
//&spvtools::CreateAggressiveDCEPass
4546
};
4647

4748
auto msgConsumer = [&logger](spv_message_level_t level, const char* src, const spv_position_t& pos, const char* msg)
@@ -58,7 +59,11 @@ nbl::core::smart_refctd_ptr<ICPUBuffer> ISPIRVOptimizer::optimize(const uint32_t
5859
system::ILogger::ELL_DEBUG
5960
};
6061
const auto lvl = lvl2lvl[level];
61-
const std::string location = src + ":"s + std::to_string(pos.line) + ":" + std::to_string(pos.column);
62+
std::string location;
63+
if (src)
64+
location = src + ":"s + std::to_string(pos.line) + ":" + std::to_string(pos.column);
65+
else
66+
location = "";
6267

6368
logger.log(location, lvl, msg);
6469
};

src/nbl/asset/utils/shaderCompiler_serialization.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ inline void to_json(json& j, const ISPIRVOptimizer::E_OPTIMIZER_PASS& optPass)
5050
{
5151
uint32_t value = static_cast<uint32_t>(optPass);
5252
j = json{
53-
{ "optPass", optPass },
53+
{ "optPass", value },
5454
};
5555
}
5656

0 commit comments

Comments
 (0)