adding the pipeline part of the API
[vktest3] / src / vk.h
index 3322f14..d48634f 100644 (file)
--- a/src/vk.h
+++ b/src/vk.h
@@ -10,13 +10,45 @@ enum {
        VKINIT_RAY              = 0x100
 };
 
+/* queue capability flags for vk_find_qfamily and vk_init_queue */
+enum {
+       VKQ_GFX                 = 1,
+       VKQ_COMPUTE             = 2,
+       VKQ_PRESENT             = 4,
+       VKQ_XFER                = 8
+};
+
+/* shader types */
+enum {
+       VKSDR_VERTEX,
+       VKSDR_PIXEL,
+       VKSDR_TESS_CTL,
+       VKSDR_TESS_EVAL,
+       VKSDR_GEOM
+};
+
+/* primitives */
+enum {
+       VKPRIM_POINTS,
+       VKPRIM_LINES,
+       VKPRIM_TRIANGLES
+};
+
 void vk_init_xwin(Display *dpy, Window win);
+void vk_init_queue(unsigned int qflags, int count);
 
 int vk_init(unsigned int flags, unsigned int *usedflags);
 void vk_cleanup(void);
 
 int vk_reshape(int xsz, int ysz);
 
+int vk_find_qfamily(unsigned int flags);
+VkQueue vk_getq_fam(int fam, int n);
+VkQueue vk_getq(unsigned int flags, int n);
+
+VkCommandBuffer vk_create_cmdbuf_fam(int qfam, int level);
+VkCommandBuffer vk_create_cmdbuf(unsigned int qflags, int level);
+
 int vk_create_rpass(void);
 void vk_free_rpass(int rp);
 void vk_rpass_colorbuf(int rp, int fmt, int n);
@@ -24,5 +56,33 @@ void vk_rpass_msaa(int rp, int nsamp);
 void vk_rpass_clear(int rp, int clear);
 VkRenderPass vk_rpass(int rp);
 
+int vk_create_fb(void);
+void vk_free_fb(int fb);
+void vk_fb_size(int fb, int x, int y);
+void vk_fb_rpass(int fb, int rpass);
+void vk_fb_images(int fb, int n, ...);
+VkFramebuffer vk_fb(int fb);
+
+int vk_create_pipeln(void);
+void vk_free_pipeln(int pp);
+void vk_viewport(int pp, int x, int y, int width, int height);
+void vk_scissor(int pp, int x, int y, int width, int height);
+void vk_pipeln_shader(int pp, int type, VkShaderModule sdr);
+/* TODO: vertex input */
+void vk_pipeln_prim(int pp, int prim);
+void vk_pipeln_polymode(int pp, int mode);
+void vk_pipeln_cull(int pp, int cull);
+void vk_pipeln_frontface(int pp, int ff);
+void vk_pipeln_linewidth(int pp, float w);
+void vk_pipeln_multisample(int pp, int nsamples);
+void vk_pipeln_colormask(int pp, int r, int g, int b);
+void vk_pipeln_depthmask(int pp, int z);
+void vk_pipeln_stencilmask(int pp, int s);
+void vk_pipeln_zbuffer(int pp, int enable);
+void vk_pipeln_stencil(int pp, int enable);
+void vk_pipeln_stencil_op(int pp, int sfail, int zfail, int zpass);
+void vk_pipeln_stencil_func(int pp, int op, unsigned int ref, unsigned int mask);
+void vk_pipeln_blend(int pp, int enable);
+void vk_pipeln_blendfunc(int pp, int src, int dst);
 
 #endif /* VK_H_ */