vulkan_test2

view src/vkpipe.h @ 12:e17abe477616

pipeline madness
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 23 Jun 2018 07:47:49 +0300
parents src/vksdr.h@633b522539a1
children d34f84bede17
line source
1 #ifndef VKPIPE_H_
2 #define VKPIPE_H_
4 #include <vulkan/vulkan.h>
6 #define VKU_MAX_SDR_STAGES 8
8 struct vku_pstate {
9 VkPipelineShaderStageCreateInfo sdrstage[VKU_MAX_SDR_STAGES];
10 int num_sdr_stages;
11 VkPipelineVertexInputStateCreateInfo vertinp;
12 VkPipelineInputAssemblyStateCreateInfo inpasm;
13 VkPipelineViewportStateCreateInfo vport;
14 VkPipelineRasterizationStateCreateInfo rast;
15 VkPipelineMultisampleStateCreateInfo msaa;
16 VkPipelineDepthStencilStateCreateInfo zstencil;
17 VkPipelineColorBlendStateCreateInfo blend;
18 /*VkPipelineDynamicStateCreateInfo dyn;*/
19 VkPipelineLayoutCreateInfo layout;
21 /* data needed by the structs above */
22 VkViewport vport_data;
23 VkRect2D scissor_data;
24 VkPipelineColorBlendAttachmentState atblend;
25 };
27 int vku_init_pstate(struct vku_pstate *st);
28 void vku_pstate_shader(struct vku_pstate *st, VkShaderModule sdr, VkShaderStageFlagBits type);
29 void vku_pstate_primitive(struct vku_pstate *st, VkPrimitiveTopology prim);
30 void vku_pstate_viewport(struct vku_pstate *st, int x, int y, int w, int h);
31 void vku_pstate_scissor(struct vku_pstate *st, int x, int y, int w, int h);
32 void vku_pstate_polygon_mode(struct vku_pstate *st, VkPolygonMode pmode);
33 void vku_pstate_line_width(struct vku_pstate *st, float w);
34 void vku_pstate_cull_mode(struct vku_pstate *st, VkCullModeFlagBits cull);
35 void vku_pstate_front_face(struct vku_pstate *st, VkFrontFace front);
36 void vku_pstate_depth_bias(struct vku_pstate *st, float fslope, float fconst, float clamp);
37 void vku_pstate_depth_test(struct vku_pstate *st, int enable);
38 void vku_pstate_depth_func(struct vku_pstate *st, VkCompareOp op);
39 void vku_pstate_depth_mask(struct vku_pstate *st, int zmask);
40 void vku_pstate_stencil_test(struct vku_pstate *st, int enable);
41 void vku_pstate_stencil_func(struct vku_pstate *st, VkCompareOp op, int ref, unsigned int mask);
42 void vku_pstate_stencil_op(struct vku_pstate *st, VkStencilOp sfail, VkStencilOp dfail, VkStencilOp pass);
43 void vku_pstate_stencil_mask(struct vku_pstate *st, unsigned int smask);
44 void vku_pstate_color_mask(struct vku_pstate *st, int rmask, int gmask, int bmask, int amask);
45 void vku_pstate_blend_enable(struct vku_pstate *st, int enable);
46 void vku_pstate_blend_func(struct vku_pstate *st, VkBlendFactor src, VkBlendFactor dst);
48 VkPipeline vku_create_pipeline(struct vku_pstate *st);
50 VkShaderModule vku_load_shader(const char *fname);
51 void vku_destroy_shader(VkShaderModule sdr);
53 #endif /* VKPIPE_H_ */