// ============================================= // Aster: physical_device.h // Copyright (c) 2020-2024 Anish Bhobe // ============================================= #pragma once #include "global.h" #include "window.h" enum class QueueSupportFlagBits { eGraphics = 0b0001, eTransfer = 0b0010, eCompute = 0b0100, ePresent = 0b1000, }; using QueueSupportFlags = vk::Flags{}; struct QueueFamilyInfo { u32 index; u32 count; QueueSupportFlags support; }; struct PhysicalDevice { vk::PhysicalDevice device; vk::PhysicalDeviceProperties properties; vk::PhysicalDeviceFeatures features; std::vector surface_formats; std::vector present_modes; std::vector queue_families; PhysicalDevice(const Window *_window, vk::PhysicalDevice _physical_device); }; class PhysicalDevices : public std::vector { public: PhysicalDevices(const Window *_window, const Context *_context); };