aboutsummaryrefslogtreecommitdiff
path: root/docs/users
diff options
context:
space:
mode:
authorPark DongHa <luncliff@gmail.com>2021-03-30 01:30:34 +0900
committerGitHub <noreply@github.com>2021-03-29 09:30:34 -0700
commit2b903edac3d4cdd33902407a959209abb9f12021 (patch)
tree08bcfca6ac38f5b5b997c60c1dd3d13d58033f6d /docs/users
parentec73ce4bad5fa1cda0a7d438190be8c8613d2008 (diff)
downloadvcpkg-2b903edac3d4cdd33902407a959209abb9f12021.tar.gz
vcpkg-2b903edac3d4cdd33902407a959209abb9f12021.zip
[docs] Vulkan SDK usage for Android triplets (#16881)
* [docs] Vulkan SDK usage for Android triplets * [docs] update links * redirect to developer.android.com for some keywords * Update docs/users/android.md Co-authored-by: Cheney Wang <38240633+Cheney-W@users.noreply.github.com> * [docs] add detailed path for libvulkan.so Co-authored-by: Cheney Wang <38240633+Cheney-W@users.noreply.github.com>
Diffstat (limited to 'docs/users')
-rw-r--r--docs/users/android.md94
1 files changed, 93 insertions, 1 deletions
diff --git a/docs/users/android.md b/docs/users/android.md
index b56030f55..58f2807de 100644
--- a/docs/users/android.md
+++ b/docs/users/android.md
@@ -95,6 +95,98 @@ cd $VCPKG_ROOT
./vcpkg install jsoncpp:x64-android
````
+### Using Vulkan SDK
+
+Vcpkg has a [`vulkan` package](https://github.com/microsoft/vcpkg/blob/master/ports/vulkan/portfile.cmake) which allows you to `find_package(Vulkan)`. To use it you have to provide `VULKAN_SDK` environment variable.
+
+```bash
+export VULKAN_SDK=/usr/local
+./vcpkg install vulkan
+```
+
+NDK already contains [Vulkan](https://developer.android.com/ndk/guides/graphics/getting-started) headers and `libvulkan.so` binaries for each of its architecture.
+To expose them to VcPkg, you can consider `export VULKAN_SDK=...` for each installation.
+But by placing `set(ENV{VULKAN_SDK} ...)` in the triplet files, you can skip the tedious work.
+
+If you are using NDK 21.3.6528147 or earlier version, it will be like the following.
+
+```cmake
+# In android triplets... (e.g. arm64-android.cmake)
+set(VCPKG_CMAKE_SYSTEM_NAME Android)
+# ...
+# If your API level is 30, libvulkan.so is at $ENV{ANDROID_NDK_HOME}/platforms/android-30/arch-arm64/usr/lib
+set(ENV{VULKAN_SDK} $ENV{ANDROID_NDK_HOME}/sysroot/usr)
+```
+
+Notice that **the location of the sysroot has changed since NDK 22**. (see https://github.com/android/ndk/issues/1407)
+If you prefer using [the latest version](https://developer.android.com/studio/projects/install-ndk#default-ndk-per-agp), check the [BuildSystemMaintainers.md of the NDK document](https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#sysroot) and then put appropriate path for your system.
+
+For example, Mac OS users will use the path like this.
+
+```cmake
+# In android triplets... (e.g. arm64-android.cmake)
+set(VCPKG_CMAKE_SYSTEM_NAME Android)
+# ...
+# If your API level is 30, libvulkan.so is at $ENV{ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/30
+set(ENV{VULKAN_SDK} $ENV{ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr)
+```
+
+By doing this for all android triplets, you can install `vulkan` and the packages that require it. (e.g. `vulkan-hpp`)
+
+<details>
+ <summary markdown="span">`vcpkg install vulkan-hpp:arm64-android`</summary>
+
+```console
+user@host$ ./vcpkg install vulkan-hpp:arm64-android
+Computing installation plan...
+The following packages will be built and installed:
+ * vulkan[core]:arm64-android -> 1.1.82.1-1
+ vulkan-hpp[core]:arm64-android -> 2019-05-11-1
+Additional packages (*) will be modified to complete this operation.
+Detecting compiler hash for triplet arm64-android...
+...
+Starting package 1/2: vulkan:arm64-android
+Building package vulkan[core]:arm64-android...
+-- Using community triplet arm64-android. This triplet configuration is not guaranteed to succeed.
+-- [COMMUNITY] Loading triplet configuration from: /.../vcpkg/triplets/community/arm64-android.cmake
+-- Querying VULKAN_SDK Enviroment variable
+-- Searching /.../Library/Android/sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/vulkan/ for vulkan.h
+-- Found vulkan.h
+-- Performing post-build validation
+-- Performing post-build validation done
+...
+Building package vulkan[core]:arm64-android... done
+Installing package vulkan[core]:arm64-android...
+Installing package vulkan[core]:arm64-android... done
+Elapsed time for package vulkan:arm64-android: 35.9 ms
+Starting package 2/2: vulkan-hpp:arm64-android
+Building package vulkan-hpp[core]:arm64-android...
+-- Using community triplet arm64-android. This triplet configuration is not guaranteed to succeed.
+-- [COMMUNITY] Loading triplet configuration from: /.../vcpkg/triplets/community/arm64-android.cmake
+-- Using cached /.../vcpkg/downloads/KhronosGroup-Vulkan-Hpp-5ce8ae7fd0d9c0543d02f33cfa8a66e6a43e2150.tar.gz
+-- Cleaning sources at /.../vcpkg/buildtrees/vulkan-hpp/src/e6a43e2150-4f344cd911.clean. Use --editable to skip cleaning for the packages you specify.
+-- Extracting source /.../vcpkg/downloads/KhronosGroup-Vulkan-Hpp-5ce8ae7fd0d9c0543d02f33cfa8a66e6a43e2150.tar.gz
+-- Using source at /.../vcpkg/buildtrees/vulkan-hpp/src/e6a43e2150-4f344cd911.clean
+-- Performing post-build validation
+-- Performing post-build validation done
+...
+Building package vulkan-hpp[core]:arm64-android... done
+Installing package vulkan-hpp[core]:arm64-android...
+Installing package vulkan-hpp[core]:arm64-android... done
+Elapsed time for package vulkan-hpp:arm64-android: 144.5 ms
+
+Total elapsed time: 1.013 s
+
+The package vulkan-hpp:arm64-android is header only and can be used from CMake via:
+
+ find_path(VULKAN_HPP_INCLUDE_DIRS "vulkan/vulkan.hpp")
+ target_include_directories(main PRIVATE ${VULKAN_HPP_INCLUDE_DIRS})
+
+```
+
+</details>
+
+
## Consume libraries using vpckg, cmake and the android toolchain
1. Combine vcpkg and Android toolchains
@@ -167,4 +259,4 @@ cmake .. -DVCPKG_TARGET_ANDROID=ON -DANDROID_ABI=armeabi-v7a
## Consume libraries using vpckg, and Android prefab Archives (AAR files)
-See [prefab.md](../specifications/prefab.md) \ No newline at end of file
+See [prefab.md](../specifications/prefab.md)