mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 13:01:19 +00:00
39 lines
1011 B
C++
39 lines
1011 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include <Volk/volk.h>
|
|
|
|
namespace engine {
|
|
|
|
struct DeviceRequirements {
|
|
std::vector<const char*> requiredExtensions;
|
|
VkPhysicalDeviceFeatures requiredFeatures;
|
|
bool sampledImageLinearFilter;
|
|
};
|
|
|
|
struct Device {
|
|
VkDevice device = VK_NULL_HANDLE;
|
|
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;
|
|
VkPhysicalDeviceProperties properties{};
|
|
VkPhysicalDeviceFeatures features{};
|
|
|
|
struct DeviceQueues {
|
|
VkQueue presentQueue = VK_NULL_HANDLE;
|
|
std::vector<VkQueue> drawQueues{};
|
|
std::vector<VkQueue> transferQueues{};
|
|
|
|
uint32_t presentAndDrawQueueFamily = UINT32_MAX;
|
|
uint32_t transferQueueFamily = UINT32_MAX;
|
|
} queues{};
|
|
|
|
struct CommandPools {
|
|
VkCommandPool draw = VK_NULL_HANDLE; // use with the drawQueues
|
|
VkCommandPool transfer = VK_NULL_HANDLE; // use with the transferQueues
|
|
} commandPools{};
|
|
};
|
|
|
|
Device createDevice(VkInstance instance, DeviceRequirements requirements, VkSurfaceKHR surface);
|
|
void destroyDevice(Device device);
|
|
|
|
} |