2022-08-31 23:04:17 +00:00
|
|
|
#pragma once
|
|
|
|
|
2022-09-01 00:16:30 +00:00
|
|
|
#include "vulkaninstance.h"
|
2022-08-31 23:04:17 +00:00
|
|
|
|
|
|
|
class VulkanSurface;
|
|
|
|
|
|
|
|
class VulkanCompatibleDevice
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
VulkanPhysicalDevice* Device = nullptr;
|
|
|
|
|
|
|
|
int GraphicsFamily = -1;
|
|
|
|
int PresentFamily = -1;
|
|
|
|
|
|
|
|
bool GraphicsTimeQueries = false;
|
|
|
|
|
|
|
|
std::vector<std::string> EnabledDeviceExtensions;
|
|
|
|
VulkanDeviceFeatures EnabledFeatures;
|
|
|
|
|
|
|
|
static std::vector<VulkanCompatibleDevice> FindDevices(const std::shared_ptr<VulkanInstance>& instance, const std::shared_ptr<VulkanSurface>& surface);
|
|
|
|
static VulkanCompatibleDevice SelectDevice(const std::shared_ptr<VulkanInstance>& instance, const std::shared_ptr<VulkanSurface>& surface, int vk_device);
|
|
|
|
};
|