1# ANGLE + dEQP 2 3drawElements (dEQP) is a very robust and comprehensive set of open-source 4tests for GLES2, GLES3+ and EGL. They provide a huge net of coverage for 5almost every GL API feature. ANGLE by default builds dEQP testing targets for 6testing against GLES 2, GLES 3, EGL, and GLES 3.1 (on supported platforms). 7 8## How to build dEQP 9 10You should have dEQP as a target if you followed the [DevSetup](DevSetup.md) 11instructions. Some of the current targets are: 12 13 * `angle_deqp_egl_tests` for EGL 1.x tests 14 * `angle_deqp_gles2_tests` for GLES 2.0 tests 15 * `angle_deqp_gles3_tests` for GLES 3.0 tests 16 * `angle_deqp_gles31_tests` for GLES 3.1 tests 17 18## How to use dEQP 19 20Note: 21To run an individual test, use the `--gtest_filter` argument. 22It supports simple wildcards. For example: `--gtest_filter=dEQP-GLES2.functional.shaders.linkage.*`. 23 24The tests lists are sourced from the Android CTS mains in 25`third_party/VK-GL-CTS/src/android/cts/main`. See `gles2-main.txt`, 26`gles3-main.txt`, `gles31-main.txt` and `egl-main.txt`. 27 28If you're running a full test suite, it might take very long time. Running in 29Debug is only useful to isolate and fix particular failures, Release will give 30a better sense of total passing rate. 31 32### Choosing a Renderer 33 34By default ANGLE tests with Vulkan, except on Apple platforms where OpenGL is used. 35To specify the exact platform for ANGLE + dEQP, use the arguments: 36 37 * `--deqp-egl-display-type=angle-d3d11` for D3D11 (highest available feature level) 38 * `--deqp-egl-display-type=angle-d3d9` for D3D9 39 * `--deqp-egl-display-type=angle-d3d11-fl93` for D3D11 Feature level 9_3 40 * `--deqp-egl-display-type=angle-gl` for OpenGL Desktop (OSX, Linux and Windows) 41 * `--deqp-egl-display-type=angle-gles` for OpenGL ES (Android/ChromeOS, some Windows platforms) 42 * `--deqp-egl-display-type=angle-metal` for Metal (Mac) 43 * `--deqp-egl-display-type=angle-swiftshader` for Vulkan with SwiftShader as driver (Android, Linux, Mac, Windows) 44 * `--deqp-egl-display-type=angle-vulkan` for Vulkan (Android, Linux, Windows) 45 46The flag `--use-angle=X` has the same effect as `--deqp-egl-display-type=angle-X`. 47 48### Check your results 49 50If run from Visual Studio 2015, dEQP generates a test log to 51`out/sln/obj/src/tests/TestResults.qpa`. To view the test log information, you'll need to 52use the open-source GUI 53[Cherry](https://android.googlesource.com/platform/external/cherry). ANGLE 54checks out a copy of Cherry to `angle/third_party/cherry` when you sync with 55gclient. Note, if you are using ninja or another build system, the qpa file 56will be located in your working directory. 57 58See the [official Cherry README](https://android.googlesource.com/platform/external/cherry/+/master/README) 59for instructions on how to run Cherry on Linux or Windows. 60 61### GoogleTest, ANGLE and dEQP 62 63ANGLE also supports the same set of targets built with GoogleTest, for running 64on the bots. We don't currently recommend using these for local debugging, but 65we do maintain lists of test expectations in `src/tests/deqp_support` (see 66[Handling Test Failures](TestingAndProcesses.md)). When 67you fix tests, please remove the suppression(s) from the relevant files! 68 69### Running dEQP on Android 70 71When you only need to run a few tests with `--gtest_filter` you can use Android wrappers such as `angle_deqp_egl_tests` directly but beware that Android test runner wipes data by default (try `--skip-clear-data`). 72 73Running the tests not using the test runner is tricky, but is necessary in order to get a complete TestResults.qpa from the dEQP tests when running many tests (since the runner shards the tests, only the results of the last shard will be available when using the test runner). First, use the runner to install the APK, test data and test expectations on the device. After the tests start running, the test runner can be stopped with Ctrl+C. Then, run 74``` 75adb shell am start -a android.intent.action.MAIN -n org.chromium.native_test/.NativeUnitTestNativeActivity -e org.chromium.native_test.NativeTest.StdoutFile /sdcard/chromium_tests_root/out.txt 76``` 77After the tests finish, get the results with (requires `adb root`) 78``` 79adb pull /data/data/com.android.angle.test/TestResults.qpa . 80``` 81Note: this location might change, one can double-check with `adb logcat -d | grep qpa`. 82