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

#include <vksubcontexthandler.h>

Classes

struct  SparseBindSubmission
 
struct  SubmissionList
 
struct  TimelineSubmission
 
struct  TimelineSubmission2
 

Public Member Functions

 VkSubContextHandler ()
 constructor
 
 ~VkSubContextHandler ()
 destructor
 
void Setup (VkDevice dev, const Util::FixedArray< Util::Pair< uint, uint > > indexMap)
 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, Util::Array< CoreGraphics::SubmissionWaitEvent, 8 > waitEvents)
 append submission to context to execute later, supports waiting for a queue
 
uint64 AppendSubmissionTimeline (CoreGraphics::QueueType type, Util::Array< VkCommandBuffer, 16 > cmds, Util::Array< CoreGraphics::SubmissionWaitEvent, 8 > waitEvents)
 append submissions to context to execute later, supports waiting for a queue
 
uint64 GetNextTimelineIndex (CoreGraphics::QueueType type)
 Gets the next submission id for a specific queue.
 
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 FlushSubmissions (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 Member Functions

VkSemaphore GetSemaphore (const CoreGraphics::QueueType type)
 
uint64 GetSemaphoreId (const CoreGraphics::QueueType type)
 
void IncrementSemaphoreId (const CoreGraphics::QueueType type)
 

Private Attributes

VkDevice device
 
Util::FixedArray< Util::Array< VkQueue > > queues
 
Util::FixedArray< uintcurrentQueue
 
Util::FixedArray< Util::Array< VkSemaphore > > semaphores
 
Util::FixedArray< Util::Array< uint64 > > semaphoreSubmissionIds
 
Util::FixedArray< Util::Array< TimelineSubmission2, 16 > > submissions
 
Util::Array< SparseBindSubmissionsparseBindSubmissions
 
Threading::CriticalSection submissionLock
 

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() [1/2]

uint64 Vulkan::VkSubContextHandler::AppendSubmissionTimeline ( CoreGraphics::QueueType type,
Util::Array< VkCommandBuffer, 16 > cmds,
Util::Array< CoreGraphics::SubmissionWaitEvent, 8 > waitEvents )

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

◆ AppendSubmissionTimeline() [2/2]

uint64 Vulkan::VkSubContextHandler::AppendSubmissionTimeline ( CoreGraphics::QueueType type,
VkCommandBuffer cmds,
Util::Array< CoreGraphics::SubmissionWaitEvent, 8 > waitEvents )

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

◆ Discard()

void Vulkan::VkSubContextHandler::Discard ( )

discard

◆ FlushSparseBinds()

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

flush sparse binds

◆ FlushSubmissions()

void Vulkan::VkSubContextHandler::FlushSubmissions ( 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

◆ GetSemaphore()

VkSemaphore Vulkan::VkSubContextHandler::GetSemaphore ( const CoreGraphics::QueueType type)
private

◆ GetSemaphoreId()

uint64 Vulkan::VkSubContextHandler::GetSemaphoreId ( const CoreGraphics::QueueType type)
private

◆ IncrementSemaphoreId()

void Vulkan::VkSubContextHandler::IncrementSemaphoreId ( const CoreGraphics::QueueType type)
private

◆ 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< Util::Pair< uint, uint > > indexMap )

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

◆ currentQueue

Util::FixedArray<uint> Vulkan::VkSubContextHandler::currentQueue
private

◆ device

VkDevice Vulkan::VkSubContextHandler::device
private

◆ queues

Util::FixedArray<Util::Array<VkQueue> > Vulkan::VkSubContextHandler::queues
private

◆ semaphores

Util::FixedArray<Util::Array<VkSemaphore> > Vulkan::VkSubContextHandler::semaphores
private

◆ semaphoreSubmissionIds

Util::FixedArray<Util::Array<uint64> > Vulkan::VkSubContextHandler::semaphoreSubmissionIds
private

◆ sparseBindSubmissions

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

◆ submissionLock

Threading::CriticalSection Vulkan::VkSubContextHandler::submissionLock
private

◆ submissions

Util::FixedArray<Util::Array<TimelineSubmission2, 16> > Vulkan::VkSubContextHandler::submissions
private

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