backup
[demo] / src / vulkan / vkutil-pipeline.h
diff --git a/src/vulkan/vkutil-pipeline.h b/src/vulkan/vkutil-pipeline.h
new file mode 100644 (file)
index 0000000..4dac9af
--- /dev/null
@@ -0,0 +1,39 @@
+#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_