Created a paper-thin wrapper around a VkQueue mainly so it manages its own lifecycle so long as its associated device is alive

This commit is contained in:
2025-07-07 22:50:12 +10:00
parent 42c45bbeb2
commit a0ef896d1e
2 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
#pragma once
#include "basalt_window.h"
namespace basalt
{
class Device;
typedef u16 QueueFlag;
typedef enum QueueFlags
{
QUEUE_FLAG_SUPPORTS_GRAPHICS = 1,
QUEUE_FLAG_SUPPORTS_PRESENT = 2,
QUEUE_FLAG_SUPPORTS_COMPUTE = 4,
QUEUE_FLAG_SUPPORTS_TRANSFER = 8
} QueueFlags;
class Queue
{
public:
Queue(const Queue&) = default;
Queue& operator =(const Queue&) = default;
Queue(Queue&&) = default;
Queue& operator =(Queue&&) = default;
Queue(basalt::Device& dev, VkQueue queue, u32 family_index, VkSurfaceKHR surface=VK_NULL_HANDLE);
basalt::Device* device;
VkQueue queue;
QueueFlag flags;
};
}