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