Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_vulkaninstance.hpp
Go to the documentation of this file.
1#pragma once
2#include "../foray_basics.hpp"
3#include "../foray_vkb.hpp"
4#include <functional>
5
6namespace foray::base {
9 {
10 public:
12 using BeforeInstanceBuildFunctionPointer = std::function<void(vkb::InstanceBuilder&)>;
13
14 VulkanInstance() = default;
17 inline VulkanInstance(core::Context* context, BeforeInstanceBuildFunctionPointer beforeInstanceBuildFunc, bool enableDebugLayersAndCallbacks)
18 : mBeforeInstanceBuildFunc{beforeInstanceBuildFunc}, mEnableDebugLayersAndCallbacks{enableDebugLayersAndCallbacks}, mContext{context}
19 {
20 }
21
23 FORAY_SETTER_V(BeforeInstanceBuildFunc);
25 FORAY_SETTER_V(DebugMessengerFunc);
26 FORAY_SETTER_V(DebugReportFunc);
27
28 FORAY_PROPERTY_V(DebugUserData)
29 FORAY_PROPERTY_V(EnableDebugLayersAndCallbacks)
30 FORAY_PROPERTY_V(EnableDebugReport)
31 FORAY_PROPERTY_R(Instance)
32 FORAY_PROPERTY_V(Context)
33
34 inline operator bool() const { return !!mInstance.instance; }
35 inline operator VkInstance() const { return mInstance.instance; }
36
39 void Create();
40 inline bool Exists() const { return !!mInstance.instance; }
41 void Destroy();
42
44
45 protected:
46 static VkBool32 DefaultDebugMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
47 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
48 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
49 void* pUserData);
50
51 static VkBool32 DefaultDebugReportCallback(VkDebugReportFlagsEXT flags,
52 VkDebugReportObjectTypeEXT objectType,
53 uint64_t object,
54 size_t location,
55 int32_t messageCode,
56 const char* pLayerPrefix,
57 const char* pMessage,
58 void* pUserData);
59
61 PFN_vkDebugUtilsMessengerCallbackEXT mDebugMessengerFunc = &DefaultDebugMessengerCallback;
62 void* mDebugUserData = nullptr;
63 PFN_vkDebugReportCallbackEXT mDebugReportFunc = &DefaultDebugReportCallback;
64 VkDebugReportCallbackEXT mDebugReportCallbackHandle = nullptr;
65
68
69 bool mEnableDebugReport = false;
70
72
73 vkb::Instance mInstance;
74 };
75} // namespace foray::base
Wraps creation and lifetime of a vulkan instance. Includes default debug callback logging setup.
Definition foray_vulkaninstance.hpp:9
vkb::Instance mInstance
Definition foray_vulkaninstance.hpp:73
VkDebugReportCallbackEXT mDebugReportCallbackHandle
Definition foray_vulkaninstance.hpp:64
std::function< void(vkb::InstanceBuilder &)> BeforeInstanceBuildFunctionPointer
Function called after default callback configuration and before action of the instance builder.
Definition foray_vulkaninstance.hpp:12
bool Exists() const
Definition foray_vulkaninstance.hpp:40
BeforeInstanceBuildFunctionPointer mBeforeInstanceBuildFunc
Definition foray_vulkaninstance.hpp:60
bool mEnableDebugReport
Definition foray_vulkaninstance.hpp:69
PFN_vkDebugUtilsMessengerCallbackEXT mDebugMessengerFunc
Definition foray_vulkaninstance.hpp:61
bool mEnableDebugLayersAndCallbacks
If true, validation layers are enabled, and if mDebugMessengerFunc or mDebugUserData are set they are...
Definition foray_vulkaninstance.hpp:67
void Create()
If mEnableDebugLayersAndCallbacks is set, configures validation and callback. If mBeforeInstanceBuild...
core::Context * mContext
Definition foray_vulkaninstance.hpp:71
FORAY_SETTER_V(DebugReportFunc)
FORAY_SETTER_V(DebugMessengerFunc)
Set the function receiving vulkan validation messages.
PFN_vkDebugReportCallbackEXT mDebugReportFunc
Definition foray_vulkaninstance.hpp:63
void * mDebugUserData
Definition foray_vulkaninstance.hpp:62
static VkBool32 DefaultDebugMessengerCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData)
FORAY_SETTER_V(BeforeInstanceBuildFunc)
Set the function called after default callback configuration and before action of the instance builde...
VulkanInstance(core::Context *context, BeforeInstanceBuildFunctionPointer beforeInstanceBuildFunc, bool enableDebugLayersAndCallbacks)
Definition foray_vulkaninstance.hpp:17
static VkBool32 DefaultDebugReportCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char *pLayerPrefix, const char *pMessage, void *pUserData)
#define FORAY_PROPERTY_V(member)
Getter+Setter shorthand for value types.
Definition foray_basics.hpp:81
#define FORAY_PROPERTY_R(member)
Getter+Setter shorthand for reference types.
Definition foray_basics.hpp:86
Definition foray_base_declares.hpp:3
Non owning context object.
Definition foray_context.hpp:16