18 #if defined( _MSC_VER )
20 #elif defined( __clang__ )
21 # pragma clang diagnostic ignored "-Wunused-variable"
22 #elif defined( __GNUC__ )
23 # pragma GCC diagnostic ignored "-Wunused-but-set-variable"
28 #include "../utils/utils.hpp"
35 static char const * AppName =
"EnableValidationWithCallback";
36 static char const * EngineName =
"Vulkan.hpp";
63 message += std::string(
"\t" ) +
"messageIDName = <" + pCallbackData->
pMessageIdName +
">\n";
65 message += std::string(
"\t" ) +
"message = <" + pCallbackData->
pMessage +
">\n";
68 message += std::string(
"\t" ) +
"Queue Labels:\n";
76 message += std::string(
"\t" ) +
"CommandBuffer Labels:\n";
84 for ( uint32_t i = 0; i < pCallbackData->
objectCount; i++ )
86 message += std::string(
"\t" ) +
"Object " +
std::to_string( i ) +
"\n";
91 message += std::string(
"\t\t" ) +
"objectName = <" + pCallbackData->
pObjects[i].
pObjectName +
">\n";
97 MessageBox( NULL, message.c_str(),
"Alert", MB_OK );
105 bool checkLayers( std::vector<char const *>
const & layers, std::vector<vk::LayerProperties>
const & properties )
108 return std::all_of( layers.begin(),
110 [&properties](
char const * name )
112 return std::any_of( properties.begin(),
114 [&name]( vk::LayerProperties const & property ) { return strcmp( property.layerName, name ) == 0; } );
122 #if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 )
132 std::vector<char const *> instanceLayerNames;
133 instanceLayerNames.push_back(
"VK_LAYER_KHRONOS_validation" );
134 if ( !
checkLayers( instanceLayerNames, instanceLayerProperties ) )
136 std::cout <<
"Set the environment variable VK_LAYER_PATH to point to the location of your layers" << std::endl;
141 std::vector<char const *> instanceExtensionNames;
148 #if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 )
156 std::cout <<
"GetInstanceProcAddr: Unable to find pfnVkCreateDebugUtilsMessengerEXT function." << std::endl;
163 std::cout <<
"GetInstanceProcAddr: Unable to find pfnVkDestroyDebugUtilsMessengerEXT function." << std::endl;
179 float queuePriority = 0.0f;
189 std::cout <<
"*** INTENTIONALLY destroying the Device before destroying a CommandPool ***\n";
190 std::cout <<
"*** The following error message is EXPECTED ***\n";
196 #if !defined( NDEBUG )
208 catch ( std::exception & err )
PFN_vkCreateDebugUtilsMessengerEXT pfnVkCreateDebugUtilsMessengerEXT
bool checkLayers(std::vector< char const * > const &layers, std::vector< vk::LayerProperties > const &properties)
VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pMessenger)
VKAPI_ATTR VkBool32 VKAPI_CALL debugMessageFunc(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, VkDebugUtilsMessengerCallbackDataEXT const *pCallbackData, void *)
PFN_vkDestroyDebugUtilsMessengerEXT pfnVkDestroyDebugUtilsMessengerEXT
VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger, VkAllocationCallbacks const *pAllocator)
void cout(vk::SurfaceCapabilitiesKHR const &surfaceCapabilities)
void destroy(const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void destroyCommandPool(vk::CommandPool commandPool, const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD Result createCommandPool(const vk::CommandPoolCreateInfo *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::CommandPool *pCommandPool, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD Result createDebugUtilsMessengerEXT(const vk::DebugUtilsMessengerCreateInfoEXT *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::DebugUtilsMessengerEXT *pMessenger, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void destroy(const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD Result enumeratePhysicalDevices(uint32_t *pPhysicalDeviceCount, vk::PhysicalDevice *pPhysicalDevices, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
PFN_vkVoidFunction getProcAddr(const char *pName, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void destroyDebugUtilsMessengerEXT(vk::DebugUtilsMessengerEXT messenger, const vk::AllocationCallbacks *pAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
void getQueueFamilyProperties(uint32_t *pQueueFamilyPropertyCount, vk::QueueFamilyProperties *pQueueFamilyProperties, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD Result createDevice(const vk::DeviceCreateInfo *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::Device *pDevice, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT) const VULKAN_HPP_NOEXCEPT
virtual const char * what() const VULKAN_HPP_NOEXCEPT
uint32_t findGraphicsQueueFamilyIndex(std::vector< vk::QueueFamilyProperties > const &queueFamilyProperties)
VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
DebugUtilsMessageSeverityFlagBitsEXT
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result createInstance(const vk::InstanceCreateInfo *pCreateInfo, const vk::AllocationCallbacks *pAllocator, vk::Instance *pInstance, Dispatch const &d) VULKAN_HPP_NOEXCEPT
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties(uint32_t *pPropertyCount, vk::LayerProperties *pProperties, Dispatch const &d) VULKAN_HPP_NOEXCEPT
uint32_t cmdBufLabelCount
const VkDebugUtilsLabelEXT * pCmdBufLabels
const char * pMessageIdName
const VkDebugUtilsLabelEXT * pQueueLabels
const VkDebugUtilsObjectNameInfoEXT * pObjects
VkResult(* PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pMessenger)
struct VkInstance_T * VkInstance
VkFlags VkDebugUtilsMessageTypeFlagsEXT
#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME
uint64_t VkDebugUtilsMessengerEXT
void(* PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks *pAllocator)
#define VK_API_VERSION_1_1
VkDebugUtilsMessageSeverityFlagBitsEXT
#define VULKAN_HPP_DEFAULT_DISPATCHER