Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Android NDK Vulkan validation layers libraries #10095

Closed
wants to merge 2 commits into from

Conversation

hevrard
Copy link
Contributor

@hevrard hevrard commented Oct 24, 2019

Fix #10094

@hevrard
Copy link
Contributor Author

hevrard commented Oct 24, 2019

This is my first foray in Bazel source code, there might be a better way to do this, all feedback very welcome.

@hevrard hevrard force-pushed the android-ndk-vk-layer branch from fc10a9d to 8edb41a Compare October 24, 2019 12:35
@irengrig irengrig added the team-Android Issues for Android team label Oct 28, 2019
@irengrig
Copy link
Contributor

Hi @hevrard , thank you for the pull request!
Please have a look at the failing tests (probably, defining only cpu parameter is not enough to have different names?).

@hevrard
Copy link
Contributor Author

hevrard commented Oct 28, 2019

I tried locally and the generated BUILD.bazel file for the NDK seems clean:

################################################################
# Vulkan validation layers libraries
################################################################

cc_library(
    name = "vulkan_validation_layers_arm64-v8a",
    srcs = glob(["ndk/sources/third_party/vulkan/src/build-android/jniLibs/arm64-v8a/libVkLayer_*.so"]),
)
cc_library(
    name = "vulkan_validation_layers_armeabi-v7a",
    srcs = glob(["ndk/sources/third_party/vulkan/src/build-android/jniLibs/armeabi-v7a/libVkLayer_*.so"]),
)
cc_library(
    name = "vulkan_validation_layers_x86",
    srcs = glob(["ndk/sources/third_party/vulkan/src/build-android/jniLibs/x86/libVkLayer_*.so"]),
)
cc_library(
    name = "vulkan_validation_layers_x86_64",
    srcs = glob(["ndk/sources/third_party/vulkan/src/build-android/jniLibs/x86_64/libVkLayer_*.so"]),
)

The log of failing tests refer to /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel, but I cannot manage to find such a file. How can I see this file which is I guess generated during the test run?

Also, in #10094 (comment) , @jin points out that Bazel is mocking an NDK for tests: if so, where should I add mocks for the validation layers?

Thanks,
Hugues

@aiuto
Copy link
Contributor

aiuto commented Apr 23, 2020

Ping. Any luck with the failing tests?

@hevrard hevrard force-pushed the android-ndk-vk-layer branch from 8edb41a to bbc9f3d Compare April 23, 2020 09:33
@hevrard
Copy link
Contributor Author

hevrard commented Apr 23, 2020

@aiuto thanks for the follow-up, I just rebased on master, and I confirm it builds on my machine using bazel-3.1.0 to build.

Looking at https://bazel.build/contributing.html, I can't find the command to run all the tests, can you remind me of it (and maybe add it to this doc?)

@hevrard
Copy link
Contributor Author

hevrard commented Apr 23, 2020

@aiuto Looking at the CI logs, I can repro the failing tests with:

bazel test //src/test/shell/bazel/android:android_ndk_integration_test

It fails with:

FAILED: //src/test/shell/bazel/android:android_ndk_integration_test (Summary)
      ~/.cache/bazel/_bazel_hevrard/b7b12a6c30fd8d797b032975fb3998f5/execroot/io_bazel/bazel-out/k8-fastbuild/testlogs/src/test/shell/bazel/android/android_ndk_integration_test/shard_3_of_6/test.log
... etc ...

But the logs are not very helpful:

$ cat ~/.cache/bazel/_bazel_hevrard/b7b12a6c30fd8d797b032975fb3998f5/execroot/io_bazel/bazel-out/k8-fastbuild/testlogs/src/test/shell/bazel/android/android_ndk_integration_test/*/*log
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //src/test/shell/bazel/android:android_ndk_integration_test
-----------------------------------------------------------------------------
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //src/test/shell/bazel/android:android_ndk_integration_test
-----------------------------------------------------------------------------
exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //src/test/shell/bazel/android:android_ndk_integration_test
... etc ...

Could you give me some hints of where to look at to understand why the tests fail?

@jin
Copy link
Member

jin commented Apr 23, 2020

It looks like the Android NDK hasn't been wired up in the Bazel workspace. Try this:

diff --git a/WORKSPACE b/WORKSPACE
index 1f2ff74978..3a6b62314a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -78,8 +78,8 @@ list_source_repository(name = "local_bazel_source_list")
 #   2. Set the $ANDROID_HOME and $ANDROID_NDK_HOME environment variables
 #   3. Uncomment the two lines below
 #
-# android_sdk_repository(name = "androidsdk")
-# android_ndk_repository(name = "androidndk")
+android_sdk_repository(name = "androidsdk")
+android_ndk_repository(name = "androidndk")

Then run the tests again.

@hevrard
Copy link
Contributor Author

hevrard commented Apr 23, 2020

Thanks @jin , with this I have meaningful test logs. I'll try to fix the tests now.

@jin
Copy link
Member

jin commented Apr 23, 2020 via email

@hevrard
Copy link
Contributor Author

hevrard commented Apr 23, 2020

@jin I have NDK r21 on my desktop, where the test fails with:

ERROR: /usr/local/google/home/hevrard/.cache/bazel/_bazel_hevrard/b7b12a6c30fd8d797b032975fb3998f5/sandbox/linux-sandbox/1504/execroot/io_bazel/_tmp/7759e7061b81c98dade9f66\
217c822db/root/8724ad0ef87a11a342fb3ba9d836f6f2/external/androidndk/BUILD.bazel:41:19: in cc_toolchain_suite rule @androidndk//:toolchain-libcpp: cc_toolchain_suite '@andro\
idndk//:toolchain-libcpp' does not contain a toolchain for cpu 'armeabi-v7a' and compiler 'clang5.0.300080'.                                                                 

Do you have any idea how to fix this?

Also, NDK r15c seems to have some Vulkan layers, but it has deprecated for a long time. Is there anything preventing an update to a more recent NDK on the CI?

@jin
Copy link
Member

jin commented Apr 23, 2020

The tests are hardcoded with the compiler versions shipped with NDK r15c. it can be updated with the latest versions of the NDK, but the CI machines will need to be reimaged and the rest of the tests updated.

Without blocking you on that, the errors look similar across all of the failing tests:

exec ${PAGER:-/usr/bin/less} "$0" || exit 1
Executing tests from //src/test/java/com/google/devtools/build/lib/bazel/rules/android:AndroidTests
-----------------------------------------------------------------------------
JUnit4 Test Runner
..Apr 23, 2020 9:40:39 AM com.google.devtools.build.lib.concurrent.AbstractQueueVisitor maybeSaveUnhandledThrowable
WARNING: Found critical error in queue visitor
java.lang.AssertionError: ERROR /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1463:11: cc_library rule 'vulkan_validation_layers_arm64-v8a' in package '' conflicts with existing cc_library rule, defined at /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1435:11
	at org.junit.Assert.fail(Assert.java:89)
	at com.google.devtools.build.lib.testutil.FoundationTestCase$1.handle(FoundationTestCase.java:61)
	at com.google.devtools.build.lib.events.Reporter.handle(Reporter.java:142)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:215)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:204)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visitRaw(NestedSetVisitor.java:84)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visit(NestedSetVisitor.java:63)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.buildAndReportEventsAndPostables(SkyFunctionEnvironment.java:288)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.commit(SkyFunctionEnvironment.java:711)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:549)
	at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

E.Apr 23, 2020 9:40:39 AM com.google.devtools.build.lib.concurrent.AbstractQueueVisitor maybeSaveUnhandledThrowable
WARNING: Found critical error in queue visitor
java.lang.AssertionError: ERROR /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1463:11: cc_library rule 'vulkan_validation_layers_arm64-v8a' in package '' conflicts with existing cc_library rule, defined at /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1435:11
	at org.junit.Assert.fail(Assert.java:89)
	at com.google.devtools.build.lib.testutil.FoundationTestCase$1.handle(FoundationTestCase.java:61)
	at com.google.devtools.build.lib.events.Reporter.handle(Reporter.java:142)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:215)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:204)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visitRaw(NestedSetVisitor.java:84)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visit(NestedSetVisitor.java:63)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.buildAndReportEventsAndPostables(SkyFunctionEnvironment.java:288)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.commit(SkyFunctionEnvironment.java:711)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:549)
	at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

E....
Time: 3.01
There were 2 failures:
1) testApiLevelHighestVersionDetection(com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryTest)
java.lang.AssertionError: ERROR /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1463:11: cc_library rule 'vulkan_validation_layers_arm64-v8a' in package '' conflicts with existing cc_library rule, defined at /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1435:11
	at org.junit.Assert.fail(Assert.java:89)
	at com.google.devtools.build.lib.testutil.FoundationTestCase$1.handle(FoundationTestCase.java:61)
	at com.google.devtools.build.lib.events.Reporter.handle(Reporter.java:142)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:215)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:204)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visitRaw(NestedSetVisitor.java:84)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visit(NestedSetVisitor.java:63)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.buildAndReportEventsAndPostables(SkyFunctionEnvironment.java:288)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.commit(SkyFunctionEnvironment.java:711)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:549)
	at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2) testMiscLibraries(com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryTest)
java.lang.AssertionError: ERROR /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1463:11: cc_library rule 'vulkan_validation_layers_arm64-v8a' in package '' conflicts with existing cc_library rule, defined at /usr/local/google/_blaze_jrluser/FAKEMD5/external/androidndk/BUILD.bazel:1435:11
	at org.junit.Assert.fail(Assert.java:89)
	at com.google.devtools.build.lib.testutil.FoundationTestCase$1.handle(FoundationTestCase.java:61)
	at com.google.devtools.build.lib.events.Reporter.handle(Reporter.java:142)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:215)
	at com.google.devtools.build.skyframe.ParallelEvaluatorContext$NestedSetEventReceiver.accept(ParallelEvaluatorContext.java:204)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visitRaw(NestedSetVisitor.java:84)
	at com.google.devtools.build.lib.collect.nestedset.NestedSetVisitor.visit(NestedSetVisitor.java:63)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.buildAndReportEventsAndPostables(SkyFunctionEnvironment.java:288)
	at com.google.devtools.build.skyframe.SkyFunctionEnvironment.commit(SkyFunctionEnvironment.java:711)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:549)
	at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

FAILURES!!!
Tests run: 7,  Failures: 2


BazelTestRunner exiting with a return value of 1
JVM shutdown hooks (if any) will run now.
The JVM will exit once they complete.

-- JVM shutdown starting at 2020-04-23 09:40:40 --
sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:1463:11: cc_library rule 'vulkan_validation_layers_arm64-v8a' in package '' conflicts with existing cc_library rule, defined at /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:1435:11
Analyzing: target //:app (35 packages loaded, 623 targets configured)
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:164:13: Target '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp-all_files' contains an error and its package is in error and referenced by '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:164:13: Target '@androidndk//:gnu-libstdcpp-4.9-armeabi-static-runtime-libraries' contains an error and its package is in error and referenced by '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:164:13: Target '@androidndk//:gnu-libstdcpp-4.9-armeabi-dynamic-runtime-libraries' contains an error and its package is in error and referenced by '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:164:13: Target '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp-config' contains an error and its package is in error and referenced by '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:aarch64-linux-android-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:arm-linux-androideabi-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:arm-linux-androideabi-clang5.0.300080-v7a-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:mips64el-linux-android-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:mipsel-linux-android-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:x86-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:41:19: Target '@androidndk//:x86_64-clang5.0.300080-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:toolchain-gnu-libstdcpp'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/root/fd86debe6c6b6a309afd0d0dbc882953/external/androidndk/BUILD.bazel:32:6: Target '@androidndk//:toolchain-gnu-libstdcpp' contains an error and its package is in error and referenced by '@androidndk//:default_crosstool'
ERROR: /private/var/tmp/_bazel_buildkite/d30584ef0665575526506875aa4ad22e/sandbox/darwin-sandbox/2465/execroot/io_bazel/_tmp/6d16321195e0f7950ed2f0a9007542bb/workspace.nBZvjgMb/WORKSPACE:49:23: Target '@androidndk//:default_crosstool' contains an error and its package is in error and referenced by '//external:android/crosstool'

My guess is that your newly added targets are duplicated in the outer nested for loop.

// Create the Vulkan validation layers libraries
for (CToolchain toolchain : crosstool.getToolchainList()) {
vulkanValidationLayers.append(
vulkanValidationLayersTemplate.replace("%cpu%", toolchain.getTargetCpu()));
Copy link
Member

Choose a reason for hiding this comment

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

This is not a unique name, if toolchain.getTargetCpu() is common between the outer crosstools loop.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for this, I've changed the rule name to contain the toolchain name, and it seems to have fixed the tests.

@hevrard hevrard requested a review from jin April 23, 2020 13:00
@bazel-io bazel-io closed this in 42e38a9 Apr 24, 2020
@hevrard hevrard deleted the android-ndk-vk-layer branch April 24, 2020 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes team-Android Issues for Android team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Android NDK package: add filegroup for Vulkan validation layers
6 participants