--- /dev/null
+#ifndef VKUTIL_PIPELINE_H_
+#define VKUTIL_PIPELINE_H_
+
+#include <vulkan/vulkan.h>
+
+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_