18#ifndef INCLUDED_RENDERER_BACKEND_VULKAN_RINGCOMMANDCONTEXT
19#define INCLUDED_RENDERER_BACKEND_VULKAN_RINGCOMMANDCONTEXT
23#include <glad/vulkan.h>
79 const void* data,
const size_t dataSize,
83 const void* data,
const size_t dataSize,
A simple helper class to decouple command buffers rotation from frames presenting.
Definition: RingCommandContext.h:48
uint32_t m_MaxStagingBufferCapacity
Definition: RingCommandContext.h:116
std::vector< RingItem > m_Ring
Definition: RingCommandContext.h:126
size_t m_RingIndex
Definition: RingCommandContext.h:127
std::unique_ptr< CBuffer > m_StagingBuffer
Definition: RingCommandContext.h:113
CRingCommandContext(CDevice *device, const size_t size, const uint32_t queueFamilyIndex, CSubmitScheduler &submitScheduler)
Definition: RingCommandContext.cpp:52
~CRingCommandContext()
Definition: RingCommandContext.cpp:91
uint32_t GetFreeSpaceOffset(const uint32_t requiredSize, const uint32_t requiredAlignment) const
Definition: RingCommandContext.cpp:410
CSubmitScheduler & m_SubmitScheduler
Definition: RingCommandContext.h:111
void FlushAndWait()
The same as Flush but also waits until it's completed.
Definition: RingCommandContext.cpp:125
void ScheduleUpload(CTexture *texture, const Format dataFormat, const void *data, const size_t dataSize, const uint32_t level, const uint32_t layer)
Schedules uploads until next render pass or flush.
Definition: RingCommandContext.cpp:136
uint32_t m_OptimalBufferCopyOffsetAlignment
Definition: RingCommandContext.h:115
VkCommandBuffer GetCommandBuffer()
Definition: RingCommandContext.cpp:104
CDevice * m_Device
Definition: RingCommandContext.h:110
void Flush()
Submits the current command buffer to the SubmitScheduler.
Definition: RingCommandContext.cpp:112
uint32_t m_StagingBufferCurrentFirst
Definition: RingCommandContext.h:114
void End()
Definition: RingCommandContext.cpp:321
uint32_t m_StagingBufferLast
Definition: RingCommandContext.h:114
void WaitUntilFree(RingItem &item)
Definition: RingCommandContext.cpp:331
std::function< void(u8 *)> UploadBufferFunction
Definition: RingCommandContext.h:91
void Begin()
Definition: RingCommandContext.cpp:303
uint32_t AcquireFreeSpace(const uint32_t requiredSize, const uint32_t requiredAlignment)
Definition: RingCommandContext.cpp:342
uint32_t m_StagingBufferFirst
Definition: RingCommandContext.h:114
A helper class to batch VkQueueSubmit calls and track VkCommandBuffer usages properly.
Definition: SubmitScheduler.h:47
static constexpr SubmitHandle INVALID_SUBMIT_HANDLE
Definition: SubmitScheduler.h:50
uint32_t SubmitHandle
Definition: SubmitScheduler.h:49
Format
Definition: Format.h:28
Backend
Definition: Backend.h:28
Definition: VideoMode.h:29
Definition: RingCommandContext.h:119
VkCommandPool commandPool
Definition: RingCommandContext.h:120
VkCommandBuffer commandBuffer
Definition: RingCommandContext.h:121
uint32_t stagingBufferLast
Definition: RingCommandContext.h:124
bool isBegan
Definition: RingCommandContext.h:123
CSubmitScheduler::SubmitHandle handle
Definition: RingCommandContext.h:122
uint32_t stagingBufferFirst
Definition: RingCommandContext.h:124
uint8_t u8
Definition: types.h:37
unsigned int uint32_t
Definition: wposix_types.h:53