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;
21 unsigned n_stages = 0;
22 unsigned stage_flags = 0;
23 std::vector<char> creation_info;
24 std::vector<VkDescriptorSetLayout> desc_set_layout_handles;
25 VkPipelineLayout layout_handle = 0;
26 std::string debug_name;
29 VulkanProgram(VulkanProgram &&);
32 bool has_stages() const;
33 void add_glsl_stages(const GlslModule &, const std::map<std::string, int> &);
34 void add_spirv_stages(const SpirVModule &, const std::map<std::string, int> &);
36 void finalize_uniforms();
38 void set_debug_name(const std::string &);
39 void set_vulkan_object_name() const;
42 using ProgramBackend = VulkanProgram;