1
0
Fork 0
Univerxel/src/client/render/vk/shared.hpp

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;
};
}