|
ngscopeclient v0.2.2
|
Allocates and hands out std::shared_ptr<QueueHandle> instances for thread-safe access to Vulkan Queues. More...
#include <QueueManager.h>
Public Types | |
| enum | QueuePoolID { QUEUE_POOL_RENDER , QUEUE_POOL_RASTERIZE , QUEUE_POOL_DRIVER , QUEUE_POOL_FILTER , QUEUE_POOL_TRANSFER , QUEUE_POOL_MISC } |
| List of different queue pools. More... | |
Public Member Functions | |
| QueueManager (vk::raii::PhysicalDevice *phys, std::shared_ptr< vk::raii::Device > device) | |
| std::shared_ptr< QueueHandle > | GetQueueFromPool (QueuePoolID id, std::string name) |
| Get a queue handle for a specific pool, preferring one that has less contention. | |
| QueueManager (QueueManager const &)=delete | |
| QueueManager & | operator= (QueueManager const &)=delete |
Protected Attributes | |
| vk::raii::PhysicalDevice * | m_phys |
| std::shared_ptr< vk::raii::Device > | m_device |
| std::mutex | m_mutex |
| Mutex to guard allocations. | |
| std::vector< std::shared_ptr< QueueInfo > > | m_queues |
| All queues available on the device. | |
| std::map< QueuePoolID, std::vector< std::shared_ptr< QueueInfo > > > | m_pools |
| Queue pools used for allocation. | |
| std::map< QueuePoolID, std::string > | m_poolNames |
Allocates and hands out std::shared_ptr<QueueHandle> instances for thread-safe access to Vulkan Queues.
Each QueueWrapper represents a single Vulkan Queue. Many pointers to a single QueueWrapper, each with its own QueueHandle, may exist at a given time, e.g. if the GPU only provides a single queue of the required type.
List of different queue pools.