#!/bin/bash die() { echo "$1" exit 255 } readonly -A CHROMEOS_DEQP_BIN=( [vk]=/usr/local/deqp/external/vulkancts/modules/vulkan/deqp-vk [egl]=/usr/local/deqp/modules/egl/deqp-egl [gles2]=/usr/local/deqp/modules/gles2/deqp-gles2 [gles3]=/usr/local/deqp/modules/gles3/deqp-gles3 [gles31]=/usr/local/deqp/modules/gles31/deqp-gles31 ) readonly -A LINUX_DEQP_BIN=( [vk]=build/external/vulkancts/modules/vulkan/deqp-vk [egl]=build/modules/egl/deqp-egl [gles2]=build/modules/gles2/deqp-gles2 [gles3]=build/modules/gles3/deqp-gles3 [gles31]=build/modules/gles31/deqp-gles31 ) readonly -A CHROMEOS_DEQP_CASELIST=( [vk]=/usr/local/deqp/caselists/vk.txt [egl]=/usr/local/deqp/caselists/egl.txt [gles2]=/usr/local/deqp/caselists/gles2.txt [gles3]=/usr/local/deqp/caselists/gles3.txt [gles31]=/usr/local/deqp/caselists/gles31.txt ) readonly -A LINUX_DEQP_CASELIST=( [vk]=external/vulkancts/mustpass/main/vk-default.txt [egl]=android/cts/master/egl-master.txt [gles2]=android/cts/main/gles2-master.txt [gles3]=android/cts/main/gles3-master.txt [gles31]=android/cts/main/gles31-master.txt ) readonly CHROMEOS_TESTLOG_TO_XML=/usr/local/deqp/executor/testlog-to-xml readonly LINUX_TESTLOG_TO_XML=build/executor/testlog-to-xml readonly -a DEQP_OPTIONS=( --deqp-surface-width=256 --deqp-surface-height=256 --deqp-surface-type=pbuffer --deqp-gl-config-name=rgba8888d24s8ms0 --deqp-visibility=hidden ) if [[ $# -eq 1 ]]; then if [[ $1 == dEQP-* ]]; then single_test="$1" api="${1%%.*}" api="${api#dEQP-}" api="${api,,}" else api="$1" fi case "${api}" in vk|egl|gles2|gles3|gles31) # shellcheck source=/etc/os-release source <(grep '^ID=' /etc/os-release) if [[ $ID == chromeos ]]; then DEQP_BIN="${CHROMEOS_DEQP_BIN[$api]}" CASELIST="${CHROMEOS_DEQP_CASELIST[$api]}" TESTLOG_TO_XML="${CHROMEOS_TESTLOG_TO_XML}" else DEQP_BIN="${LINUX_DEQP_BIN[$api]}" CASELIST="${LINUX_DEQP_CASELIST[$api]}" TESTLOG_TO_XML="${LINUX_TESTLOG_TO_XML}" fi ;; *) die "Argument must be one of vk|egl|gles2|gles3|gles31 or a dEQP-* test name" ;; esac else DEQP_BIN="$1" CASELIST="$2" TESTLOG_TO_XML="$3" fi if [[ ! -x $DEQP_BIN ]]; then die "deqp binary '$DEQP_BIN' does not exist or is not executable" fi DEQP_BIN="$(realpath "${DEQP_BIN}")" if [[ -n $single_test ]]; then cd "$(dirname "${DEQP_BIN}")" || die "can't cd" exec "${DEQP_BIN}" "${DEQP_OPTIONS[@]}" -n "${single_test}" fi if [[ ! -r $CASELIST ]]; then die "Caselist '$CASELIST' does not exist or is not readable" fi CASELIST="$(realpath "${CASELIST}")" if [[ ! -x $TESTLOG_TO_XML ]]; then die "testlog-to-xml binary '$TESTLOG_TO_XML' does not exist or is not executable" fi TESTLOG_TO_XML="$(realpath "${TESTLOG_TO_XML}")" if [[ -e $OUTPUT_DIR ]]; then die "Output directory '$OUTPUT_DIR' already exists" fi OUTPUT_DIR=$(basename "${DEQP_BIN}") DEQP_RUNNER_ARGS=( --caselist "${CASELIST}" --deqp "${DEQP_BIN}" --testlog-to-xml "${TESTLOG_TO_XML}" --output "${OUTPUT_DIR}" ) exec deqp-runner run "${DEQP_RUNNER_ARGS[@]}" -- "${DEQP_OPTIONS[@]}"