Validate shader stages.
325{
326 if (!config.vertex_shader) {
328 "Graphics pipeline requires a vertex shader");
329 return false;
330 }
331
332 if (!config.vertex_shader->is_valid()) {
334 "Vertex shader is not valid");
335 return false;
336 }
337
338 if (config.vertex_shader->get_stage() != vk::ShaderStageFlagBits::eVertex) {
340 "Vertex shader has wrong stage: {}", vk::to_string(config.vertex_shader->get_stage()));
341 return false;
342 }
343
344 if (config.fragment_shader && config.fragment_shader->get_stage() != vk::ShaderStageFlagBits::eFragment) {
346 "Fragment shader has wrong stage: {}", vk::to_string(config.fragment_shader->get_stage()));
347 return false;
348 }
349
350 if (config.geometry_shader && config.geometry_shader->get_stage() != vk::ShaderStageFlagBits::eGeometry) {
352 "Geometry shader has wrong stage");
353 return false;
354 }
355
356 if (config.tess_control_shader && config.tess_control_shader->get_stage() != vk::ShaderStageFlagBits::eTessellationControl) {
358 "Tessellation control shader has wrong stage");
359 return false;
360 }
361
362 if (config.tess_evaluation_shader && config.tess_evaluation_shader->get_stage() != vk::ShaderStageFlagBits::eTessellationEvaluation) {
364 "Tessellation evaluation shader has wrong stage");
365 return false;
366 }
367
368 return true;
369}
#define MF_ERROR(comp, ctx,...)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.