1 #ifndef MSP_GL_PROGRAM_BACKEND_H_
2 #define MSP_GL_PROGRAM_BACKEND_H_
7 #include <msp/core/noncopyable.h>
8 #include "reflectdata.h"
15 class VulkanProgram: public NonCopyable
17 friend class VulkanPipelineState;
24 unsigned n_stages = 0;
25 unsigned stage_flags = 0;
26 std::vector<char> creation_info;
27 std::vector<VkDescriptorSetLayout> desc_set_layout_handles;
28 VkPipelineLayout layout_handle = 0;
31 VulkanProgram(VulkanProgram &&);
34 bool has_stages() const;
35 void add_glsl_stages(const GlslModule &, const std::map<std::string, int> &, TransientData &);
36 void add_spirv_stages(const SpirVModule &, const std::map<std::string, int> &);
38 void finalize(const Module &, TransientData &) { }
39 void finalize_uniforms();
41 void set_debug_name(const std::string &) { }
44 using ProgramBackend = VulkanProgram;