Skip to content

Commit 81078e8

Browse files
author
devsh
committed
fix a bug in the application of SPIR-V Optimizer onto Shaders which are already SPIR-V in ILogicalDevice::compileShader CC @kevyuu
1 parent f421f90 commit 81078e8

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

src/nbl/asset/utils/CHLSLCompiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ core::smart_refctd_ptr<ICPUShader> CHLSLCompiler::compileToSPIRV_impl(const std:
540540
auto outSpirv = ICPUBuffer::create({ compileResult.objectBlob->GetBufferSize() });
541541
memcpy(outSpirv->getPointer(), compileResult.objectBlob->GetBufferPointer(), compileResult.objectBlob->GetBufferSize());
542542

543-
// Optimizer step
543+
// Optimizer step (TODO: improve by working on `compileResult.objectBlob->GetBufferPointer()` directly)
544544
if (hlslOptions.spirvOptimizer)
545545
outSpirv = hlslOptions.spirvOptimizer->optimize(outSpirv.get(), logger);
546546

src/nbl/video/ILogicalDevice.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,8 @@ core::smart_refctd_ptr<asset::ICPUShader> ILogicalDevice::compileShader(const SS
342342
{
343343
if (creationParams.optimizer)
344344
{
345-
auto spirvBuf = asset::ICPUBuffer::create({ creationParams.cpushader->getContent()->getSize() });
346-
auto str = new std::string();
347345
spirvShader = core::make_smart_refctd_ptr<asset::ICPUShader>(
348-
std::move(creationParams.optimizer->optimize(spirvBuf.get(), m_logger)),
346+
std::move(creationParams.optimizer->optimize(creationParams.cpushader->getContent(), m_logger)),
349347
shaderStage, asset::ICPUShader::E_CONTENT_TYPE::ECT_SPIRV,
350348
std::string(creationParams.cpushader->getFilepathHint()));
351349
}

0 commit comments

Comments
 (0)