summaryrefslogtreecommitdiff
path: root/render/vulkan/renderpass.h
blob: 9fbb4173084b2a045ccc41ba211c80f570bfa553 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef VKRENDERPASS_H
#define VKRENDERPASS_H

#include "swapchain.h"
#include "device.h"
#include <rune/util/types.h>
#include <cglm/cglm.h>

enum cmdbuf_state {
        CMDBUF_READY,
        CMDBUF_RECORD,
        CMDBUF_RPASS,
        CMDBUF_ENDREC,
        CMDBUF_SUBMIT
};

struct vkcmdbuffer {
        VkCommandBuffer handle;
        int state;
};

struct vkrendpass {
        VkRenderPass handle;
        vec4 area;
        vec4 color;
        float depth;
        uint32_t stencil;
};

struct vkcmdbuffer* create_vkcmdbuffer(struct vkdev *dev, int primary);
void destroy_vkcmdbuffer(struct vkcmdbuffer *cmdbuffer, struct vkdev *dev);

void cmdbuf_begin(struct vkcmdbuffer *cmdbuffer, int single, int rpass_cont, int sim_use);
void cmdbuf_end(struct vkcmdbuffer *cmdbuffer);

struct vkrendpass* create_vkrendpass(struct vkdev *dev, struct vkswapchain *swapchain, vec4 area, vec4 color, float depth, uint32_t stencil);
void destroy_vkrendpass(struct vkrendpass *rendpass, struct vkdev *dev);

void renderpass_begin(struct vkcmdbuffer *buf, struct vkrendpass *rendpass, VkFramebuffer framebuf);
void renderpass_end(struct vkcmdbuffer *buf, struct vkrendpass *rendpass);

#endif