X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fvulkan%2Fvkutil-pipeline.h;fp=src%2Fvulkan%2Fvkutil-pipeline.h;h=4dac9af8ab6aaa292ae92a2cdaf542164c7c2fcd;hp=0000000000000000000000000000000000000000;hb=dbce2a319517c09fcf1a9be60ae46a0ff20c423e;hpb=86c912d603be75ac8b2fdb2229f1696e9c0c01d9 diff --git a/src/vulkan/vkutil-pipeline.h b/src/vulkan/vkutil-pipeline.h new file mode 100644 index 0000000..4dac9af --- /dev/null +++ b/src/vulkan/vkutil-pipeline.h @@ -0,0 +1,39 @@ +#ifndef VKUTIL_PIPELINE_H_ +#define VKUTIL_PIPELINE_H_ + +#include + +enum VkuDynState { + VKU_DS_VIEWPORT = 1 << 0, + VKU_DS_SCISSOR = 1 << 1, + VKU_DS_BLEND = 1 << 2 +}; + +class VkuPipelineGenerator { +private: + VkPipelineShaderStageCreateInfo sdri[2]; + VkPipelineVertexInputStateCreateInfo verti; + VkPipelineInputAssemblyStateCreateInfo asmi; + VkPipelineViewportStateCreateInfo viewpi; + VkPipelineRasterizationStateCreateInfo rasti; + VkPipelineMultisampleStateCreateInfo multi; + VkPipelineDepthStencilStateCreateInfo depthi; + VkPipelineColorBlendStateCreateInfo cblendi; + + VkPipelineLayout layout; + +public: + VkuPipelineGenerator(); + ~VkuPipelineGenerator(); + + VkPipeline generate(VkuDynState dyn_flags) const; + + void set_shader_modules(VkShaderModule vs, VkShaderModule fs); + + // TODO + void set_vertex_attributes(); + void set_blend_state(); + void set_layout(); +}; + +#endif // VKUTIL_PIPELINE_H_