#pragma once #include "VulkanInterface.hpp" #include #include using PhysicalDevicePickPolicy = std::function; using QueuePickPolicy = std::function; bool checkValidationLayerSupport(const std::vector& validationLayers); bool checkDeviceExtensions(VkPhysicalDevice device, const std::vector& deviceExtensions); int findQueueFamilyIndex(VkPhysicalDevice physicalDevice, const QueuePickPolicy& pickPolicy); uint32_t findMemoryType(VkPhysicalDevice physicalDevice, uint32_t typeFilter, VkMemoryPropertyFlags flags); VkInstance createInstance(const char ** instanceExtensions, uint32_t extensionsCount, uint32_t apiVersion = VK_API_VERSION_1_0); VkPhysicalDevice pickPhysicalDevice(VkInstance instance, const PhysicalDevicePickPolicy& pickPolicy);