MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Samples / extend_instance_create_info_impl

Method extend_instance_create_info_impl

framework/vulkan_sample.h:775–836  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

773
774template <vkb::BindingType bindingType>
775inline void VulkanSample<bindingType>::extend_instance_create_info_impl(vkb::StructureChainBuilderCpp<vk::InstanceCreateInfo> &scb) const
776{
777 vk::InstanceCreateInfo const *create_info = scb.get_struct<vk::InstanceCreateInfo>();
778 assert(create_info);
779
780#if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS)
781 if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_DEBUG_UTILS_EXTENSION_NAME))
782 {
783 vk::DebugUtilsMessengerCreateInfoEXT debug_utils_messenger_create_info{.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eError | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning,
784 .messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance,
785 .pfnUserCallback = vkb::core::debug_utils_messenger_callback};
786 scb.add_struct(debug_utils_messenger_create_info);
787 }
788 else if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_DEBUG_REPORT_EXTENSION_NAME))
789 {
790 vk::DebugReportCallbackCreateInfoEXT debug_report_callback_create_info{.flags = vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning,
791 .pfnCallback = vkb::core::debug_callback};
792 scb.add_struct(debug_report_callback_create_info);
793 }
794#endif
795
796 if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_LAYER_SETTINGS_EXTENSION_NAME))
797 {
798 std::vector<vk::LayerSettingEXT> requested_layer_settings;
799 if constexpr (bindingType == vkb::BindingType::Cpp)
800 {
801 request_layer_settings(requested_layer_settings, scb);
802 }
803 else
804 {
805 request_layer_settings(reinterpret_cast<std::vector<VkLayerSettingEXT> &>(requested_layer_settings),
806 reinterpret_cast<vkb::StructureChainBuilderC<VkInstanceCreateInfo> &>(scb));
807 }
808
809 std::vector<vk::LayerSettingEXT> enabled_layer_settings;
810 for (auto const &layer_setting : requested_layer_settings)
811 {
812 enable_layer_setting(layer_setting, create_info->enabledLayerCount, create_info->ppEnabledLayerNames, enabled_layer_settings);
813 }
814
815 if (!enabled_layer_settings.empty())
816 {
817 // If layer settings are defined, then activate the sample's required layer settings during instance creation
818 vk::LayerSettingsCreateInfoEXT layer_settings_create_info_ext{.settingCount = static_cast<uint32_t>(enabled_layer_settings.size()),
819 .pSettings = scb.add_chain_data(enabled_layer_settings).data()};
820 scb.add_struct(layer_settings_create_info_ext);
821 }
822 }
823 else if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME))
824 {
825 std::vector<ValidationFeatureEnableType> requested_validation_feature_enables;
826 request_validation_feature_enables(requested_validation_feature_enables);
827
828 if (!requested_validation_feature_enables.empty())
829 {
830 vk::ValidationFeaturesEXT validation_features_ext{
831 .enabledValidationFeatureCount = static_cast<uint32_t>(requested_validation_feature_enables.size()),
832 .pEnabledValidationFeatures = reinterpret_cast<vk::ValidationFeatureEnableEXT const *>(scb.add_chain_data(requested_validation_feature_enables).data())};

Callers

nothing calls this directly

Calls 4

containsFunction · 0.85
enable_layer_settingFunction · 0.85
emptyMethod · 0.80
sizeMethod · 0.80

Tested by

no test coverage detected