diff --git a/DEPS b/DEPS index a2ec8dc8fc719..0f06f1986a01b 100644 --- a/DEPS +++ b/DEPS @@ -261,7 +261,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '6b0243e97d94836767ea8b94a477d7d15ee3bb91', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + 'b615dd6af4c2e95a388060151c7fd1e429e34d61', # Fuchsia compatibility # diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 18562b0ae24c4..df9324c064491 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -492,12 +492,15 @@ action("android_jar") { if (enable_vulkan_validation_layers) { assert(impeller_enable_vulkan) - deps += [ "//third_party/vulkan_validation_layers" ] + apilevel26_toolchain = "//build/toolchain/android:clang_arm64_apilevel26" + validation_layer_target = + "//third_party/vulkan_validation_layers($apilevel26_toolchain)" + validation_layer_out_dir = + get_label_info(validation_layer_target, "root_out_dir") + deps += [ validation_layer_target ] args += [ "--native_lib", - rebase_path("libVkLayer_khronos_validation.so", - root_build_dir, - root_build_dir), + rebase_path("$validation_layer_out_dir/libVkLayer_khronos_validation.so"), ] if (current_cpu == "arm64") { args += [ diff --git a/shell/platform/android/android_context_vulkan_impeller.cc b/shell/platform/android/android_context_vulkan_impeller.cc index 4adc2d1beefb6..7c5743ea48b2b 100644 --- a/shell/platform/android/android_context_vulkan_impeller.cc +++ b/shell/platform/android/android_context_vulkan_impeller.cc @@ -38,7 +38,12 @@ static std::shared_ptr CreateImpellerContext( settings.cache_directory = fml::paths::GetCachesDirectory(); settings.enable_validation = enable_vulkan_validation; - FML_LOG(ERROR) << "Using the Impeller rendering backend (Vulkan)."; + if (settings.enable_validation) { + FML_LOG(ERROR) << "Using the Impeller rendering backend (Vulkan with " + "Validation Layers)."; + } else { + FML_LOG(ERROR) << "Using the Impeller rendering backend (Vulkan)."; + } return impeller::ContextVK::Create(std::move(settings)); } diff --git a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java index 8265cd46a8858..2b880ba3e9883 100644 --- a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java +++ b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java @@ -214,6 +214,13 @@ public InitResult call() { } } + private static boolean areValidationLayersOnByDefault() { + if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + return Build.SUPPORTED_ABIS[0].equals("arm64-v8a"); + } + return false; + } + /** * Blocks until initialization of the native system has completed. * @@ -324,7 +331,8 @@ public void ensureInitializationComplete( if (metaData.getBoolean(ENABLE_IMPELLER_META_DATA_KEY, false)) { shellArgs.add("--enable-impeller"); } - if (metaData.getBoolean(ENABLE_VULKAN_VALIDATION_META_DATA_KEY, false)) { + if (metaData.getBoolean( + ENABLE_VULKAN_VALIDATION_META_DATA_KEY, areValidationLayersOnByDefault())) { shellArgs.add("--enable-vulkan-validation"); } String backend = metaData.getString(IMPELLER_BACKEND_META_DATA_KEY); diff --git a/tools/gn b/tools/gn index deaea47283957..3bac2e7219685 100755 --- a/tools/gn +++ b/tools/gn @@ -646,7 +646,9 @@ def to_gn_args(args): if args.unoptimized and args.target_os == 'android' and args.android_cpu == 'arm64': enable_vulkan_validation = True - if enable_vulkan_validation: + if enable_vulkan_validation or (args.enable_impeller_vulkan and + runtime_mode == 'debug' and + gn_args['target_cpu'] == 'arm64'): gn_args['enable_vulkan_validation_layers'] = True if args.target_os == 'android': gn_args['android_api_level'] = 26