xref: /third_party/skia/tools/skqp/README.md (revision cb93a386)
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