engine/src/vulkan/device.h

40 lines
1007 B
C
Raw Normal View History

#pragma once
#include <vector>
2023-03-13 17:35:22 +00:00
#include <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);
2023-03-13 17:35:22 +00:00
}