diff options
-rw-r--r-- | platform_tools/android/apps/skqp/src/main/assets/.gitignore | 3 | ||||
-rw-r--r-- | platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotExecuteInExperimentalMode.txt | 0 | ||||
-rw-r--r-- | platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotScoreInCompatibilityTestMode.txt | 0 | ||||
-rw-r--r-- | platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt | 0 | ||||
-rw-r--r-- | platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt | 0 | ||||
-rw-r--r-- | tools/skqp/README.md | 14 | ||||
-rwxr-xr-x | tools/skqp/download_directory_contents.sh | 39 | ||||
-rwxr-xr-x | tools/skqp/generate_gn_args.sh | 30 | ||||
-rw-r--r-- | tools/skqp/gm_runner.cpp | 3 | ||||
-rwxr-xr-x | tools/skqp/make_apk.sh | 19 | ||||
-rwxr-xr-x | tools/skqp/make_known_tests.sh | 27 | ||||
-rwxr-xr-x | tools/skqp/make_model.sh | 13 | ||||
-rwxr-xr-x | tools/skqp/upload_directory_contents.sh | 45 |
13 files changed, 153 insertions, 40 deletions
diff --git a/platform_tools/android/apps/skqp/src/main/assets/.gitignore b/platform_tools/android/apps/skqp/src/main/assets/.gitignore new file mode 100644 index 0000000000..0dddfcbb63 --- /dev/null +++ b/platform_tools/android/apps/skqp/src/main/assets/.gitignore @@ -0,0 +1,3 @@ +/gmkb +/skqp +/files.txt diff --git a/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotExecuteInExperimentalMode.txt b/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotExecuteInExperimentalMode.txt deleted file mode 100644 index e69de29bb2..0000000000 --- a/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotExecuteInExperimentalMode.txt +++ /dev/null diff --git a/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotScoreInCompatibilityTestMode.txt b/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotScoreInCompatibilityTestMode.txt deleted file mode 100644 index e69de29bb2..0000000000 --- a/platform_tools/android/apps/skqp/src/main/assets/skqp/DoNotScoreInCompatibilityTestMode.txt +++ /dev/null diff --git a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt b/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt deleted file mode 100644 index e69de29bb2..0000000000 --- a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt +++ /dev/null diff --git a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt b/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt deleted file mode 100644 index e69de29bb2..0000000000 --- a/platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt +++ /dev/null diff --git a/tools/skqp/README.md b/tools/skqp/README.md index 0a0c8db671..7e56411fd4 100644 --- a/tools/skqp/README.md +++ b/tools/skqp/README.md @@ -20,14 +20,8 @@ How To Use SkQP on your Android device: arch='arm64' # Also valid: 'arm', 'x68', 'x64' android_ndk="${HOME}/android-ndk" # Or wherever you installed the NDK. - mkdir -p out/${arch}-rel - cat > out/${arch}-rel/args.gn << EOF - ndk = "$android_ndk" - ndk_api = 26 - target_cpu = "$arch" - skia_embed_resources = true - is_debug = false - EOF + + tools/skqp/generate_gn_args.sh out/${arch}-rel "$android_ndk" $arch tools/git-sync-deps bin/gn gen out/${arch}-rel ninja -C out/${arch}-rel skqp_lib @@ -37,9 +31,7 @@ How To Use SkQP on your Android device: 5. Generate the validation model data: - go get -u go.skia.org/infra/golden/go/search - go run tools/skqp/make_gmkb.go ~/Downloads/meta.json \ - platform_tools/android/apps/skqp/src/main/assets/gmkb + tools/skqp/make_model.sh ~/Downloads/meta.json Run as an executable -------------------- diff --git a/tools/skqp/download_directory_contents.sh b/tools/skqp/download_directory_contents.sh new file mode 100755 index 0000000000..1b01a8c0d6 --- /dev/null +++ b/tools/skqp/download_directory_contents.sh @@ -0,0 +1,39 @@ +#! /bin/sh + +# Copyright 2018 Google Inc. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +set -e + +cd "$(dirname "$0")/../../platform_tools/android/apps/skqp/src/main/assets" + +checksum() { + [ -f "$1" ] && { md5sum < "$1" | head -c 32; } +} + +download() { + if ! [ $1 = "$(checksum "$2")" ]; then + mkdir -p "$(dirname "$2")" + curl -s -o "$2" "https://storage.googleapis.com/skia-skqp-assets/$1" + fi +} + +download $(cat files.checksum) files.txt + +COUNT=$(wc -l < files.txt) +INDEX=1 +SHARD_COUNT=32 + +cat files.txt | while IFS= read -r LINE; do + MD5=$(echo $LINE | awk -F\; '{print $1}') + FILENAME=$(echo $LINE | awk -F\; '{print $2}') + download $MD5 "$FILENAME" & + if [ $(($INDEX % $SHARD_COUNT)) = 0 ]; then + wait + printf '\r %d / %d ' "$INDEX" "$COUNT" + fi + INDEX=$(($INDEX + 1)) +done +printf '\rdone \n' + diff --git a/tools/skqp/generate_gn_args.sh b/tools/skqp/generate_gn_args.sh new file mode 100755 index 0000000000..8d12fa8513 --- /dev/null +++ b/tools/skqp/generate_gn_args.sh @@ -0,0 +1,30 @@ +#! /bin/sh + +# Copyright 2018 Google Inc. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +BUILD="$1" +ANDROID_NDK="$2" +ARCH="$3" + +if [ $# -ne 3 ] || [ -z "$BUILD" ] || ! [ -d "$ANDROID_NDK" ] || [ -z "$ARCH" ]; then + printf 'Usage:\n %s TARGET_BUILD_DIR ANDROID_NDK_DIR ARCHITECTURE\n\n' "$0" >&2 + printf 'ARCHITECTURE should be "arm" "arm64" "x86" or "x64"\n\n' >&2 + exit 1 +fi + +ANDROID_NDK="$(cd "$ANDROID_NDK"; pwd)" + +mkdir -p "$BUILD" + +cat > "$BUILD/args.gn" << EOF +ndk = "$ANDROID_NDK" +ndk_api = 26 +target_cpu = "$ARCH" +skia_embed_resources = true +is_debug = false +skia_enable_pdf = false +EOF + + diff --git a/tools/skqp/gm_runner.cpp b/tools/skqp/gm_runner.cpp index 980612b7b6..8e61ae5a1f 100644 --- a/tools/skqp/gm_runner.cpp +++ b/tools/skqp/gm_runner.cpp @@ -37,9 +37,8 @@ static bool in_set(const char* s, const SkTHashSet<SkString>& set) { static void readlist(skqp::AssetManager* mgr, const char* path, SkTHashSet<SkString>* dst) { auto asset = mgr->open(path); - SkASSERT_RELEASE(asset); if (!asset || asset->getLength() == 0) { - return; + return; // missing file same as empty file. } std::vector<char> buffer(asset->getLength() + 1); asset->read(buffer.data(), buffer.size()); diff --git a/tools/skqp/make_apk.sh b/tools/skqp/make_apk.sh index 6b44a2b97f..5c415984cc 100755 --- a/tools/skqp/make_apk.sh +++ b/tools/skqp/make_apk.sh @@ -31,26 +31,19 @@ ARCH=${SKQP_ARCH:-arm} cd "$(dirname "$0")/../.." -mkdir -p out/skqp-${ARCH} +BUILD=out/skqp-${ARCH} -cat > out/skqp-${ARCH}/args.gn << EOF - ndk = "$ANDROID_NDK" - ndk_api = 26 - target_cpu = "${ARCH}" - skia_embed_resources = true - is_debug = false - skia_enable_pdf = false -EOF +tools/skqp/generate_gn_args.sh $BUILD "$ANDROID_NDK" $ARCH GIT_SYNC_DEPS_QUIET=Y tools/git-sync-deps -bin/gn gen out/skqp-${ARCH} +bin/gn gen $BUILD -rm -rf out/skqp-${ARCH}/gen +rm -rf $BUILD/gen -platform_tools/android/bin/android_build_app -C out/skqp-${ARCH} skqp +platform_tools/android/bin/android_build_app -C $BUILD skqp set +x -printf '\n\nAPK built: "%s/skqp.apk"\n\n' "$(pwd)/out/skqp-${ARCH}" +printf '\n\nAPK built: "%s/skqp.apk"\n\n' "$(pwd)/$BUILD" diff --git a/tools/skqp/make_known_tests.sh b/tools/skqp/make_known_tests.sh index fd1e8798c1..7242db625d 100755 --- a/tools/skqp/make_known_tests.sh +++ b/tools/skqp/make_known_tests.sh @@ -6,14 +6,21 @@ set -e -x -tools/git-sync-deps -bin/bn gen out/default -ninja -C out/default list_gms list_gpu_unit_tests -out/default/list_gms > \ - platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt -out/default/list_gpu_unit_tests > \ - platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt -git add \ - platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGMs.txt \ - platform_tools/android/apps/skqp/src/main/assets/skqp/KnownGpuUnitTests.txt +cd "$(dirname "$0")/../.." + +BUILD=out/default + +python tools/git-sync-deps + +bin/gn gen $BUILD + +ninja -C $BUILD list_gms list_gpu_unit_tests + +DIR=platform_tools/android/apps/skqp/src/main/assets/skqp + +mkdir -p $DIR + +$BUILD/list_gms > $DIR/KnownGMs.txt + +$BUILD/list_gpu_unit_tests > $DIR/KnownGpuUnitTests.txt diff --git a/tools/skqp/make_model.sh b/tools/skqp/make_model.sh index 6dd10e35aa..3946dd9e85 100755 --- a/tools/skqp/make_model.sh +++ b/tools/skqp/make_model.sh @@ -1,15 +1,20 @@ #! /bin/sh + # Copyright 2018 Google Inc. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +if ! [ -f "$1" ]; then + printf 'Usage:\n %s META_JSON_FILE_PATH\n\n' "$0" >&2 + exit 1 +fi + set -e -x -test -f "$1" +SKIA="$(dirname "$0")/../.." go get -u go.skia.org/infra/golden/go/search -go run tools/skqp/make_gmkb.go "$1" platform_tools/android/apps/skqp/src/main/assets/gmkb - -git add platform_tools/android/apps/skqp/src/main/assets/gmkb +go run "${SKIA}/tools/skqp/make_gmkb.go" "$1" \ + "${SKIA}/platform_tools/android/apps/skqp/src/main/assets/gmkb" diff --git a/tools/skqp/upload_directory_contents.sh b/tools/skqp/upload_directory_contents.sh new file mode 100755 index 0000000000..b4bff31dc5 --- /dev/null +++ b/tools/skqp/upload_directory_contents.sh @@ -0,0 +1,45 @@ +#! /bin/sh + +# Copyright 2018 Google Inc. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +set -e + +EXTANT="$(mktemp "${TMPDIR:-/tmp}/extant.XXXXXXXXXX")" +gsutil ls gs://skia-skqp-assets/ | sed 's|^gs://skia-skqp-assets/||' > "$EXTANT" + +upload() { + MD5=$(md5sum < "$1" | head -c 32) + if ! grep -q "$MD5" "$EXTANT"; then + URL="gs://skia-skqp-assets/$MD5" + gsutil cp "$1" "$URL" > /dev/null 2>&1 + fi + echo $MD5 +} + +cd "$(dirname "$0")/../../platform_tools/android/apps/skqp/src/main/assets" + +rm -f files.checksum + +FILES="$(mktemp "${TMPDIR:-/tmp}/files.XXXXXXXXXX")" + +: > "$FILES" + +COUNT=$(find * -type f | wc -l) +INDEX=1 +find * -type f | sort | while IFS= read -r FILENAME; do + printf '\r %d / %d ' "$INDEX" "$COUNT" + INDEX=$(( $INDEX + 1)) + if ! [ -f "$FILENAME" ]; then + echo error [${FILENAME}] >&2; + exit 1; + fi + case "$FILENAME" in *\;*) echo bad filename: $FILENAME >&2; exit 1;; esac + MD5=$(upload "$FILENAME") + printf '%s;%s\n' "$MD5" "$FILENAME" >> "$FILES" +done + +upload "$FILES" > files.checksum + +rm "$FILES" "$EXTANT" |