HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
gui_system_vulkan.hpp
1// Copyright Take Vos 2020.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "gui_system.hpp"
8#include <vulkan/vulkan.hpp>
9
10namespace tt {
11
16protected:
17
19 vk::DispatchLoaderDynamic _loader;
20
21 vk::DebugUtilsMessengerEXT debugUtilsMessager;
22
23public:
25 vk::Instance intrinsic;
26
29
32
34 vk::PhysicalDeviceFeatures requiredFeatures;
35
37 vk::PhysicalDeviceLimits requiredLimits;
38
40 vk::ApplicationInfo applicationInfo;
41
52
53 gui_system_vulkan(const gui_system_vulkan &) = delete;
54 gui_system_vulkan &operator=(const gui_system_vulkan &) = delete;
56 gui_system_vulkan &operator=(gui_system_vulkan &&) = delete;
57
58 void init() noexcept(false) override;
59
60 vk::DispatchLoaderDynamic loader() const noexcept {
61 ttlet lock = std::scoped_lock(gui_system_mutex);
62 return _loader;
63 }
64
65 void destroySurfaceKHR(vk::SurfaceKHR surface) {
66 ttlet lock = std::scoped_lock(gui_system_mutex);
67 intrinsic.destroySurfaceKHR(surface);
68 }
69
70 static VkBool32 debugUtilsMessageCallback(
71 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
72 VkDebugUtilsMessageTypeFlagsEXT messageType,
73 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
74 void* pUserData);
75};
76
77}
Vulkan gui_device controller.
Definition gui_system.hpp:24
Vulkan gui_device controller.
Definition gui_system_vulkan.hpp:15
std::vector< const char * > requiredLayers
List of extension that where requested when the instance was created.
Definition gui_system_vulkan.hpp:31
vk::Instance intrinsic
Vulkan instance.
Definition gui_system_vulkan.hpp:25
gui_system_vulkan(std::weak_ptr< gui_system_delegate > const &delegate, const std::vector< const char * > extensions)
Create an instance of a gui_device.
vk::PhysicalDeviceLimits requiredLimits
List of required limits for each device.
Definition gui_system_vulkan.hpp:37
vk::ApplicationInfo applicationInfo
application info passed when the instance was created.
Definition gui_system_vulkan.hpp:40
vk::PhysicalDeviceFeatures requiredFeatures
List of required features for each device.
Definition gui_system_vulkan.hpp:34
void init() noexcept(false) override
Initialize after construction.
std::vector< const char * > requiredExtensions
List of extension that where requested when the instance was created.
Definition gui_system_vulkan.hpp:28