@@ -197,11 +197,9 @@ class VulkanSample : public vkb::Application
197197 */
198198 virtual void draw_renderpass (vkb::core::CommandBuffer<bindingType> &command_buffer, vkb::rendering::RenderTarget<bindingType> &render_target);
199199
200- virtual void extend_instance_create_info (vkb::StructureChainBuilder<bindingType, InstanceCreateInfoType> &create_info) const ;
201- virtual uint32_t get_api_version () const ;
202- virtual DebugReportCallbackCreateInfoType const *get_debug_report_callback_create_info () const ;
203- virtual DebugUtilsMessengerCreateInfoType const *get_debug_utils_messenger_create_info () const ;
204- virtual InstanceCreateFlagsType get_instance_create_flags (std::vector<std::string> const &enabled_extensions) const ;
200+ virtual void extend_instance_create_info (vkb::StructureChainBuilder<bindingType, InstanceCreateInfoType> &scb) const ;
201+ virtual uint32_t get_api_version () const ;
202+ virtual InstanceCreateFlagsType get_instance_create_flags (std::vector<std::string> const &enabled_extensions) const ;
205203
206204 /* *
207205 * @brief Override this to customise the creation of the swapchain and render_context
@@ -331,6 +329,11 @@ class VulkanSample : public vkb::Application
331329 void request_layer_settings_impl (std::vector<vk::LayerSettingEXT> &requested_layer_settings, vkb::StructureChainBuilderCpp<vk::InstanceCreateInfo> &scb) const ;
332330 static void set_viewport_and_scissor_impl (vkb::core::CommandBufferCpp const &command_buffer, vk::Extent2D const &extent);
333331
332+ #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
333+ vk::DebugReportCallbackCreateInfoEXT const &get_debug_report_callback_create_info () const ;
334+ vk::DebugUtilsMessengerCreateInfoEXT const &get_debug_utils_messenger_create_info () const ;
335+ #endif
336+
334337 // / <summary>
335338 // / PRIVATE MEMBERS
336339 // / </summary>
@@ -758,16 +761,11 @@ inline void VulkanSample<bindingType>::extend_instance_create_info_impl(vkb::Str
758761#if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
759762 if (contains (create_info->enabledExtensionCount , create_info->ppEnabledExtensionNames , VK_EXT_DEBUG_UTILS_EXTENSION_NAME ))
760763 {
761- vk::DebugUtilsMessengerCreateInfoEXT debug_utils_messenger_create_info{.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eError | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning,
762- .messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance,
763- .pfnUserCallback = vkb::core::debug_utils_messenger_callback};
764- scb.add_struct (debug_utils_messenger_create_info);
764+ scb.add_struct (get_debug_utils_messenger_create_info ());
765765 }
766766 else if (contains (create_info->enabledExtensionCount , create_info->ppEnabledExtensionNames , VK_EXT_DEBUG_REPORT_EXTENSION_NAME ))
767767 {
768- vk::DebugReportCallbackCreateInfoEXT debug_report_callback_create_info{.flags = vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning,
769- .pfnCallback = vkb::core::debug_callback};
770- scb.add_struct (debug_report_callback_create_info);
768+ scb.add_struct (get_debug_report_callback_create_info ());
771769 }
772770#endif
773771
@@ -819,45 +817,6 @@ inline uint32_t VulkanSample<bindingType>::get_api_version() const
819817 return VK_API_VERSION_1_1 ;
820818}
821819
822- template <vkb::BindingType bindingType>
823- inline typename VulkanSample<bindingType>::DebugReportCallbackCreateInfoType const *VulkanSample<bindingType>::get_debug_report_callback_create_info() const
824- {
825- #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
826- static vk::DebugReportCallbackCreateInfoEXT debug_report_callback_create_info{.flags = vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning,
827- .pfnCallback = vkb::core::debug_callback};
828- if constexpr (bindingType == vkb::BindingType::Cpp)
829- {
830- return &debug_report_callback_create_info;
831- }
832- else
833- {
834- return reinterpret_cast <VkDebugReportCallbackCreateInfoEXT *>(&debug_report_callback_create_info);
835- }
836- #else
837- return nullptr ;
838- #endif
839- }
840-
841- template <vkb::BindingType bindingType>
842- inline typename VulkanSample<bindingType>::DebugUtilsMessengerCreateInfoType const *VulkanSample<bindingType>::get_debug_utils_messenger_create_info() const
843- {
844- #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
845- static vk::DebugUtilsMessengerCreateInfoEXT debug_utils_messenger_create_info{.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eError | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning,
846- .messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance,
847- .pfnUserCallback = vkb::core::debug_utils_messenger_callback};
848- if constexpr (bindingType == vkb::BindingType::Cpp)
849- {
850- return &debug_utils_messenger_create_info;
851- }
852- else
853- {
854- return reinterpret_cast <VkDebugUtilsMessengerCreateInfoEXT *>(&debug_utils_messenger_create_info);
855- }
856- #else
857- return nullptr ;
858- #endif
859- }
860-
861820template <vkb::BindingType bindingType>
862821inline typename VulkanSample<bindingType>::InstanceCreateFlagsType VulkanSample<bindingType>::get_instance_create_flags(std::vector<std::string> const &enabled_extensions) const
863822{
@@ -911,6 +870,27 @@ inline vkb::core::Device<bindingType> &VulkanSample<bindingType>::get_device()
911870 }
912871}
913872
873+ #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
874+ template <vkb::BindingType bindingType>
875+ inline vk::DebugReportCallbackCreateInfoEXT const &VulkanSample<bindingType>::get_debug_report_callback_create_info() const
876+ {
877+ static vk::DebugReportCallbackCreateInfoEXT debug_report_callback_create_info =
878+ {.flags = vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning,
879+ .pfnCallback = vkb::core::debug_callback};
880+ return debug_report_callback_create_info;
881+ }
882+
883+ template <vkb::BindingType bindingType>
884+ inline vk::DebugUtilsMessengerCreateInfoEXT const &VulkanSample<bindingType>::get_debug_utils_messenger_create_info() const
885+ {
886+ static vk::DebugUtilsMessengerCreateInfoEXT debug_utils_messenger_create_info =
887+ {.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eError | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning,
888+ .messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance,
889+ .pfnUserCallback = vkb::core::debug_utils_messenger_callback};
890+ return debug_utils_messenger_create_info;
891+ }
892+ #endif
893+
914894template <vkb::BindingType bindingType>
915895inline vkb::Gui<bindingType> &VulkanSample<bindingType>::get_gui()
916896{
@@ -1207,40 +1187,17 @@ inline bool VulkanSample<bindingType>::prepare(const ApplicationOptions &options
12071187 instance.reset (reinterpret_cast <vkb::core::InstanceCpp *>(create_instance ().release ()));
12081188 }
12091189
1210- // initialize debug utils or report callback based on enabled extensions, if any
1190+ #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
1191+ // initialize debug utils or report callback based on enabled extensions
12111192 if (instance->is_extension_enabled (VK_EXT_DEBUG_UTILS_EXTENSION_NAME ))
12121193 {
1213- #ifdef VKB_VULKAN_DEBUG
1214- debug_utils = std::make_unique<vkb::core::HPPDebugUtilsExtDebugUtils>();
1215- #endif
1216- auto const *debug_utils_messenger_create_info = get_debug_utils_messenger_create_info ();
1217- if (debug_utils_messenger_create_info)
1218- {
1219- if constexpr (bindingType == BindingType::Cpp)
1220- {
1221- debug_utils_messenger = instance->get_handle ().createDebugUtilsMessengerEXT (*debug_utils_messenger_create_info);
1222- }
1223- else
1224- {
1225- debug_utils_messenger = instance->get_handle ().createDebugUtilsMessengerEXT (*reinterpret_cast <vk::DebugUtilsMessengerCreateInfoEXT const *>(debug_utils_messenger_create_info));
1226- }
1227- }
1194+ debug_utils_messenger = instance->get_handle ().createDebugUtilsMessengerEXT (get_debug_utils_messenger_create_info ());
12281195 }
12291196 else if (instance->is_extension_enabled (VK_EXT_DEBUG_REPORT_EXTENSION_NAME ))
12301197 {
1231- auto const *debug_report_callback_create_info = get_debug_report_callback_create_info ();
1232- if (debug_report_callback_create_info)
1233- {
1234- if constexpr (bindingType == BindingType::Cpp)
1235- {
1236- debug_report_callback = instance->get_handle ().createDebugReportCallbackEXT (*debug_report_callback_create_info);
1237- }
1238- else
1239- {
1240- debug_report_callback = instance->get_handle ().createDebugReportCallbackEXT (*reinterpret_cast <vk::DebugReportCallbackCreateInfoEXT const *>(debug_report_callback_create_info));
1241- }
1242- }
1198+ debug_report_callback = instance->get_handle ().createDebugReportCallbackEXT (get_debug_report_callback_create_info ());
12431199 }
1200+ #endif
12441201
12451202 // Getting a valid vulkan surface from the platform
12461203 surface = static_cast <vk::SurfaceKHR>(window->create_surface (reinterpret_cast <vkb::core::InstanceC &>(*instance)));
0 commit comments