1VK-GL-CTS README 2=========== 3 4This repository contains Khronos Conformance Testing Suite called VK-GL-CTS 5which originated from dEQP (drawElements Quality Program). 6VK-GL-CTS contains tests for several graphics APIs, including 7OpenGL, OpenGL ES, EGL, Vulkan, and Vulkan SC. 8 9Documentation 10------------- 11 12Up-to-date documentation for VK-GL-CTS is available at: 13 14* [The VK-GL-CTS wiki for Khronos members](https://gitlab.khronos.org/Tracker/vk-gl-cts/wikis/home) 15* [The VK-GL-CTS wiki for non-Khronos members](https://github.com/KhronosGroup/VK-GL-CTS/wiki) 16 17The .qpa logs generated by the conformance tests may contain embedded PNG images of the results. 18These can be viewed with `scripts/qpa_image_viewer.html`, by opening the file 19with a web browser and following its instructions, or using the 20[Cherry](https://android.googlesource.com/platform/external/cherry/) 21tool. 22 23Khronos Vulkan Conformance Tests 24-------------------------------- 25 26This repository includes Khronos Vulkan CTS under `external/vulkancts` directory. 27For more information see [Vulkan CTS README](external/vulkancts/README.md). 28 29Khronos OpenGL / OpenGL ES Conformance Tests 30-------------------------------- 31 32This repository includes Khronos OpenGL / OpenGL ES CTS under `external/openglcts` directory. 33For more information see [OpenGL / OpenGL ES CTS README](external/openglcts/README.md). 34 35Selecting a subset of targets to build by default 36-------------------------------- 37 38When configuring the source code of VK-GL-CTS for running either Vulkan 39Conformance Tests or OpenGL(ES) Conformance Tests as described above, CMake will 40generate build files that, by default on desktop platforms, will build every 41possible project binary. This may be undesirable due the amount of time and disk 42space needed to perform the build. 43 44One way of selecting only a subset of the targets to be built is using CMake's 45target selection mechanism. For example, the following command will only build 46`deqp-vk`, the main Vulkan Conformance Tests binary: 47 48``` 49cmake --build BUILD_DIRECTORY --target deqp-vk 50``` 51 52When building only a subset of targets is the preferred default behavior for a 53given working copy or build directory, there's a second target selection 54mechanism that can be used to avoid passing the `--target` option every time: 55the `SELECTED_BUILD_TARGETS` CMake option. If set to a non-empty value, only the 56targets listed in that configuration option, separated by spaces, will be built. 57 58For example, passing `-DSELECTED_BUILD_TARGETS="deqp-vk deqp-vksc"` when 59configuring the project will make `cmake --build BUILD_DIRECTORY` act as if it 60had been passed `--target deqp-vk --target deqp-vksc` as additional arguments. 61 62**IMPORTANT**: Target subset selection may not have been thoroughly tested in 63all enviroments and situations, and it does not replace the instructions given 64for the purposes of creating a conformance submission. 65 66ANGLE for Android 67-------------------------------- 68 69ANGLE can be built for Android by following the instructions 70[here](https://chromium.googlesource.com/angle/angle.git/+/HEAD/doc/DevSetup.md#building-angle-for-android). 71 72The resulting ANGLE shared object libraries can be linked against and embedded into `dEQP.apk` with 73the `--angle-path` option. This will cause `dEQP.apk` to use the ANGLE libraries for OpenGL ES 74calls, rather than the native drivers. 75 76An ABI must be specified and the directory structure containing the ANGLE shared objects must match 77it so the build system can find the correct `*.so` files. 78 79Assuming ANGLE shared objects are generated into `~/chromium/src/out/Release/` and `dEQP.apk` will 80be generated with `--abis arm64-v8a`, issue the following commands: 81 82 cd ~/chromium/src/out/Release/ 83 mkdir arm64-v8a && cd arm64-v8a 84 cp ../lib*_angle.so . 85 86The `--angle-path ~/chromium/src/out/Release/` option can then be used to link against and embed the 87ANGLE shared object files. The full command would be: 88 89 python scripts/android/build_apk.py --sdk <path to Android SDK> --ndk <path to Android NDK> --abis arm64-v8a --angle-path ~/chromium/src/out/Release/ 90