Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
[Impeller] made a switch for turning on validation layers
  • Loading branch information
gaaclarke committed Jun 8, 2023
commit ab0ade1fc8dffd6b7ecf9d18115cdd2d68e9e9fe
2 changes: 1 addition & 1 deletion DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ allowed_hosts = [
]

deps = {
'src': 'https://github.com/flutter/buildroot.git' + '@' + '859e7ccc38f55f89dac8aea49367b7a4c1656490',
'src': 'https://github.com/flutter/buildroot.git' + '@' + 'fabb92f0ada787444ad0be22638c80a6d5927a2c',

# Fuchsia compatibility
#
Expand Down
1 change: 1 addition & 0 deletions shell/config.gni
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ declare_args() {
shell_enable_vulkan = false

shell_enable_software = true
enable_vulkan_validation_layers = false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like there's a convention here to prefix the argument names with shell_.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved it back to vulkan/config.gni

}

declare_args() {
Expand Down
18 changes: 18 additions & 0 deletions shell/platform/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,24 @@ action("android_jar") {
":pom_libflutter",
]

if (enable_vulkan_validation_layers) {
deps += [ "//third_party/vulkan_validation_layers" ]
args += [
"--native_lib",
rebase_path("libVkLayer_khronos_validation.so",
root_build_dir,
root_build_dir),
]
if (current_cpu == "arm64") {
args += [
"--native_lib",
rebase_path("$android_libcpp_root/libs/arm64-v8a/libc++_shared.so", root_build_dir),
]
} else {
assert(false, "Validation layers not supported for arch.")
}
}

if (flutter_runtime_mode == "profile") {
deps += [ "//flutter/shell/vmservice:vmservice_snapshot" ]
args += [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@ public class FlutterLoader {
"io.flutter.embedding.android.OldGenHeapSize";
private static final String ENABLE_IMPELLER_META_DATA_KEY =
"io.flutter.embedding.android.EnableImpeller";
<<<<<<< HEAD
=======
private static final String IMPELLER_BACKEND_META_DATA_KEY =
"io.flutter.embedding.android.ImpellerBackend";
private static final String ENABLE_VULKAN_VALIDATION_META_DATA_KEY =
"io.flutter.embedding.android.EnableVulkanValidation";
>>>>>>> 2e93fc1cf8 ([Impeller] made a switch for turning on validation layers)

/**
* Set whether leave or clean up the VM after the last shell shuts down. It can be set from app's
Expand Down Expand Up @@ -316,8 +323,18 @@ public void ensureInitializationComplete(

shellArgs.add("--prefetched-default-font-manager");

if (metaData != null && metaData.getBoolean(ENABLE_IMPELLER_META_DATA_KEY, false)) {
shellArgs.add("--enable-impeller");
if (metaData != null) {
if (metaData.getBoolean(ENABLE_IMPELLER_META_DATA_KEY, false)) {
shellArgs.add("--enable-impeller");
}
String backend = metaData.getString(IMPELLER_BACKEND_META_DATA_KEY, "opengles");
shellArgs.add("--impeller-backend=" + backend);

Log.d(TAG, "foobar has metadata");
if (metaData.getBoolean(ENABLE_VULKAN_VALIDATION_META_DATA_KEY, false)) {
Log.d(TAG, "foobar has validation flag");
shellArgs.add("--enable-vulkan-validation");
}
}

final String leakVM = isLeakVM(metaData) ? "true" : "false";
Expand Down
2 changes: 1 addition & 1 deletion testing/scenario_app/android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx2048M
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's this for?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just running into it. I'm not 100% sure it caused by this change. My theory is that having those extra .so files in the flutter.jar file somehow requires more memory when the build is happening.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(this increases the JVM heap that gradle uses. It's probably fine to increase this)

android.useAndroidX=true
android.enableJetifier=true
android.builder.sdkDownload=false
9 changes: 4 additions & 5 deletions tools/gn
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ def to_command_line(gn_args):
def merge(key, value):
if isinstance(value, bool):
return '%s=%s' % (key, 'true' if value else 'false')
elif isinstance(value, int):
return '%s=%d' % (key, value)
return '%s="%s"' % (key, value)

return [merge(x, y) for x, y in gn_args.items()]
Expand Down Expand Up @@ -548,11 +550,8 @@ def to_gn_args(args):
gn_args['use_fstack_protector'] = True

if args.enable_vulkan_validation_layers:
if args.target_os != 'fuchsia':
print(
'Vulkan validation layers are currently only supported on Fuchsia targets.'
)
sys.exit(1)
if args.target_os == 'android':
gn_args['android_api_level'] = int(26)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the int() needed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope, just residual, removed

gn_args['enable_vulkan_validation_layers'] = True

# Enable pointer compression on 64-bit mobile targets. iOS is excluded due to
Expand Down