Skip to content

Commit 9b7901e

Browse files
author
devsh
committed
add error logging on shader module creation
1 parent ba6736a commit 9b7901e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/nbl/video/ILogicalDevice.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,10 @@ core::smart_refctd_ptr<IGPUBufferView> ILogicalDevice::createBufferView(const as
260260
core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCreationParameters& creationParams)
261261
{
262262
if (!creationParams.cpushader)
263+
{
264+
m_logger.log("No valid CPU Shader supplied",system::ILogger::ELL_ERROR);
263265
return nullptr;
266+
}
264267

265268
const asset::IShader::E_SHADER_STAGE shaderStage = creationParams.cpushader->getStage();
266269
const auto& features = getEnabledFeatures();
@@ -277,11 +280,17 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
277280
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_CONTROL: [[fallthrough]];
278281
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_EVALUATION:
279282
if (!features.tessellationShader)
283+
{
284+
m_logger.log("Cannot create IGPUShader for %p, Tessellation Shader feature not enabled!",system::ILogger::ELL_ERROR,creationParams.cpushader);
280285
return nullptr;
286+
}
281287
break;
282288
case IGPUShader::E_SHADER_STAGE::ESS_GEOMETRY:
283289
if (!features.geometryShader)
290+
{
291+
m_logger.log("Cannot create IGPUShader for %p, Geometry Shader feature not enabled!",system::ILogger::ELL_ERROR,creationParams.cpushader);
284292
return nullptr;
293+
}
285294
break;
286295
case IGPUShader::E_SHADER_STAGE::ESS_FRAGMENT: [[fallthrough]];
287296
case IGPUShader::E_SHADER_STAGE::ESS_COMPUTE:
@@ -298,10 +307,14 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
298307
case IGPUShader::E_SHADER_STAGE::ESS_INTERSECTION: [[fallthrough]];
299308
case IGPUShader::E_SHADER_STAGE::ESS_CALLABLE:
300309
if (!features.rayTracingPipeline)
310+
{
311+
m_logger.log("Cannot create IGPUShader for %p, Raytracing Pipeline feature not enabled!",system::ILogger::ELL_ERROR,creationParams.cpushader);
301312
return nullptr;
313+
}
302314
break;
303315
default:
304316
// Implicit unsupported stages or weird multi-bit stage enum values
317+
m_logger.log("Unknown Shader Stage %d",system::ILogger::ELL_ERROR,shaderStage);
305318
return nullptr;
306319
break;
307320
}
@@ -343,12 +356,18 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
343356
spirvShader = m_compilerSet->compileToSPIRV(creationParams.cpushader, commonCompileOptions);
344357

345358
if (!spirvShader)
359+
{
360+
m_logger.log("SPIR-V Compilation from non SPIR-V shader %p failed.",system::ILogger::ELL_ERROR,creationParams.cpushader);
346361
return nullptr;
362+
}
347363
}
348364

349365
auto spirv = spirvShader->getContent();
350366
if (!spirv)
367+
{
368+
m_logger.log("SPIR-V Compilation from non SPIR-V shader %p failed.",system::ILogger::ELL_ERROR,creationParams.cpushader);
351369
return nullptr;
370+
}
352371

353372
// for debugging
354373
if constexpr (true)

0 commit comments

Comments
 (0)