backup
[demo] / src / vulkan / vkutil-pipeline.h
1 #ifndef VKUTIL_PIPELINE_H_
2 #define VKUTIL_PIPELINE_H_
3
4 #include <vulkan/vulkan.h>
5
6 enum VkuDynState {
7         VKU_DS_VIEWPORT = 1 << 0,
8         VKU_DS_SCISSOR  = 1 << 1,
9         VKU_DS_BLEND    = 1 << 2
10 };
11
12 class VkuPipelineGenerator {
13 private:
14         VkPipelineShaderStageCreateInfo sdri[2];
15         VkPipelineVertexInputStateCreateInfo verti;
16         VkPipelineInputAssemblyStateCreateInfo asmi;
17         VkPipelineViewportStateCreateInfo viewpi;
18         VkPipelineRasterizationStateCreateInfo rasti;
19         VkPipelineMultisampleStateCreateInfo multi;
20         VkPipelineDepthStencilStateCreateInfo depthi;
21         VkPipelineColorBlendStateCreateInfo cblendi;
22
23         VkPipelineLayout layout;
24
25 public:
26         VkuPipelineGenerator();
27         ~VkuPipelineGenerator();
28
29         VkPipeline generate(VkuDynState dyn_flags) const;
30
31         void set_shader_modules(VkShaderModule vs, VkShaderModule fs);
32
33         // TODO
34         void set_vertex_attributes();
35         void set_blend_state();
36         void set_layout();
37 };
38
39 #endif // VKUTIL_PIPELINE_H_