Nebula
Loading...
Searching...
No Matches
Vulkan::VkSubContextHandler Class Reference

#include <vksubcontexthandler.h>

Classes

struct  SparseBindSubmission
 
struct  TimelineSubmission
 

Public Member Functions

 VkSubContextHandler ()
 constructor
 
 ~VkSubContextHandler ()
 destructor
 
void Setup (VkDevice dev, const Util::FixedArray< uint > indexMap, const Util::FixedArray< uint > families)
 setup subcontext handler
 
void Discard ()
 discard
 
void SetToNextContext (const CoreGraphics::QueueType type)
 set to next context of type
 
uint64 AppendSubmissionTimeline (CoreGraphics::QueueType type, VkCommandBuffer cmds)
 append submission to context to execute later, supports waiting for a queue
 
uint64 GetNextTimelineIndex (CoreGraphics::QueueType type)
 Gets the next submission id for a specific queue.
 
void AppendWaitTimeline (uint64 index, CoreGraphics::QueueType type, VkPipelineStageFlags waitFlags, CoreGraphics::QueueType waitType)
 Append a wait for a submission timeline index.
 
uint64 AppendSparseBind (CoreGraphics::QueueType type, const VkImage img, const Util::Array< VkSparseMemoryBind > &opaqueBinds, const Util::Array< VkSparseImageMemoryBind > &pageBinds)
 append a sparse image bind timeline operation
 
uint64 AppendSparseBind (CoreGraphics::QueueType type, const VkBuffer buf, const Util::Array< VkSparseMemoryBind > &binds)
 append a sparse buffer bind timeline operation
 
void AppendPresentSignal (CoreGraphics::QueueType type, VkSemaphore sem)
 Append present signal.
 
void FlushSubmissionsTimeline (CoreGraphics::QueueType type, VkFence fence)
 flush submissions
 
void Wait (CoreGraphics::QueueType type, uint64 index)
 wait for timeline index
 
bool Poll (CoreGraphics::QueueType type, uint64_t index)
 check to see if timeline index has passed
 
void FlushSparseBinds (VkFence fence)
 flush sparse binds
 
void InsertFence (CoreGraphics::QueueType type, VkFence fence)
 insert fence
 
void WaitIdle (const CoreGraphics::QueueType type)
 wait for a queue to finish working
 
VkQueue GetQueue (const CoreGraphics::QueueType type)
 get current queue
 

Private Attributes

VkDevice device
 
Util::FixedArray< VkQueue > drawQueues
 
Util::FixedArray< VkQueue > computeQueues
 
Util::FixedArray< VkQueue > transferQueues
 
Util::FixedArray< VkQueue > sparseQueues
 
uint currentDrawQueue
 
uint currentComputeQueue
 
uint currentTransferQueue
 
uint currentSparseQueue
 
uint queueFamilies [CoreGraphics::NumQueueTypes]
 
VkSemaphore semaphores [CoreGraphics::NumQueueTypes]
 
uint64 semaphoreSubmissionIds [CoreGraphics::NumQueueTypes]
 
Util::FixedArray< Util::Array< TimelineSubmission > > timelineSubmissions
 
Util::Array< SparseBindSubmissionsparseBindSubmissions
 

Friends

const VkQueue GetQueue (const CoreGraphics::QueueType type, const IndexT index)
 get queue from index and family
 

Constructor & Destructor Documentation

◆ VkSubContextHandler()

Vulkan::VkSubContextHandler::VkSubContextHandler ( )

constructor

◆ ~VkSubContextHandler()

Vulkan::VkSubContextHandler::~VkSubContextHandler ( )

destructor

Member Function Documentation

◆ AppendPresentSignal()

void Vulkan::VkSubContextHandler::AppendPresentSignal ( CoreGraphics::QueueType type,
VkSemaphore sem )

Append present signal.

◆ AppendSparseBind() [1/2]

uint64 Vulkan::VkSubContextHandler::AppendSparseBind ( CoreGraphics::QueueType type,
const VkBuffer buf,
const Util::Array< VkSparseMemoryBind > & binds )

append a sparse buffer bind timeline operation

◆ AppendSparseBind() [2/2]

uint64_t Vulkan::VkSubContextHandler::AppendSparseBind ( CoreGraphics::QueueType type,
const VkImage img,
const Util::Array< VkSparseMemoryBind > & opaqueBinds,
const Util::Array< VkSparseImageMemoryBind > & pageBinds )

append a sparse image bind timeline operation

◆ AppendSubmissionTimeline()

uint64 Vulkan::VkSubContextHandler::AppendSubmissionTimeline ( CoreGraphics::QueueType type,
VkCommandBuffer cmds )

append submission to context to execute later, supports waiting for a queue

◆ AppendWaitTimeline()

void Vulkan::VkSubContextHandler::AppendWaitTimeline ( uint64 index,
CoreGraphics::QueueType type,
VkPipelineStageFlags waitFlags,
CoreGraphics::QueueType waitType )

Append a wait for a submission timeline index.

◆ Discard()

void Vulkan::VkSubContextHandler::Discard ( )

discard

◆ FlushSparseBinds()

void Vulkan::VkSubContextHandler::FlushSparseBinds ( VkFence fence)

flush sparse binds

◆ FlushSubmissionsTimeline()

void Vulkan::VkSubContextHandler::FlushSubmissionsTimeline ( CoreGraphics::QueueType type,
VkFence fence )

flush submissions

◆ GetNextTimelineIndex()

uint64 Vulkan::VkSubContextHandler::GetNextTimelineIndex ( CoreGraphics::QueueType type)

Gets the next submission id for a specific queue.

◆ GetQueue()

VkQueue Vulkan::VkSubContextHandler::GetQueue ( const CoreGraphics::QueueType type)

get current queue

◆ InsertFence()

void Vulkan::VkSubContextHandler::InsertFence ( CoreGraphics::QueueType type,
VkFence fence )

insert fence

◆ Poll()

bool Vulkan::VkSubContextHandler::Poll ( CoreGraphics::QueueType type,
uint64_t index )

check to see if timeline index has passed

◆ SetToNextContext()

void Vulkan::VkSubContextHandler::SetToNextContext ( const CoreGraphics::QueueType type)

set to next context of type

◆ Setup()

void Vulkan::VkSubContextHandler::Setup ( VkDevice dev,
const Util::FixedArray< uint > indexMap,
const Util::FixedArray< uint > families )

setup subcontext handler

◆ Wait()

void Vulkan::VkSubContextHandler::Wait ( CoreGraphics::QueueType type,
uint64 index )

wait for timeline index

◆ WaitIdle()

void Vulkan::VkSubContextHandler::WaitIdle ( const CoreGraphics::QueueType type)

wait for a queue to finish working

Friends And Related Symbol Documentation

◆ GetQueue

const VkQueue GetQueue ( const CoreGraphics::QueueType type,
const IndexT index )
friend

get queue from index and family

Member Data Documentation

◆ computeQueues

Util::FixedArray<VkQueue> Vulkan::VkSubContextHandler::computeQueues
private

◆ currentComputeQueue

uint Vulkan::VkSubContextHandler::currentComputeQueue
private

◆ currentDrawQueue

uint Vulkan::VkSubContextHandler::currentDrawQueue
private

◆ currentSparseQueue

uint Vulkan::VkSubContextHandler::currentSparseQueue
private

◆ currentTransferQueue

uint Vulkan::VkSubContextHandler::currentTransferQueue
private

◆ device

VkDevice Vulkan::VkSubContextHandler::device
private

◆ drawQueues

Util::FixedArray<VkQueue> Vulkan::VkSubContextHandler::drawQueues
private

◆ queueFamilies

uint Vulkan::VkSubContextHandler::queueFamilies[CoreGraphics::NumQueueTypes]
private

◆ semaphores

VkSemaphore Vulkan::VkSubContextHandler::semaphores[CoreGraphics::NumQueueTypes]
private

◆ semaphoreSubmissionIds

uint64 Vulkan::VkSubContextHandler::semaphoreSubmissionIds[CoreGraphics::NumQueueTypes]
private

◆ sparseBindSubmissions

Util::Array<SparseBindSubmission> Vulkan::VkSubContextHandler::sparseBindSubmissions
private

◆ sparseQueues

Util::FixedArray<VkQueue> Vulkan::VkSubContextHandler::sparseQueues
private

◆ timelineSubmissions

Util::FixedArray<Util::Array<TimelineSubmission> > Vulkan::VkSubContextHandler::timelineSubmissions
private

◆ transferQueues

Util::FixedArray<VkQueue> Vulkan::VkSubContextHandler::transferQueues
private

The documentation for this class was generated from the following files: