// ============================================= // Aster: physical_device.h // Copyright (c) 2020-2024 Anish Bhobe // ============================================= #pragma once #include "global.h" #include struct Window; struct Context; enum class QueueSupportFlagBits { eGraphics = 0b0001, eTransfer = 0b0010, eCompute = 0b0100, ePresent = 0b1000, }; using QueueSupportFlags = vk::Flags; struct QueueFamilyInfo { u32 m_Index; u32 m_Count; QueueSupportFlags m_Support; }; struct PhysicalDevice { vk::PhysicalDevice m_PhysicalDevice; vk::PhysicalDeviceProperties m_DeviceProperties; vk::PhysicalDeviceFeatures m_DeviceFeatures; eastl::vector m_SurfaceFormats; eastl::vector m_PresentModes; eastl::vector m_QueueFamilies; PhysicalDevice(vk::SurfaceKHR surface, vk::PhysicalDevice physicalDevice); }; class PhysicalDevices : public eastl::fixed_vector { public: PhysicalDevices(const Window *window, const Context *context); };