@@ -74,6 +74,12 @@ class ConvertUBOToPushConstantPass : public spvtools::opt::Pass
7474 m_BlockName{block_name}
7575 {}
7676
77+ static spvtools::Optimizer::PassToken Create (std::string BlockName)
78+ {
79+ return spvtools::Optimizer::PassToken{
80+ std::make_unique<ConvertUBOToPushConstantPass>(BlockName)};
81+ }
82+
7783 const char * name () const override { return " convert-ubo-to-push-constant" ; }
7884
7985 Status Process () override
@@ -95,8 +101,8 @@ class ConvertUBOToPushConstantPass : public spvtools::opt::Pass
95101
96102 if (candidate_ids.empty ())
97103 {
98- // Block name not found
99- return Status::SuccessWithoutChange ;
104+ LOG_ERROR_MESSAGE ( " Failed to convert UBO block ' " , m_BlockName, " ': no OpName found. " );
105+ return Status::Failure ;
100106 }
101107
102108 // Try each candidate ID to find a UniformBuffer
@@ -190,8 +196,8 @@ class ConvertUBOToPushConstantPass : public spvtools::opt::Pass
190196
191197 if (target_var == nullptr )
192198 {
193- // No UniformBuffer found with the given block name
194- return Status::SuccessWithoutChange ;
199+ LOG_ERROR_MESSAGE ( " Failed to convert UBO block ' " , m_BlockName, " ': no matching UniformBuffer found. " );
200+ return Status::Failure ;
195201 }
196202
197203 uint32_t target_var_id = target_var->result_id ();
@@ -444,8 +450,7 @@ std::vector<uint32_t> ConvertUBOToPushConstants(
444450 optimizer.SetMessageConsumer (SPIRVToolsInternal::SpvOptimizerMessageConsumer);
445451
446452 // Register the pass to convert UBO to push constant using custom out-of-tree pass
447- optimizer.RegisterPass (spvtools::Optimizer::PassToken (
448- std::make_unique<ConvertUBOToPushConstantPass>(BlockName)));
453+ optimizer.RegisterPass (ConvertUBOToPushConstantPass::Create (BlockName));
449454
450455 spvtools::OptimizerOptions options;
451456#ifdef DILIGENT_DEVELOPMENT
0 commit comments