Integration of Naga into Repo #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Lazy jobs running on master post merges. | |
name: lazy | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/lazy.yml' | |
push: | |
branches: [trunk] | |
env: | |
CARGO_INCREMENTAL: false | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: full | |
jobs: | |
parse-dota2: | |
name: Parse Dota2 shaders | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: mkdir naga/data | |
- name: Download shaders | |
run: curl https://user.fm/files/v2-5573e18b9f03f42c6ae53c392083da35/dota2-shaders.zip -o naga/data/all.zip | |
- name: Unpack shaders | |
run: | | |
cd naga/data | |
unzip all.zip | |
- name: Build Naga | |
run: | | |
cd naga | |
cargo build --release -p naga-cli | |
- name: Convert shaders | |
run: | | |
cd naga | |
for file in data/*.spv ; do echo "Translating" ${file} && target/release/naga --validate 27 ${file} ${file}.metal; done | |
parse-vulkan-tutorial-shaders: | |
name: Parse Sascha Willems Vulkan tutorial shaders | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download shaders | |
run: cd naga && git clone https://github.com/SaschaWillems/Vulkan.git | |
- name: Build Naga | |
run: | | |
cd naga | |
cargo build --release -p naga-cli | |
- name: Convert metal shaders | |
run: | | |
# No needed to stop workflow if we can't validate one file | |
set +e | |
cd naga | |
touch counter | |
SUCCESS_RESULT_COUNT=0 | |
FILE_COUNT=0 | |
mkdir -p out | |
find "Vulkan/data/shaders/glsl/" -name '*.spv' | while read fname; | |
do | |
echo "Convert: $fname" | |
FILE_COUNT=$((FILE_COUNT+1)) | |
../target/release/naga --validate 27 $(realpath ${fname}) out/$(basename ${fname}).metal | |
if [[ $? -eq 0 ]]; then | |
SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1)) | |
fi | |
echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter | |
done | |
cat counter | |
dneto0_spirv-samples: | |
name: Parse dneto0 spirv-samples | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download shaders | |
run: | | |
cd naga | |
git clone https://github.com/dneto0/spirv-samples.git | |
- name: Build Naga | |
run: | | |
cargo build --release -p naga-cli | |
- name: Install spirv-tools | |
run: | | |
cd naga | |
wget -q https://storage.googleapis.com/spirv-tools/artifacts/prod/graphics_shader_compiler/spirv-tools/linux-clang-release/continuous/1489/20210629-121459/install.tgz | |
tar zxf install.tgz | |
./install/bin/spirv-as --version | |
- name: Compile spv from spvasm | |
run: | | |
cd naga/spirv-samples | |
mkdir -p spv | |
find "./spvasm" -name '*.spvasm' | while read fname; | |
do | |
echo "Convert to spv with spirv-as: $fname" | |
../install/bin/spirv-as --target-env spv1.3 $(realpath ${fname}) -o ./spv/$(basename ${fname}).spv | |
done; | |
- name: Validate spv and generate wgsl | |
run: | | |
set +e | |
cd naga/spirv-samples | |
SUCCESS_RESULT_COUNT=0 | |
FILE_COUNT=0 | |
mkdir -p spv | |
mkdir -p wgsl | |
echo "==== Validate spv and generate wgsl ====" | |
rm -f counter | |
touch counter | |
find "./spv" -name '*.spv' | while read fname; | |
do | |
echo "Convert: $fname" | |
FILE_COUNT=$((FILE_COUNT+1)) | |
../../target/release/naga --validate 27 $(realpath ${fname}) ./wgsl/$(basename ${fname}).wgsl | |
if [[ $? -eq 0 ]]; then | |
SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1)) | |
fi | |
echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter | |
done | |
cat counter | |
- name: Validate output wgsl | |
run: | | |
set +e | |
cd naga/spirv-samples | |
SUCCESS_RESULT_COUNT=0 | |
FILE_COUNT=0 | |
rm -f counter | |
touch counter | |
find "./wgsl" -name '*.wgsl' | while read fname; | |
do | |
echo "Validate: $fname" | |
FILE_COUNT=$((FILE_COUNT+1)) | |
../../target/release/naga --validate 27 $(realpath ${fname}) | |
if [[ $? -eq 0 ]]; then | |
SUCCESS_RESULT_COUNT=$((SUCCESS_RESULT_COUNT + 1)) | |
fi | |
echo "Result: $(expr $FILE_COUNT - $SUCCESS_RESULT_COUNT) / $FILE_COUNT" > counter | |
done | |
cat counter | |
check-snapshots-extra: | |
name: Check snapshots (validated or not) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install cargo-nextest | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-nextest | |
- name: Test minimal (without span) | |
run: | | |
cd naga | |
cargo nextest run -p naga --features validate | |
- name: Test all (without validation) | |
run: | | |
cd naga | |
cargo nextest run -p naga --features wgsl-in,wgsl-out,glsl-in,glsl-out,spv-in,spv-out,msl-out,hlsl-out,dot-out | |
- name: Check snapshots (without validation) | |
run: | | |
cd naga | |
git diff --exit-code -- tests/out |