rs2spirv_driver.sh revision bfea58a0aa9fef0a6799868398f8052e08a4490a
16749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Copyright 2016, The Android Open Source Project
26749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
36749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Licensed under the Apache License, Version 2.0 (the "License");
46749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# you may not use this file except in compliance with the License.
56749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# You may obtain a copy of the License at
66749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
76749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#     http://www.apache.org/licenses/LICENSE-2.0
86749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#
96749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# Unless required by applicable law or agreed to in writing, software
106749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# distributed under the License is distributed on an "AS IS" BASIS,
116749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# See the License for the specific language governing permissions and
136749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni# limitations under the License.
146749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
156749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#!/bin/bash
166749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
17bfea58a0aa9fef0a6799868398f8052e08a4490aDavid GrossME=$0
18bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
19bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossfunction usage {
20bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  echo >&2 "$ME: $*: Expected [-d|--dump] [-t|--trace] <SPIRV_TOOLS_PATH> <SCRIPT_NAME> <OUTPUT_DIR>)"
216749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni  exit 2
22bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross}
23bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
24bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossfunction dump {
25bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  if [[ -z "${DUMP:-}" ]] ; then
26bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross    return 0
27bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  fi
28bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  eval rs2spirv "$output_folder/$script.spv" -print-as-words
29bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  return $?
30bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross}
31bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
32bfea58a0aa9fef0a6799868398f8052e08a4490aDavid GrossDUMP=
33bfea58a0aa9fef0a6799868398f8052e08a4490aDavid GrossTRACE=
34bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
35bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grosswhile [[ "${1:-}" = -* ]] ; do
36bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  case "$1" in
37bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross    -d|--dump)
38bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      DUMP=t
39bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      ;;
40bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross    -t|--trace)
41bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      TRACE=t
42bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      ;;
43bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross    *)
44bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      usage "Unexpected option \"$1\""
45bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross      ;;
46bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  esac
47bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  shift
48bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossdone
49bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
50bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossif [[ $# -ne 3 ]] ; then
51bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  usage "Bad argument count (got $#)"
52bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossfi
53bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
54bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossif [[ -n "${TRACE:-}" ]] ; then
55bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  set -x
566749f541c20e86f5deb6fd421ed5849ef43c275cYang Nifi
576749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
586749f541c20e86f5deb6fd421ed5849ef43c275cYang NiAND_HOME=$ANDROID_BUILD_TOP
596749f541c20e86f5deb6fd421ed5849ef43c275cYang NiSPIRV_TOOLS_PATH=$1
606749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
616749f541c20e86f5deb6fd421ed5849ef43c275cYang Niscript_name="$2"
626749f541c20e86f5deb6fd421ed5849ef43c275cYang Niscript=${2%.*} # Remove extension.
636749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
646749f541c20e86f5deb6fd421ed5849ef43c275cYang Nioutput_folder="$3"
656749f541c20e86f5deb6fd421ed5849ef43c275cYang Nimkdir -p $output_folder
666749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
676749f541c20e86f5deb6fd421ed5849ef43c275cYang Nieval llvm-rs-cc -o "$output_folder" -S -emit-llvm -Wall -Werror -target-api 24 \
686749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni  -I "$AND_HOME/external/clang/lib/Headers" -I "$AND_HOME/frameworks/rs/scriptc" \
69bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross  "$script_name" &&
70bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grosseval llvm-as "$output_folder/bc32/$script.ll" -o "$output_folder/$script.bc" &&
716749f541c20e86f5deb6fd421ed5849ef43c275cYang Nieval rs2spirv "$output_folder/$script.bc" -o "$output_folder/$script.rs.spv" \
72bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross              -wo "$output_folder/$script.w.spt" &&
736749f541c20e86f5deb6fd421ed5849ef43c275cYang Nieval "$SPIRV_TOOLS_PATH/spirv-dis" "$output_folder/$script.rs.spv" \
74bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross              --no-color > "$output_folder/$script.rs.spt" &&
756749f541c20e86f5deb6fd421ed5849ef43c275cYang Nieval rs2spirv -o "$output_folder/$script.spt" -lk "$output_folder/$script.rs.spt" \
76bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross              -lw "$output_folder/$script.w.spt" &&
776749f541c20e86f5deb6fd421ed5849ef43c275cYang Nieval "$SPIRV_TOOLS_PATH/spirv-as" "$output_folder/$script.spt" \
78bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross              -o "$output_folder/$script.spv" &&
79bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossdump &&
80bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grosseval "$SPIRV_TOOLS_PATH/spirv-val" "$output_folder/$script.spv" &&
81bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Gross
82bfea58a0aa9fef0a6799868398f8052e08a4490aDavid Grossexit $?
83