Validate shader stages.
340{
341 if (!config.vertex_shader) {
343 "Graphics pipeline requires a vertex shader");
344 return false;
345 }
346
347 if (!config.vertex_shader->is_valid()) {
349 "Vertex shader is not valid");
350 return false;
351 }
352
353 if (config.vertex_shader->get_stage() != vk::ShaderStageFlagBits::eVertex) {
355 "Vertex shader has wrong stage: {}", vk::to_string(config.vertex_shader->get_stage()));
356 return false;
357 }
358
359 if (config.fragment_shader && config.fragment_shader->get_stage() != vk::ShaderStageFlagBits::eFragment) {
361 "Fragment shader has wrong stage: {}", vk::to_string(config.fragment_shader->get_stage()));
362 return false;
363 }
364
365 if (config.geometry_shader && config.geometry_shader->get_stage() != vk::ShaderStageFlagBits::eGeometry) {
367 "Geometry shader has wrong stage");
368 return false;
369 }
370
371 if (config.tess_control_shader && config.tess_control_shader->get_stage() != vk::ShaderStageFlagBits::eTessellationControl) {
373 "Tessellation control shader has wrong stage");
374 return false;
375 }
376
377 if (config.tess_evaluation_shader && config.tess_evaluation_shader->get_stage() != vk::ShaderStageFlagBits::eTessellationEvaluation) {
379 "Tessellation evaluation shader has wrong stage");
380 return false;
381 }
382
383 return true;
384}
#define MF_ERROR(comp, ctx,...)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.