skia2/tools/skqp
John Stiles c5ca065411 Add CurrestTestHarness helper method.
This lets us differentiate SkQP from other testing harnesses (like DM or
Viewer) at runtime.

This allows us to change strictness or deactivate tests when SkQP is
running. Previously we had a macro SK_BUILD_FOR_SKQP for this, but this
did not work on a local skqp binary; it only activated when compiling
for Android.

Change-Id: I7334e04ea1eddda783a5d2f26699edd20828f81a
Bug: skia:13037
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/518939
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-03-10 18:05:28 +00:00
..
src Add CurrestTestHarness helper method. 2022-03-10 18:05:28 +00:00
clean_app.sh Reduce scope of SkQP to pass/fail runs of GMs and UnitTests 2022-01-04 18:07:48 +00:00
create_apk.py Build the NDK compliant shared library to be used by JNI in SkQP. 2022-01-10 17:11:48 +00:00
docker_build_universal_apk.sh SkQP: Docker compile helper script respects SKQP_OUTPUT_DIR 2019-08-08 14:11:58 +00:00
docker_run_apk.sh SkQP: new docker test code 2019-04-19 18:50:03 +00:00
make_apk.sh SkQP: split make_apk script into create_apk and make_apk 2019-08-20 15:08:03 +00:00
make_universal_apk tools/skqp/make_universal_apk -> python 2018-11-01 16:48:59 +00:00
make_universal_apk.py Cleanup SkQP build scripts 2022-01-31 15:43:48 +00:00
README.md SkQP: Fix document about running as native executable 2020-04-21 14:48:54 +00:00
run_apk.sh Cleanup SkQP build scripts 2022-01-31 15:43:48 +00:00
run_skqp_exe Remove unused argument from skqp command-line tool. 2022-03-07 23:44:59 +00:00
setup_resources SkQP: remove skia_embed_resources option 2018-01-30 19:24:15 +00:00
test_apk.sh SkQP: new docker test code 2019-04-19 18:50:03 +00:00

SkQP

SkQP (Skia Quality Program) is a component of the Android CTS (Compatablity Test Suite) that tests an Android device's GPU and OpenGLES & Vulkan drivers using Skia's existing unit & rendering tests.

See https://skia.org/dev/testing/skqp for pre-build APKs.

How to build and run the SkQP tests

  1. Get the dependencies:

    • You will need Java JDK 8, git, and python.

    • Install Chromium's depot_tools. Add it to your PATH.

      git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git'
      export PATH="${PWD}/depot_tools:${PATH}"
      
    • Install the Android NDK.

      ( cd ~; unzip ~/Downloads/android-ndk-*.zip )
      ANDROID_NDK=$(ls -d ~/android-ndk-*)   # Or wherever you installed the Android NDK.
      
    • Install the Android SDK. Set the ANDROID_HOME environment variable.

      mkdir ~/android-sdk
      ( cd ~/android-sdk; unzip ~/Downloads/sdk-tools-*.zip )
      yes | ~/android-sdk/tools/bin/sdkmanager --licenses
      export ANDROID_HOME=~/android-sdk  # Or wherever you installed the Android SDK.
      

      Put adb in your PATH.

      export PATH="${PATH}:${ANDROID_HOME}/platform-tools"
      
  2. Get the right version of Skia:

    git clone https://skia.googlesource.com/skia.git
    cd skia
    git checkout origin/skqp/dev  # or whatever release tag you need
    
  3. Build the APK:

    tools/git-sync-deps
    tools/skqp/make_universal_apk
    
  4. Build, install, and run.

    adb install -r out/skqp/skqp-universal-debug.apk
    adb logcat -c
    adb shell am instrument -w org.skia.skqp
    
  5. Monitor the output with:

    adb logcat TestRunner org.skia.skqp skia "*:S"
    

    Note the test's output path on the device. It will look something like this:

    01-23 15:22:12.688 27158 27173 I org.skia.skqp:
    output written to "/storage/emulated/0/Android/data/org.skia.skqp/files/output"
    
  6. Retrieve and view the report with:

    OUTPUT_LOCATION="/storage/emulated/0/Android/data/org.skia.skqp/files/output"
    adb pull $OUTPUT_LOCATION /tmp/
    bin/sysopen /tmp/output/skqp_report/report.html
    

Running a single test

To run a single test, for example gles_aarectmodes:

adb shell am instrument -e class 'org.skia.skqp.SkQPRunner#gles_aarectmodes' -w org.skia.skqp

Unit tests can be run with the unitTest_ prefix:

adb shell am instrument -e class 'org.skia.skqp.SkQPRunner#unitTest_GrSurface -w org.skia.skqp

Run as a non-APK executable

  1. Follow steps 1-3 as above.

  2. Build the SkQP program, load files on the device, and run skqp:

    ninja -C out/skqp/arm skqp
    python tools/skqp/run_skqp_exe out/skqp/arm