aboutsummaryrefslogtreecommitdiff
path: root/include/render/vulkan.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/render/vulkan.h')
-rw-r--r--include/render/vulkan.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/include/render/vulkan.h b/include/render/vulkan.h
index a22d224f..d0a2ad85 100644
--- a/include/render/vulkan.h
+++ b/include/render/vulkan.h
@@ -45,6 +45,7 @@ struct wlr_vk_device {
struct {
PFN_vkGetMemoryFdPropertiesKHR getMemoryFdPropertiesKHR;
PFN_vkWaitSemaphoresKHR waitSemaphoresKHR;
+ PFN_vkGetSemaphoreCounterValueKHR getSemaphoreCounterValueKHR;
} api;
uint32_t format_prop_count;
@@ -136,6 +137,14 @@ struct wlr_vk_render_buffer {
bool transitioned;
};
+struct wlr_vk_command_buffer {
+ VkCommandBuffer vk;
+ bool recording;
+ uint64_t timeline_point;
+};
+
+#define VULKAN_COMMAND_BUFFERS_CAP 64
+
// Vulkan wlr_renderer implementation on top of a wlr_vk_device.
struct wlr_vk_renderer {
struct wlr_renderer wlr_renderer;
@@ -156,13 +165,13 @@ struct wlr_vk_renderer {
uint64_t timeline_point;
struct wlr_vk_render_buffer *current_render_buffer;
+ struct wlr_vk_command_buffer *current_command_buffer;
// current frame id. Used in wlr_vk_texture.last_used
// Increased every time a frame is ended for the renderer
uint32_t frame;
VkRect2D scissor; // needed for clearing
- VkCommandBuffer cb;
VkPipeline bound_pipe;
uint32_t render_width;
@@ -181,6 +190,9 @@ struct wlr_vk_renderer {
struct wl_list render_buffers; // wlr_vk_render_buffer.link
+ // Pool of command buffers
+ struct wlr_vk_command_buffer command_buffers[VULKAN_COMMAND_BUFFERS_CAP];
+
struct {
VkCommandBuffer cb;
bool recording;