HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
GUISystem_vulkan.hpp
1// Copyright 2019 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/GUI/GUISystem_base.hpp"
7#include <vulkan/vulkan.hpp>
8
9namespace tt {
10
15protected:
16
18 vk::DispatchLoaderDynamic _loader;
19
20 vk::DebugUtilsMessengerEXT debugUtilsMessager;
21
22public:
24 vk::Instance intrinsic;
25
28
31
33 vk::PhysicalDeviceFeatures requiredFeatures;
34
36 vk::PhysicalDeviceLimits requiredLimits;
37
39 vk::ApplicationInfo applicationInfo;
40
50
51 GUISystem_vulkan(const GUISystem_vulkan &) = delete;
52 GUISystem_vulkan &operator=(const GUISystem_vulkan &) = delete;
54 GUISystem_vulkan &operator=(GUISystem_vulkan &&) = delete;
55
56 void initialize() noexcept(false) override;
57
58 vk::DispatchLoaderDynamic loader() const noexcept {
59 return _loader;
60 }
61
62 void destroySurfaceKHR(vk::SurfaceKHR surface) {
63 auto lock = std::scoped_lock(guiMutex);
64 intrinsic.destroySurfaceKHR(surface);
65 }
66
67 static VkBool32 debugUtilsMessageCallback(
68 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
69 VkDebugUtilsMessageTypeFlagsEXT messageType,
70 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
71 void* pUserData);
72};
73
74}
Vulkan GUIDevice controller.
Definition GUISystem_base.hpp:23
Vulkan GUIDevice controller.
Definition GUISystem_vulkan.hpp:14
std::vector< const char * > requiredExtensions
List of extension that where requested when the instance was created.
Definition GUISystem_vulkan.hpp:27
std::vector< const char * > requiredLayers
List of extension that where requested when the instance was created.
Definition GUISystem_vulkan.hpp:30
vk::Instance intrinsic
Vulkan instance.
Definition GUISystem_vulkan.hpp:24
GUISystem_vulkan(GUISystemDelegate *delegate, const std::vector< const char * > extensions)
vk::PhysicalDeviceLimits requiredLimits
List of required limits for each device.
Definition GUISystem_vulkan.hpp:36
vk::PhysicalDeviceFeatures requiredFeatures
List of required features for each device.
Definition GUISystem_vulkan.hpp:33
vk::ApplicationInfo applicationInfo
Application info passed when the instance was created.
Definition GUISystem_vulkan.hpp:39
Definition GUISystemDelegate.hpp:8