X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fvulkan%2Fvkutil-pipeline.h;h=281d489e60fe9031dd5ab5e80c5e4588e0425e01;hb=1d424e50420a5b04aadb5abac2c02f4e7b797618;hp=4dac9af8ab6aaa292ae92a2cdaf542164c7c2fcd;hpb=dbce2a319517c09fcf1a9be60ae46a0ff20c423e;p=demo diff --git a/src/vulkan/vkutil-pipeline.h b/src/vulkan/vkutil-pipeline.h index 4dac9af..281d489 100644 --- a/src/vulkan/vkutil-pipeline.h +++ b/src/vulkan/vkutil-pipeline.h @@ -2,6 +2,13 @@ #define VKUTIL_PIPELINE_H_ #include +#include + +enum VkuVertexBindings { + VKU_BIND_VERTEX, + VKU_BIND_NORMAL, + VKU_BIND_TEX_COORD +}; enum VkuDynState { VKU_DS_VIEWPORT = 1 << 0, @@ -12,7 +19,6 @@ enum VkuDynState { class VkuPipelineGenerator { private: VkPipelineShaderStageCreateInfo sdri[2]; - VkPipelineVertexInputStateCreateInfo verti; VkPipelineInputAssemblyStateCreateInfo asmi; VkPipelineViewportStateCreateInfo viewpi; VkPipelineRasterizationStateCreateInfo rasti; @@ -20,20 +26,26 @@ private: VkPipelineDepthStencilStateCreateInfo depthi; VkPipelineColorBlendStateCreateInfo cblendi; + /* attributes */ + std::vector bind_descriptions; + std::vector attr_descriptions; + + /* resources */ + std::vector res_layouts; +// std::vector push_const_ranges; + VkPipelineLayout layout; public: VkuPipelineGenerator(); ~VkuPipelineGenerator(); - VkPipeline generate(VkuDynState dyn_flags) const; + VkPipeline generate(VkuDynState dyn_flags); void set_shader_modules(VkShaderModule vs, VkShaderModule fs); - - // TODO - void set_vertex_attributes(); - void set_blend_state(); - void set_layout(); + void set_attribute(uint32_t binding, uint32_t stride, uint32_t location, + VkFormat format); + void set_resources_layout(VkDescriptorSetLayout layout); }; #endif // VKUTIL_PIPELINE_H_