40 lines
981 B
C++
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);
|
|
}; |