@@ -260,7 +260,10 @@ core::smart_refctd_ptr<IGPUBufferView> ILogicalDevice::createBufferView(const as
260
260
core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader (const SShaderCreationParameters& creationParams)
261
261
{
262
262
if (!creationParams.cpushader )
263
+ {
264
+ m_logger.log (" No valid CPU Shader supplied" ,system::ILogger::ELL_ERROR);
263
265
return nullptr ;
266
+ }
264
267
265
268
const asset::IShader::E_SHADER_STAGE shaderStage = creationParams.cpushader ->getStage ();
266
269
const auto & features = getEnabledFeatures ();
@@ -277,11 +280,17 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
277
280
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_CONTROL: [[fallthrough]];
278
281
case IGPUShader::E_SHADER_STAGE::ESS_TESSELLATION_EVALUATION:
279
282
if (!features.tessellationShader )
283
+ {
284
+ m_logger.log (" Cannot create IGPUShader for %p, Tessellation Shader feature not enabled!" ,system::ILogger::ELL_ERROR,creationParams.cpushader );
280
285
return nullptr ;
286
+ }
281
287
break ;
282
288
case IGPUShader::E_SHADER_STAGE::ESS_GEOMETRY:
283
289
if (!features.geometryShader )
290
+ {
291
+ m_logger.log (" Cannot create IGPUShader for %p, Geometry Shader feature not enabled!" ,system::ILogger::ELL_ERROR,creationParams.cpushader );
284
292
return nullptr ;
293
+ }
285
294
break ;
286
295
case IGPUShader::E_SHADER_STAGE::ESS_FRAGMENT: [[fallthrough]];
287
296
case IGPUShader::E_SHADER_STAGE::ESS_COMPUTE:
@@ -298,10 +307,14 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
298
307
case IGPUShader::E_SHADER_STAGE::ESS_INTERSECTION: [[fallthrough]];
299
308
case IGPUShader::E_SHADER_STAGE::ESS_CALLABLE:
300
309
if (!features.rayTracingPipeline )
310
+ {
311
+ m_logger.log (" Cannot create IGPUShader for %p, Raytracing Pipeline feature not enabled!" ,system::ILogger::ELL_ERROR,creationParams.cpushader );
301
312
return nullptr ;
313
+ }
302
314
break ;
303
315
default :
304
316
// Implicit unsupported stages or weird multi-bit stage enum values
317
+ m_logger.log (" Unknown Shader Stage %d" ,system::ILogger::ELL_ERROR,shaderStage);
305
318
return nullptr ;
306
319
break ;
307
320
}
@@ -343,12 +356,18 @@ core::smart_refctd_ptr<IGPUShader> ILogicalDevice::createShader(const SShaderCre
343
356
spirvShader = m_compilerSet->compileToSPIRV (creationParams.cpushader , commonCompileOptions);
344
357
345
358
if (!spirvShader)
359
+ {
360
+ m_logger.log (" SPIR-V Compilation from non SPIR-V shader %p failed." ,system::ILogger::ELL_ERROR,creationParams.cpushader );
346
361
return nullptr ;
362
+ }
347
363
}
348
364
349
365
auto spirv = spirvShader->getContent ();
350
366
if (!spirv)
367
+ {
368
+ m_logger.log (" SPIR-V Compilation from non SPIR-V shader %p failed." ,system::ILogger::ELL_ERROR,creationParams.cpushader );
351
369
return nullptr ;
370
+ }
352
371
353
372
// for debugging
354
373
if constexpr (true )
0 commit comments