project-aster/aster/physical_device.h

40 lines
981 B
C++

// =============================================
// 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<QueueSupportFlagBits>;
struct QueueFamilyInfo {
u32 index;
u32 count;
QueueSupportFlags support;
};
struct PhysicalDevice {
vk::PhysicalDevice device;
vk::PhysicalDeviceProperties properties;
vk::PhysicalDeviceFeatures features;
std::vector<vk::SurfaceFormatKHR> surface_formats;
std::vector<vk::PresentModeKHR> present_modes;
std::vector<QueueFamilyInfo> queue_families;
PhysicalDevice(const Window *_window, vk::PhysicalDevice _physical_device);
};
class PhysicalDevices : public std::vector<PhysicalDevice> {
public:
PhysicalDevices(const Window *_window, const Context *_context);
};