Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
foray::base::VulkanInstance Class Reference

Wraps creation and lifetime of a vulkan instance. Includes default debug callback logging setup. More...

#include <foray_vulkaninstance.hpp>

Public Types

using BeforeInstanceBuildFunctionPointer = std::function< void(vkb::InstanceBuilder &)>
 Function called after default callback configuration and before action of the instance builder.
 

Public Member Functions

 VulkanInstance ()=default
 
 VulkanInstance (core::Context *context, BeforeInstanceBuildFunctionPointer beforeInstanceBuildFunc, bool enableDebugLayersAndCallbacks)
 
 FORAY_SETTER_V (BeforeInstanceBuildFunc)
 Set the function called after default callback configuration and before action of the instance builder.
 
 FORAY_SETTER_V (DebugMessengerFunc)
 Set the function receiving vulkan validation messages.
 
 FORAY_SETTER_V (DebugReportFunc)
 
 operator bool () const
 
 operator VkInstance () const
 
void Create ()
 If mEnableDebugLayersAndCallbacks is set, configures validation and callback. If mBeforeInstanceBuildFunc is set, calls it. Finally, builds Instance.
 
bool Exists () const
 
void Destroy ()
 
 ~VulkanInstance ()
 

Static Protected Member Functions

static VkBool32 DefaultDebugMessengerCallback (VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData)
 
static VkBool32 DefaultDebugReportCallback (VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char *pLayerPrefix, const char *pMessage, void *pUserData)
 

Protected Attributes

BeforeInstanceBuildFunctionPointer mBeforeInstanceBuildFunc = nullptr
 
PFN_vkDebugUtilsMessengerCallbackEXT mDebugMessengerFunc = &DefaultDebugMessengerCallback
 
void * mDebugUserData = nullptr
 
PFN_vkDebugReportCallbackEXT mDebugReportFunc = &DefaultDebugReportCallback
 
VkDebugReportCallbackEXT mDebugReportCallbackHandle = nullptr
 
bool mEnableDebugLayersAndCallbacks = true
 If true, validation layers are enabled, and if mDebugMessengerFunc or mDebugUserData are set they are passed on to the builder respectively.
 
bool mEnableDebugReport = false
 
core::ContextmContext = nullptr
 
vkb::Instance mInstance
 

Detailed Description

Wraps creation and lifetime of a vulkan instance. Includes default debug callback logging setup.

Member Typedef Documentation

◆ BeforeInstanceBuildFunctionPointer

using foray::base::VulkanInstance::BeforeInstanceBuildFunctionPointer = std::function<void(vkb::InstanceBuilder&)>

Function called after default callback configuration and before action of the instance builder.

Constructor & Destructor Documentation

◆ VulkanInstance() [1/2]

foray::base::VulkanInstance::VulkanInstance ( )
default

◆ VulkanInstance() [2/2]

foray::base::VulkanInstance::VulkanInstance ( core::Context context,
BeforeInstanceBuildFunctionPointer  beforeInstanceBuildFunc,
bool  enableDebugLayersAndCallbacks 
)
inline
Parameters
beforeInstanceBuildFuncFunction called after default callback configuration and before action of the instance builder
enableDebugLayersAndCallbacksIf true, validation layers are enabled, and if mDebugMessengerFunc isn't null sets debug layers callback

◆ ~VulkanInstance()

foray::base::VulkanInstance::~VulkanInstance ( )

Member Function Documentation

◆ Create()

void foray::base::VulkanInstance::Create ( )

If mEnableDebugLayersAndCallbacks is set, configures validation and callback. If mBeforeInstanceBuildFunc is set, calls it. Finally, builds Instance.

Remarks
Will throw std::exception on instance build failure

◆ DefaultDebugMessengerCallback()

static VkBool32 foray::base::VulkanInstance::DefaultDebugMessengerCallback ( VkDebugUtilsMessageSeverityFlagBitsEXT  messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT  messageTypes,
const VkDebugUtilsMessengerCallbackDataEXT *  pCallbackData,
void *  pUserData 
)
staticprotected

◆ DefaultDebugReportCallback()

static VkBool32 foray::base::VulkanInstance::DefaultDebugReportCallback ( VkDebugReportFlagsEXT  flags,
VkDebugReportObjectTypeEXT  objectType,
uint64_t  object,
size_t  location,
int32_t  messageCode,
const char *  pLayerPrefix,
const char *  pMessage,
void *  pUserData 
)
staticprotected

◆ Destroy()

void foray::base::VulkanInstance::Destroy ( )

◆ Exists()

bool foray::base::VulkanInstance::Exists ( ) const
inline

◆ FORAY_SETTER_V() [1/3]

foray::base::VulkanInstance::FORAY_SETTER_V ( BeforeInstanceBuildFunc  )

Set the function called after default callback configuration and before action of the instance builder.

◆ FORAY_SETTER_V() [2/3]

foray::base::VulkanInstance::FORAY_SETTER_V ( DebugMessengerFunc  )

Set the function receiving vulkan validation messages.

◆ FORAY_SETTER_V() [3/3]

foray::base::VulkanInstance::FORAY_SETTER_V ( DebugReportFunc  )

◆ operator bool()

foray::base::VulkanInstance::operator bool ( ) const
inline

◆ operator VkInstance()

foray::base::VulkanInstance::operator VkInstance ( ) const
inline

Member Data Documentation

◆ mBeforeInstanceBuildFunc

BeforeInstanceBuildFunctionPointer foray::base::VulkanInstance::mBeforeInstanceBuildFunc = nullptr
protected

◆ mContext

core::Context* foray::base::VulkanInstance::mContext = nullptr
protected

◆ mDebugMessengerFunc

PFN_vkDebugUtilsMessengerCallbackEXT foray::base::VulkanInstance::mDebugMessengerFunc = &DefaultDebugMessengerCallback
protected

◆ mDebugReportCallbackHandle

VkDebugReportCallbackEXT foray::base::VulkanInstance::mDebugReportCallbackHandle = nullptr
protected

◆ mDebugReportFunc

PFN_vkDebugReportCallbackEXT foray::base::VulkanInstance::mDebugReportFunc = &DefaultDebugReportCallback
protected

◆ mDebugUserData

void* foray::base::VulkanInstance::mDebugUserData = nullptr
protected

◆ mEnableDebugLayersAndCallbacks

bool foray::base::VulkanInstance::mEnableDebugLayersAndCallbacks = true
protected

If true, validation layers are enabled, and if mDebugMessengerFunc or mDebugUserData are set they are passed on to the builder respectively.

◆ mEnableDebugReport

bool foray::base::VulkanInstance::mEnableDebugReport = false
protected

◆ mInstance

vkb::Instance foray::base::VulkanInstance::mInstance
protected

The documentation for this class was generated from the following file: