1 #ifndef VKUTIL_PIPELINE_H_
2 #define VKUTIL_PIPELINE_H_
4 #include <vulkan/vulkan.h>
6 enum VkuVertexBindings {
13 VKU_DS_VIEWPORT = 1 << 0,
14 VKU_DS_SCISSOR = 1 << 1,
18 class VkuPipelineGenerator {
20 VkPipelineShaderStageCreateInfo sdri[2];
21 VkPipelineInputAssemblyStateCreateInfo asmi;
22 VkPipelineViewportStateCreateInfo viewpi;
23 VkPipelineRasterizationStateCreateInfo rasti;
24 VkPipelineMultisampleStateCreateInfo multi;
25 VkPipelineDepthStencilStateCreateInfo depthi;
26 VkPipelineColorBlendStateCreateInfo cblendi;
29 std::vector<VkVertexInputBindingDescription> bind_descriptions;
30 std::vector<VkVertexInputAttributeDescription> attr_descriptions;
33 std::vector<VkDescriptorSetLayout> res_layouts;
34 // std::vector<VkPushConstantRange> push_const_ranges;
37 VkuPipelineGenerator();
38 ~VkuPipelineGenerator();
40 VkPipeline generate(VkuDynState dyn_flags) const;
42 void set_shader_modules(VkShaderModule vs, VkShaderModule fs);
43 void set_attribute(uint32_t binding, uint32_t stride, uint32_t location,
48 #endif // VKUTIL_PIPELINE_H_