31 lines
1012 B
C++
31 lines
1012 B
C++
#pragma once
|
|
|
|
#include "forward.hpp"
|
|
#include "../../../core/utils/logger.hpp"
|
|
#include <vector>
|
|
#include <optional>
|
|
|
|
struct GLFWwindow;
|
|
namespace render::vk {
|
|
struct SwapChainSupportDetails {
|
|
VkSurfaceCapabilitiesKHR capabilities;
|
|
std::vector<VkSurfaceFormatKHR> formats;
|
|
std::vector<VkPresentModeKHR> presentModes;
|
|
static SwapChainSupportDetails Query(VkPhysicalDevice, VkSurfaceKHR);
|
|
bool isValid() const { return !formats.empty() && !presentModes.empty(); }
|
|
};
|
|
struct QueueFamilyIndices {
|
|
std::optional<uint32_t> graphicsFamily;
|
|
std::optional<uint32_t> presentFamily;
|
|
static QueueFamilyIndices Query(VkPhysicalDevice, VkSurfaceKHR);
|
|
bool isComplete() const { return graphicsFamily.has_value() && presentFamily.has_value(); }
|
|
};
|
|
struct PhysicalDeviceInfo {
|
|
VkPhysicalDevice device = VK_NULL_HANDLE;
|
|
GLFWwindow *window;
|
|
SwapChainSupportDetails swapDetails;
|
|
QueueFamilyIndices queueIndices;
|
|
VkSurfaceFormatKHR surfaceFormat;
|
|
VkSurfaceKHR surface;
|
|
};
|
|
} |