1cb93a386Sopenharmony_ciSkQP 2cb93a386Sopenharmony_ci==== 3cb93a386Sopenharmony_ci 4cb93a386Sopenharmony_ciSkQP (Skia Quality Program) is a component of the Android CTS (Compatablity 5cb93a386Sopenharmony_ciTest Suite) that tests an Android device's GPU and OpenGLES & Vulkan drivers 6cb93a386Sopenharmony_ciusing Skia's existing unit & rendering tests. 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ciSee https://skia.org/dev/testing/skqp for pre-build APKs. 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ciHow to build and run the SkQP tests 11cb93a386Sopenharmony_ci----------------------------------- 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci1. Get the dependencies: 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci - You will need Java JDK 8, `git`, and `python`. 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci - Install Chromium's [depot\_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html). Add it to your `PATH`. 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git' 20cb93a386Sopenharmony_ci export PATH="${PWD}/depot_tools:${PATH}" 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ci - Install the [Android NDK](https://developer.android.com/ndk/downloads/). 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ci ( cd ~; unzip ~/Downloads/android-ndk-*.zip ) 25cb93a386Sopenharmony_ci ANDROID_NDK=$(ls -d ~/android-ndk-*) # Or wherever you installed the Android NDK. 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ci - Install the [Android SDK](https://developer.android.com/studio/#command-tools). 28cb93a386Sopenharmony_ci Set the `ANDROID_HOME` environment variable. 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ci mkdir ~/android-sdk 31cb93a386Sopenharmony_ci ( cd ~/android-sdk; unzip ~/Downloads/sdk-tools-*.zip ) 32cb93a386Sopenharmony_ci yes | ~/android-sdk/tools/bin/sdkmanager --licenses 33cb93a386Sopenharmony_ci export ANDROID_HOME=~/android-sdk # Or wherever you installed the Android SDK. 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci Put `adb` in your `PATH`. 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_ci export PATH="${PATH}:${ANDROID_HOME}/platform-tools" 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci2. Get the right version of Skia: 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci git clone https://skia.googlesource.com/skia.git 42cb93a386Sopenharmony_ci cd skia 43cb93a386Sopenharmony_ci git checkout origin/skqp/dev # or whatever release tag you need 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci3. Build the APK: 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci tools/git-sync-deps 48cb93a386Sopenharmony_ci tools/skqp/make_universal_apk 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci4. Build, install, and run. 51cb93a386Sopenharmony_ci 52cb93a386Sopenharmony_ci adb install -r out/skqp/skqp-universal-debug.apk 53cb93a386Sopenharmony_ci adb logcat -c 54cb93a386Sopenharmony_ci adb shell am instrument -w org.skia.skqp 55cb93a386Sopenharmony_ci 56cb93a386Sopenharmony_ci5. Monitor the output with: 57cb93a386Sopenharmony_ci 58cb93a386Sopenharmony_ci adb logcat TestRunner org.skia.skqp skia "*:S" 59cb93a386Sopenharmony_ci 60cb93a386Sopenharmony_ci Note the test's output path on the device. It will look something like this: 61cb93a386Sopenharmony_ci 62cb93a386Sopenharmony_ci 01-23 15:22:12.688 27158 27173 I org.skia.skqp: 63cb93a386Sopenharmony_ci output written to "/storage/emulated/0/Android/data/org.skia.skqp/files/output" 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ci6. Retrieve and view the report with: 66cb93a386Sopenharmony_ci 67cb93a386Sopenharmony_ci OUTPUT_LOCATION="/storage/emulated/0/Android/data/org.skia.skqp/files/output" 68cb93a386Sopenharmony_ci adb pull $OUTPUT_LOCATION /tmp/ 69cb93a386Sopenharmony_ci bin/sysopen /tmp/output/skqp_report/report.html 70cb93a386Sopenharmony_ci 71cb93a386Sopenharmony_ciRunning a single test 72cb93a386Sopenharmony_ci--------------------- 73cb93a386Sopenharmony_ci 74cb93a386Sopenharmony_ciTo run a single test, for example `gles_aarectmodes`: 75cb93a386Sopenharmony_ci 76cb93a386Sopenharmony_ci adb shell am instrument -e class 'org.skia.skqp.SkQPRunner#gles_aarectmodes' -w org.skia.skqp 77cb93a386Sopenharmony_ci 78cb93a386Sopenharmony_ciUnit tests can be run with the `unitTest_` prefix: 79cb93a386Sopenharmony_ci 80cb93a386Sopenharmony_ci adb shell am instrument -e class 'org.skia.skqp.SkQPRunner#unitTest_GrSurface -w org.skia.skqp 81cb93a386Sopenharmony_ci 82cb93a386Sopenharmony_ciRun as a non-APK executable 83cb93a386Sopenharmony_ci--------------------------- 84cb93a386Sopenharmony_ci 85cb93a386Sopenharmony_ci1. Follow steps 1-3 as above. 86cb93a386Sopenharmony_ci 87cb93a386Sopenharmony_ci2. Build the SkQP program, load files on the device, and run skqp: 88cb93a386Sopenharmony_ci 89cb93a386Sopenharmony_ci ninja -C out/skqp/arm skqp 90cb93a386Sopenharmony_ci python tools/skqp/run_skqp_exe out/skqp/arm 91