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=9f8a2666daed72232a286aed5d9520182ec0cf50;hp=4dac9af8ab6aaa292ae92a2cdaf542164c7c2fcd;hb=75b8713addd14a845e2fa8ad9a9d3d4a6a323bec;hpb=dbce2a319517c09fcf1a9be60ae46a0ff20c423e diff --git a/src/vulkan/vkutil-pipeline.h b/src/vulkan/vkutil-pipeline.h index 4dac9af..9f8a266 100644 --- a/src/vulkan/vkutil-pipeline.h +++ b/src/vulkan/vkutil-pipeline.h @@ -3,6 +3,16 @@ #include +#define VERTEX_ATTRIB_BIT (1 << VKU_BIND_VERTEX) +#define NORMAL_ATTRIB_BIT (1 << VKU_BIND_NORMAL) +#define TEX_COORD_ATTRIB_BIT (1 << VKU_BIND_TEX_COORD) + +enum VkuVertexBindings { + VKU_BIND_VERTEX, + VKU_BIND_NORMAL, + VKU_BIND_TEX_COORD +}; + enum VkuDynState { VKU_DS_VIEWPORT = 1 << 0, VKU_DS_SCISSOR = 1 << 1, @@ -12,7 +22,6 @@ enum VkuDynState { class VkuPipelineGenerator { private: VkPipelineShaderStageCreateInfo sdri[2]; - VkPipelineVertexInputStateCreateInfo verti; VkPipelineInputAssemblyStateCreateInfo asmi; VkPipelineViewportStateCreateInfo viewpi; VkPipelineRasterizationStateCreateInfo rasti; @@ -20,7 +29,13 @@ private: VkPipelineDepthStencilStateCreateInfo depthi; VkPipelineColorBlendStateCreateInfo cblendi; - VkPipelineLayout layout; + /* attributes */ + std::vector bind_descriptions; + std::vector attr_descriptions; + + /* uniforms */ + std::vector dset_layouts; + std::vector push_const_ranges; public: VkuPipelineGenerator(); @@ -29,11 +44,11 @@ public: VkPipeline generate(VkuDynState dyn_flags) const; void set_shader_modules(VkShaderModule vs, VkShaderModule fs); + void set_attribute(uint32_t binding, uint32_t stride, uint32_t location, + VkFormat format); + void set_descriptor_set_layout(const vku_descriptor &desc); - // TODO - void set_vertex_attributes(); - void set_blend_state(); - void set_layout(); + void set_push_constant(); //TODO }; #endif // VKUTIL_PIPELINE_H_