# Lazy jobs running on trunk 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: "Validate Shaders: Dota2" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - 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: "Validate Shaders: Sascha Willems Vulkan Tutorial" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - 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: "Validate Shaders: dneto0 spirv-samples" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - 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