diff --git a/impeller/renderer/backend/vulkan/BUILD.gn b/impeller/renderer/backend/vulkan/BUILD.gn index 595454ded36bd..96fe23a6c310d 100644 --- a/impeller/renderer/backend/vulkan/BUILD.gn +++ b/impeller/renderer/backend/vulkan/BUILD.gn @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//flutter/vulkan/config.gni") import("../../../tools/impeller.gni") impeller_component("vulkan_unittests") { @@ -96,4 +97,8 @@ impeller_component("vulkan") { "//third_party/vulkan-deps/vulkan-headers/src:vulkan_headers", "//third_party/vulkan_memory_allocator", ] + + if (enable_vulkan_validation_layers) { + defines = [ "IMPELLER_ENABLE_VULKAN_VALIDATION_LAYERS" ] + } } diff --git a/impeller/renderer/backend/vulkan/context_vk.cc b/impeller/renderer/backend/vulkan/context_vk.cc index a23aa60eaabe0..d0e309f07e252 100644 --- a/impeller/renderer/backend/vulkan/context_vk.cc +++ b/impeller/renderer/backend/vulkan/context_vk.cc @@ -184,6 +184,17 @@ void ContextVK::Setup(Settings settings) { vk::InstanceCreateInfo instance_info; if (caps->AreValidationsEnabled()) { + std::stringstream ss; + ss << "Enabling validation layers, features: ["; + for (const auto& validation : enabled_validations) { + ss << vk::to_string(validation) << " "; + } + ss << "]"; + FML_LOG(ERROR) << ss.str(); +#if !defined(IMPELLER_ENABLE_VULKAN_VALIDATION_LAYERS) && FML_OS_ANDROID + FML_LOG(ERROR) << "Vulkan validation layers turned on but the gn argument " + "`--enable-vulkan-validation-layers` is missing."; +#endif instance_info.pNext = &validation; } instance_info.setPEnabledLayerNames(enabled_layers_c);