GN: Android Vulkan support

Android's the easiest place to start supporting Vulkan, so it's up first.

ndk_api becomes user-specifiable so that the Vulkan bots can kick it up
to 24, the first release supporting Vulkan.  The defaults remain the same:
18 for 32-bit and 21 for 64-bit, the first release supporting 64-bit.

To test this, I set ndk_api=24 and skia_use_vulkan=true in GN, then
   $ ninja -C out dm; and droid out/dm --config vk --src gm

Seems to work!  Bot scripts to follow.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2336343002

Review-Url: https://codereview.chromium.org/2336343002
This commit is contained in:
mtklein 2016-09-14 06:12:09 -07:00 committed by Commit bot
parent 4ff7871ed3
commit 6ef6999017
3 changed files with 31 additions and 7 deletions

View File

@ -16,6 +16,7 @@ declare_args() {
skia_use_libpng = true
skia_use_libwebp = !is_fuchsia
skia_use_sfntly = !is_fuchsia
skia_use_vulkan = false
skia_use_zlib = true
}
@ -205,6 +206,7 @@ template("optional") {
[
"public_defines",
"deps",
"libs",
"sources",
"sources_when_disabled",
])
@ -339,6 +341,13 @@ optional("typeface_freetype") {
]
}
optional("vulkan") {
enabled = skia_use_vulkan
public_defines = [ "SK_VULKAN" ]
libs = [ "vulkan" ]
sources = skia_vk_sources
}
optional("webp") {
enabled = skia_use_libwebp
public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
@ -390,6 +399,7 @@ component("skia") {
":sse42",
":ssse3",
":typeface_freetype",
":vulkan",
":webp",
":xml",
]
@ -604,6 +614,10 @@ if (skia_enable_tools) {
} else if (is_mac) {
sources += [ "tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp" ]
}
if (skia_use_vulkan) {
sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
}
}
test_lib("flags") {

View File

@ -9,6 +9,7 @@ declare_args() {
is_debug = true
is_component_build = false
ndk = ""
ndk_api = 0 # 0 == picked automatically for target_cpu.
sanitize = ""
}
@ -45,7 +46,15 @@ if (is_android) {
ndk_target = ""
ndk_platform = ""
ndk_stdlib = ""
nkd_gccdir = ""
ndk_gccdir = ""
if (ndk_api == 0) {
ndk_api = 18
if (target_cpu == "arm64" || target_cpu == "mips64el" ||
target_cpu == "x64") {
ndk_api = 21
}
}
if (host_os == "linux") {
ndk_host = "linux-x86_64"
@ -55,32 +64,32 @@ if (is_android) {
if (target_cpu == "arm64") {
ndk_target = "aarch64-linux-android"
ndk_platform = "android-21/arch-arm64"
ndk_platform = "android-${ndk_api}/arch-arm64"
ndk_stdlib = "arm64-v8a"
ndk_gccdir = ndk_target
} else if (target_cpu == "arm") {
ndk_target = "arm-linux-androideabi"
ndk_platform = "android-18/arch-arm"
ndk_platform = "android-${ndk_api}/arch-arm"
ndk_stdlib = "armeabi-v7a"
ndk_gccdir = ndk_target
} else if (target_cpu == "mips64el") {
ndk_target = "mips64el-linux-android"
ndk_platform = "android-21/arch-mips64"
ndk_platform = "android-${ndk_api}/arch-mips64"
ndk_stdlib = "mips64"
ndk_gccdir = ndk_target
} else if (target_cpu == "mipsel") {
ndk_target = "mipsel-linux-android"
ndk_platform = "android-18/arch-mips"
ndk_platform = "android-${ndk_api}/arch-mips"
ndk_stdlib = "mips"
ndk_gccdir = ndk_target
} else if (target_cpu == "x64") {
ndk_target = "x86_64-linux-android"
ndk_platform = "android-21/arch-x86_64"
ndk_platform = "android-${ndk_api}/arch-x86_64"
ndk_stdlib = "x86_64"
ndk_gccdir = ndk_stdlib
} else if (target_cpu == "x86") {
ndk_target = "i686-linux-android"
ndk_platform = "android-18/arch-x86"
ndk_platform = "android-${ndk_api}/arch-x86"
ndk_stdlib = "x86"
ndk_gccdir = ndk_stdlib
}

View File

@ -44,6 +44,7 @@ _gpu_gypi = exec_script("gypi_to_gn.py",
[ "../gyp/gpu.gypi" ])
skia_gpu_sources = _gpu_gypi.skgpu_sources
skia_null_gpu_sources = _gpu_gypi.skgpu_null_gl_sources
skia_vk_sources = _gpu_gypi.skgpu_vk_sources
# Opts.
#