aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools
diff options
context:
space:
mode:
authorGravatar djsollen <djsollen@google.com>2016-04-21 07:59:44 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-21 07:59:44 -0700
commit12d62a7d51a1826e221ffd34224d01c9bec49bab (patch)
treee3906a4d96e03158ea6e20e66bfe8d09df4fb84e /platform_tools
parentd37fe76b5101dfe6c29668f5c29e5b46e697a68d (diff)
VulkanViewer on Android
Diffstat (limited to 'platform_tools')
-rw-r--r--platform_tools/android/apps/settings.gradle1
-rw-r--r--platform_tools/android/apps/vulkanviewer/build.gradle37
-rw-r--r--platform_tools/android/apps/vulkanviewer/src/main/AndroidManifest.xml26
-rw-r--r--platform_tools/android/apps/vulkanviewer/src/main/java/com/skia/vulkanviewer/VulkanViewerActivity.java28
-rwxr-xr-xplatform_tools/android/bin/android_setup.sh8
-rwxr-xr-xplatform_tools/android/bin/utils/setup_toolchain.sh4
-rw-r--r--platform_tools/android/gyp/skia_android.gypi5
-rw-r--r--platform_tools/android/gyp/vulkanviewer.gypi65
-rw-r--r--platform_tools/android/third_party/native_app_glue/android_native_app_glue.c8
9 files changed, 180 insertions, 2 deletions
diff --git a/platform_tools/android/apps/settings.gradle b/platform_tools/android/apps/settings.gradle
index f8872ca309..9d103b49be 100644
--- a/platform_tools/android/apps/settings.gradle
+++ b/platform_tools/android/apps/settings.gradle
@@ -2,3 +2,4 @@ include ':sample_app'
include ':visualbench'
include ':visualbenchsdl'
include ':canvasproof'
+include ':vulkanviewer'
diff --git a/platform_tools/android/apps/vulkanviewer/build.gradle b/platform_tools/android/apps/vulkanviewer/build.gradle
new file mode 100644
index 0000000000..acb6740248
--- /dev/null
+++ b/platform_tools/android/apps/vulkanviewer/build.gradle
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+apply plugin: 'com.android.application'
+android {
+ compileSdkVersion 19
+ buildToolsVersion "22.0.1"
+ defaultConfig {
+ applicationId "org.skia.vulkanviewer"
+ minSdkVersion 9
+ targetSdkVersion 19
+ versionCode 1
+ versionName "1.0"
+ signingConfig signingConfigs.debug
+ }
+ sourceSets.main.jni.srcDirs = [] //disable automatic ndk-build call
+ sourceSets.main.jniLibs.srcDir "src/main/libs"
+ productFlavors { arm {}; arm64 {}; x86 {}; x86_64 {}; mips {}; mips64 {}; }
+ applicationVariants.all{ variant ->
+ def buildNativeLib = task("${variant.name}_NativeLib", type:Exec) {
+ workingDir '../../../..' // top-level skia directory
+ commandLine constructBuildCommand(variant, "CopyVulkanViewerDeps").split()
+ environment PATH: getPathWithDepotTools()
+ environment ANDROID_SDK_ROOT: getSDKPath()
+ }
+ buildNativeLib.onlyIf { !project.hasProperty("suppressNativeBuild") }
+ TaskCollection<Task> assembleTask
+ assembleTask = project.tasks.matching {
+ it.name.contains("assemble") &&
+ it.name.toLowerCase().endsWith(variant.name.toLowerCase())
+ }
+ assembleTask.getAt(0).dependsOn buildNativeLib
+ }
+}
diff --git a/platform_tools/android/apps/vulkanviewer/src/main/AndroidManifest.xml b/platform_tools/android/apps/vulkanviewer/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..3220c31bd1
--- /dev/null
+++ b/platform_tools/android/apps/vulkanviewer/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- BEGIN_INCLUDE(manifest) -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.skia.vulkanviewer"
+ android:versionCode="1"
+ android:versionName="1.0">
+
+ <application
+ android:allowBackup="false"
+ android:label="VulkanViewer">
+
+ <activity android:name=".VulkanViewerActivity"
+ android:label="VulkanViewer"
+ android:screenOrientation="portrait"
+ android:configChanges="orientation|keyboardHidden">
+ <meta-data android:name="android.app.lib_name"
+ android:value="vulkanviewer" />
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
+<!-- END_INCLUDE(manifest) -->
diff --git a/platform_tools/android/apps/vulkanviewer/src/main/java/com/skia/vulkanviewer/VulkanViewerActivity.java b/platform_tools/android/apps/vulkanviewer/src/main/java/com/skia/vulkanviewer/VulkanViewerActivity.java
new file mode 100644
index 0000000000..dcb00858e5
--- /dev/null
+++ b/platform_tools/android/apps/vulkanviewer/src/main/java/com/skia/vulkanviewer/VulkanViewerActivity.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+package com.skia.vulkanviewer;
+
+import android.app.ActionBar;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.View;
+import android.view.WindowManager;
+
+public class VulkanViewerActivity extends android.app.NativeActivity {
+ static {
+ System.loadLibrary("skia_android");
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ ActionBar ab = this.getActionBar();
+ ab.hide();
+ }
+}
diff --git a/platform_tools/android/bin/android_setup.sh b/platform_tools/android/bin/android_setup.sh
index fd05a985e3..0084fc6bb7 100755
--- a/platform_tools/android/bin/android_setup.sh
+++ b/platform_tools/android/bin/android_setup.sh
@@ -38,6 +38,8 @@ while (( "$#" )); do
LOGCAT=1
elif [[ "$1" == "--verbose" ]]; then
VERBOSE="true"
+ elif [[ "$1" == "--vulkan" ]]; then
+ SKIA_VULKAN="true"
else
APP_ARGS=("${APP_ARGS[@]}" "${1}")
fi
@@ -48,6 +50,10 @@ if [ "$USE_CLANG" == "true" ]; then
export GYP_DEFINES="skia_clang_build=1 $GYP_DEFINES"
fi
+if [ "$SKIA_VULKAN" == "true" ]; then
+ export GYP_DEFINES="skia_vulkan=1 $GYP_DEFINES"
+fi
+
function verbose {
if [[ -n $VERBOSE ]]; then
echo $@
@@ -167,7 +173,7 @@ setup_device() {
source $SCRIPT_DIR/utils/setup_toolchain.sh
fi
- DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}"
+ DEFINES="${DEFINES} android_toolchain=${ANDROID_TOOLCHAIN}"
DEFINES="${DEFINES} android_buildtype=${BUILDTYPE}"
exportVar GYP_DEFINES "$DEFINES $GYP_DEFINES"
diff --git a/platform_tools/android/bin/utils/setup_toolchain.sh b/platform_tools/android/bin/utils/setup_toolchain.sh
index 50098ba34a..6851931bfb 100755
--- a/platform_tools/android/bin/utils/setup_toolchain.sh
+++ b/platform_tools/android/bin/utils/setup_toolchain.sh
@@ -42,6 +42,10 @@ function default_toolchain() {
else
API=14 # Android 4.0
fi
+
+ if [ "$SKIA_VULKAN" == "true" ]; then
+ API=24 # Android N Preview
+ fi
TOOLCHAIN=$ANDROID_ARCH-$NDK-$API
HOST=`uname | tr '[A-Z]' '[a-z]'`
diff --git a/platform_tools/android/gyp/skia_android.gypi b/platform_tools/android/gyp/skia_android.gypi
index 8833afef21..7767183bd1 100644
--- a/platform_tools/android/gyp/skia_android.gypi
+++ b/platform_tools/android/gyp/skia_android.gypi
@@ -45,7 +45,10 @@
}],
],
},
- 'includes' : [ 'canvasproof.gypi', ],
+ 'includes' : [
+ 'canvasproof.gypi',
+ 'vulkanviewer.gypi',
+ ],
'targets': [
{
'target_name': 'CopySampleAppDeps',
diff --git a/platform_tools/android/gyp/vulkanviewer.gypi b/platform_tools/android/gyp/vulkanviewer.gypi
new file mode 100644
index 0000000000..adcfd22d4f
--- /dev/null
+++ b/platform_tools/android/gyp/vulkanviewer.gypi
@@ -0,0 +1,65 @@
+# Copyright 2015 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+{
+ 'targets': [
+ {
+ 'target_name': 'CopyVulkanViewerDeps',
+ 'type': 'none',
+ 'dependencies': [
+ 'skia_lib.gyp:skia_lib',
+ 'vulkanviewer.gyp:vulkanviewer',
+ ],
+ 'copies': [
+ {
+ 'destination': '<(android_base)/apps/vulkanviewer/src/main/libs/<(android_arch)',
+ 'conditions': [
+ [ 'skia_shared_lib', {
+ 'files': [
+ '<(SHARED_LIB_DIR)/libskia_android.so',
+ '<(SHARED_LIB_DIR)/libvulkanviewer.so',
+ ]}, {
+ 'files': [
+ '<(SHARED_LIB_DIR)/libvulkanviewer.so',
+ ]}
+ ],
+ ],
+ },
+ ],
+ },
+ {
+ 'target_name': 'VulkanViewer_APK',
+ 'type': 'none',
+ 'dependencies': [ 'CopyVulkanViewerDeps', ],
+ 'actions': [
+ {
+ 'action_name': 'SkiaVulkanViewer_apk',
+ 'inputs': [
+ '<(android_base)/apps/vulkanviewer/src/main/AndroidManifest.xml',
+ '<(android_base)/apps/vulkanviewer/src/main/java/com/skia/vulkanviewer/VulkanViewerActivity.java',
+ '<(android_base)/apps/vulkanviewer/src/main/libs/<(android_arch)/libvulkanviewer.so',
+
+ ],
+ 'conditions': [
+ [ 'skia_shared_lib', {
+ 'inputs': [
+ '<(android_base)/apps/vulkanviewer/src/main/libs/<(android_arch)/libskia_android.so',
+ ],
+ }],
+ ],
+ 'outputs': [
+ '../apps/vulkanviewer/build/outputs/apk/',
+ ],
+ 'action': [
+ '<(android_base)/apps/gradlew',
+ ':vulkanviewer:assemble<(android_variant)Debug',
+ '-p<(android_base)/apps/vulkanviewer',
+ '-PsuppressNativeBuild',
+ '--daemon',
+ ],
+ },
+ ],
+ },
+ ],
+}
diff --git a/platform_tools/android/third_party/native_app_glue/android_native_app_glue.c b/platform_tools/android/third_party/native_app_glue/android_native_app_glue.c
index 55a52bc0e8..595bc76347 100644
--- a/platform_tools/android/third_party/native_app_glue/android_native_app_glue.c
+++ b/platform_tools/android/third_party/native_app_glue/android_native_app_glue.c
@@ -419,6 +419,13 @@ static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue)
android_app_set_input((struct android_app*)activity->instance, NULL);
}
+static void onContentRectChanged(ANativeActivity* activity, const ARect* rect) {
+ struct android_app* android_app = (struct android_app*)activity->instance;
+ LOGV("OnContentRectChanged: %p\n", activity);
+ android_app->contentRect = *rect;
+ android_app_write_cmd(android_app, APP_CMD_CONTENT_RECT_CHANGED);
+}
+
void ANativeActivity_onCreate(ANativeActivity* activity,
void* savedState, size_t savedStateSize) {
LOGV("Creating: %p\n", activity);
@@ -435,6 +442,7 @@ void ANativeActivity_onCreate(ANativeActivity* activity,
activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed;
activity->callbacks->onInputQueueCreated = onInputQueueCreated;
activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed;
+ activity->callbacks->onContentRectChanged = onContentRectChanged;
activity->instance = android_app_create(activity, savedState, savedStateSize);
}