| 716 | [](vk::ExtensionProperties const &extension) { return strcmp(extension.extensionName, VK_EXT_LAYER_SETTINGS_EXTENSION_NAME) == 0; })) |
| 717 | { |
| 718 | is_available = true; |
| 719 | } |
| 720 | } |
| 721 | #endif |
| 722 | |
| 723 | if (!is_available) |
| 724 | { |
| 725 | LOGW("Layer: {} not found. Disabling layer setting: {}", requested_layer_setting.pLayerName, requested_layer_setting.pSettingName); |
| 726 | return false; |
| 727 | } |
| 728 | |
| 729 | bool is_already_enabled = std::ranges::any_of(enabled_layer_settings, |
| 730 | [&requested_layer_setting](vk::LayerSettingEXT const &enabled_layer_setting) { |
| 731 | return (strcmp(requested_layer_setting.pLayerName, enabled_layer_setting.pLayerName) == 0) && |
| 732 | (strcmp(requested_layer_setting.pSettingName, enabled_layer_setting.pSettingName) == 0); |
| 733 | }); |
| 734 | |
| 735 | if (is_already_enabled) |
| 736 | { |
| 737 | LOGW("Ignoring duplicated layer setting {} in layer {}.", requested_layer_setting.pSettingName, requested_layer_setting.pLayerName); |
| 738 | return false; |
| 739 | } |
| 740 | |
| 741 | LOGI("Enabling layer setting {} in layer {}.", requested_layer_setting.pSettingName, requested_layer_setting.pLayerName); |
| 742 | enabled_layer_settings.push_back(requested_layer_setting); |
| 743 | return true; |
| 744 | } |
| 745 | |
| 746 | inline bool enable_layer_setting(VkLayerSettingEXT const &requested_layer_setting, |
| 747 | uint32_t enabled_layers_count, |
| 748 | char const *const *enabled_layers, |
| 749 | std::vector<vk::LayerSettingEXT> &enabled_layer_settings) |
| 750 | { |
| 751 | return enable_layer_setting( |
| 752 | reinterpret_cast<vk::LayerSettingEXT const &>(requested_layer_setting), enabled_layers_count, enabled_layers, enabled_layer_settings); |
| 753 | } |
| 754 | |
| 755 | template <vkb::BindingType bindingType> |
| 756 | inline void VulkanSample<bindingType>::extend_instance_create_info_impl(vkb::StructureChainBuilderCpp<vk::InstanceCreateInfo> &scb) const |
| 757 | { |
| 758 | vk::InstanceCreateInfo const *create_info = scb.get_struct<vk::InstanceCreateInfo>(); |
| 759 | assert(create_info); |
| 760 | |
| 761 | #if defined(VKB_DEBUG) || defined(VKB_VALIDATION_LAYERS) |
| 762 | if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) |
| 763 | { |
| 764 | scb.add_struct(get_debug_utils_messenger_create_info()); |
| 765 | } |
| 766 | else if (contains(create_info->enabledExtensionCount, create_info->ppEnabledExtensionNames, VK_EXT_DEBUG_REPORT_EXTENSION_NAME)) |
no outgoing calls
no test coverage detected