40#include <vulkan/vulkan.hpp>
41static_assert(VK_HEADER_VERSION > 100);
61 std::runtime_error{
msg } { }
73 return !(*
this == other);
94std::string
concat(
size_t expected_result_size, std::array<std::string, count>
const &strings){
96 result.reserve(expected_result_size);
98 for(
auto const &sv: strings){
105 auto f =
static_cast<VkFormat
>(format);
106 return VK_FORMAT_G8B8G8R8_422_UNORM <= f && f <= VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM;
109using namespace std::literals;
118 vk::ImageViewCreateInfo image_view_info{ {}, {}, vk::ImageViewType::e2D, format };
119 image_view_info.subresourceRange.aspectMask = vk::ImageAspectFlagBits::eColor;
120 image_view_info.subresourceRange.levelCount = 1;
121 image_view_info.subresourceRange.layerCount = 1;
122 return image_view_info;
149 vk::PresentModeKHR
mode = vk::PresentModeKHR::eFifo;
176 device.destroy(image.view);
177 image.view =
nullptr;
183 device.destroy(image.framebuffer);
184 image.framebuffer =
nullptr;
219 std::cout <<
msg << std::endl;
248 void init(std::vector<const char*>& required_extensions,
bool enable_validation, std::function<
void(
LogLevel, std::string_view)> logging_function =
cout_msg);
VulkanInstance(const VulkanInstance &other)=delete
friend void vulkan_display_detail::VulkanContext::init(VulkanInstance &&, vk::SurfaceKHR, vulkan_display::WindowParameters, uint32_t, vk::PresentModeKHR)
VulkanInstance(VulkanInstance &&other)=delete
VulkanInstance & operator=(const VulkanInstance &other)=delete
vk::Instance & get_instance()
void get_available_gpus(std::vector< std::pair< std::string, bool > > &gpus)
returns all available grafhics cards first parameter is gpu name, second parameter is true only if th...
vk::DebugUtilsMessengerEXT messenger
std::unique_ptr< vk::DispatchLoaderDynamic > dynamic_dispatcher
void init_validation_layers_error_messenger()
VulkanInstance & operator=(VulkanInstance &&other)=delete
void create_logical_device()
vk::Format get_swapchain_image_format()
vk::Framebuffer get_framebuffer(uint32_t framebuffer_id)
void create_swap_chain(vk::SwapchainKHR &&old_swap_chain=vk::SwapchainKHR{})
struct vulkan_display_detail::VulkanContext::@94 swapchain_atributes
void recreate_swapchain(vulkan_display::WindowParameters parameters, vk::RenderPass render_pass)
bool is_yCbCr_supported() const
vk::DebugUtilsMessengerEXT messenger
vk::SwapchainKHR swapchain
uint32_t get_queue_family_index()
std::vector< SwapchainImage > swapchain_images
std::unique_ptr< vk::DispatchLoaderDynamic > dynamic_dispatcher
void destroy_framebuffers()
vk::PresentModeKHR preferred_present_mode
uint32_t get_vulkan_version() const
uint32_t acquire_next_swapchain_image(vk::Semaphore acquire_semaphore) const
vk::SwapchainKHR get_swapchain()
void destroy_swapchain_views()
vk::SurfaceFormatKHR format
vulkan_display::WindowParameters get_window_parameters() const
size_t get_swapchain_image_count()
vk::Extent2D get_render_area_size()
uint32_t queue_family_index
void create_framebuffers(vk::RenderPass render_pass)
vk::PhysicalDevice get_gpu()
void init(vulkan_display::VulkanInstance &&instance, vk::SurfaceKHR surface, vulkan_display::WindowParameters window_parameters, uint32_t gpu_index, vk::PresentModeKHR preferred_mode)
vulkan_display::WindowParameters window_parameters
vk::SurfaceCapabilitiesKHR capabilities
std::string concat(size_t expected_result_size, std::array< std::string, count > const &strings)
constexpr bool is_yCbCr_format(vk::Format format)
std::function< void(vulkan_display::LogLevel, std::string_view)> vulkan_log_msg
vk::ImageViewCreateInfo default_image_view_create_info(vk::Format format)
constexpr uint32_t swapchain_image_out_of_date
constexpr uint32_t no_queue_index_found
constexpr uint32_t swapchain_image_timeout
constexpr uint32_t gpu_macro_min
void cout_msg(LogLevel log_level, std::string_view msg)
constexpr uint32_t gpu_integrated
constexpr uint32_t gpu_discrete
constexpr uint32_t no_gpu_selected
VulkanError(const std::string &msg)
constexpr bool is_minimized() const
constexpr bool operator!=(const WindowParameters &other) const
constexpr bool operator==(const WindowParameters &other) const
vk::Framebuffer framebuffer