Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
QueueSubmitBuilder.h
Go to the documentation of this file.
1#pragma once
2
4
5#include <vector>
6#include <vulkan/vulkan_core.h>
7
8namespace EngineCore
9{
10
32{
33public:
40 explicit QueueSubmitBuilder(const TimelineSynchronizer& sync, uint64_t frameNumber);
41
51 PipelineStage stage,
52 VkPipelineStageFlags2 waitStages,
53 uint64_t frameNumber);
54
63 PipelineStage stage,
64 VkPipelineStageFlags2 waitStages);
65
74 PipelineStage stage,
75 VkPipelineStageFlags2 waitStages);
76
87 PipelineStage stage,
88 VkPipelineStageFlags2 waitStages);
89
98 VkSemaphore semaphore,
99 VkPipelineStageFlags2 waitStages);
100
108
115 QueueSubmitBuilder& signalBinary(VkSemaphore semaphore);
116
123 QueueSubmitBuilder& withCommandBuffer(VkCommandBuffer cmdBuffer);
124
131 QueueSubmitBuilder& withCommandBuffers(const std::vector<VkCommandBuffer>& cmdBuffers);
132
140 VkResult submit(VkQueue queue, VkFence fence = VK_NULL_HANDLE);
141
148 [[nodiscard]] uint64_t getLastSignalValue() const { return lastSignalValue_; }
149
150private:
152 uint64_t frameNumber_;
153 uint64_t lastSignalValue_ = 0;
154
155 std::vector<VkSemaphoreSubmitInfo> waitInfos_;
156 std::vector<VkSemaphoreSubmitInfo> signalInfos_;
157 std::vector<VkCommandBufferSubmitInfo> cmdBufferInfos_;
158};
159
160} // namespace EngineCore
const TimelineSynchronizer & sync_
QueueSubmitBuilder & withCommandBuffers(const std::vector< VkCommandBuffer > &cmdBuffers)
Adds multiple command buffers to be executed.
VkResult submit(VkQueue queue, VkFence fence=VK_NULL_HANDLE)
Builds and submits to the specified queue.
QueueSubmitBuilder(const TimelineSynchronizer &sync, uint64_t frameNumber)
Constructs a submit builder.
std::vector< VkCommandBufferSubmitInfo > cmdBufferInfos_
QueueSubmitBuilder & waitForResourceReuse(PipelineStage stage, VkPipelineStageFlags2 waitStages)
Convenience: wait for resource reuse (frames-in-flight pattern)
std::vector< VkSemaphoreSubmitInfo > waitInfos_
QueueSubmitBuilder & withCommandBuffer(VkCommandBuffer cmdBuffer)
Adds a command buffer to be executed.
QueueSubmitBuilder & signalBinary(VkSemaphore semaphore)
Signals a binary semaphore at completion (for present)
std::vector< VkSemaphoreSubmitInfo > signalInfos_
QueueSubmitBuilder & waitForBinary(VkSemaphore semaphore, VkPipelineStageFlags2 waitStages)
Adds a binary semaphore wait (for swapchain acquire, etc.)
uint64_t getLastSignalValue() const
Gets the signal value for the last stage added Useful for debugging or for CPU-side waits.
QueueSubmitBuilder & waitForPrevious(PipelineStage stage, VkPipelineStageFlags2 waitStages)
Convenience: wait for previous frame's stage.
QueueSubmitBuilder & waitFor(PipelineStage stage, VkPipelineStageFlags2 waitStages, uint64_t frameNumber)
Adds a timeline wait for a specific frame's stage (GPU-GPU sync)
QueueSubmitBuilder & signalStage(PipelineStage stage)
Signals the timeline semaphore at a specific stage.
QueueSubmitBuilder & waitForCurrent(PipelineStage stage, VkPipelineStageFlags2 waitStages)
Convenience: wait for same frame's earlier stage.
Centralized timeline semaphore management for the rendering pipeline.
Log category system implementation.
PipelineStage
Extensible pipeline stages for timeline semaphore synchronization.