Skip to content

Glsl.meta.slang atomic #3587 #45

Glsl.meta.slang atomic #3587

Glsl.meta.slang atomic #3587 #45

Workflow file for this run

name: CI (CMake)
on:
push:
branches: [master]
pull_request:
branches: [master]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
# Until we switch to CMake fully, just run something minimal
include:
- os: linux
compiler: gcc
platform: x64
config: debug
warnings-as-errors: false
test-category: smoke
full-gpu-tests: false
runs-on: ubuntu-20.04
# os: [linux, macos, windows]
# compiler: ['gcc', 'clang', 'cl']
# config: ['debug', 'release']
# platform: ['x64']
# full-gpu-tests: [false]
# exclude:
# # Exclude invalid or undesired os/compiler
# - { os: linux, compiler: cl }
# - { os: macos, compiler: cl }
# - { os: macos, compiler: gcc }
# - { os: windows, compiler: gcc }
# - { os: windows, compiler: clang }
# # or os/config combinations
# - { os: macos, config: debug }
# include:
# - { os: linux, runs-on: ubuntu-20.04 }
# - { os: windows, runs-on: windows-latest }
# - { os: macos, runs-on: macos-latest }
# # Set a test category depending on the config, smoke by default,
# # quick or full conditionally otherwise
# - test-category: smoke
# - { os: windows, test-category: quick }
# - { config: release, test-category: full }
# # Only CL has werror
# - warnings-as-errors: false
# - { compiler: cl, warnings-as-errors: true }
# # Self-hosted aarch64 build
# - os: linux
# compiler: gcc
# platform: aarch64
# config: release
# warnings-as-errors: false
# test-category: smoke
# full-gpu-tests: false
# runs-on: [self-hosted, Linux, ARM64]
# # Self-hosted full gpu build
# - os: windows
# compiler: cl
# platform: x64
# config: release
# warnings-as-errors: false
# test-category: full
# full-gpu-tests: true
# runs-on: [Windows, self-hosted]
fail-fast: false
runs-on: ${{ matrix.runs-on }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
fetch-depth: '0'
- name: Setup
uses: ./.github/actions/common-setup
with:
os: ${{matrix.os}}
runs-on: ${{matrix.runs-on}}
compiler: ${{matrix.compiler}}
platform: ${{matrix.platform}}
config: ${{matrix.config}}
- name: Build Slang
run: |
if [[ "${{ matrix.os }}" =~ "windows" && "${{ matrix.config }}" != "release" ]]; then
# Doing a debug build will try to link against a release built llvm, this
# is a problem on Windows, so make slang-llvm in release build and use
# that as though it's a fetched binary via these presets.
cmake --workflow --preset slang-llvm
# Configure, pointing to our just-generated slang-llvm archive
cmake --preset default --fresh \
-DSLANG_SLANG_LLVM_FLAVOR=FETCH_BINARY \
-DSLANG_SLANG_LLVM_BINARY_URL=$(pwd)/build/dist-release/slang-slang-llvm.zip \
-DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}}
cmake --workflow --preset "${{matrix.config}}"
else
# Otherwise, use the system llvm we have just build or got from the
# cache in the setup phase
cmake --preset default --fresh \
-DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM \
-DCMAKE_COMPILE_WARNING_AS_ERROR=${{matrix.warnings-as-errors}}
cmake --workflow --preset "${{matrix.config}}"
fi
- name: Test Slang
run: |
export SLANG_RUN_SPIRV_VALIDATION=1
failed=0
if [[ "${{matrix.full-gpu-tests}}" == "true" ]]; then
$bin_dir/slang-test \
-use-test-server \
-server-count 8 \
-category ${{ matrix.test-category }} \
-api all-cpu ||
failed=1
$bin_dir/slang-test \
-use-test-server \
-server-count 8 \
-emit-spirv-directly \
-api vk \
-category ${{ matrix.test-category }} \
-expected-failure-list tests/expected-failure.txt ||
failed=1
else
$bin_dir/slang-test \
-use-test-server \
-api all-dx12 \
-category ${{ matrix.test-category }} \
-expected-failure-list tests/expected-failure-github.txt ||
failed=1
fi
exit $failed
- uses: actions/upload-artifact@v3
if: ${{ ! matrix.full-gpu-tests }}
with:
name: slang-build-${{matrix.os}}-${{matrix.platform}}-${{matrix.compiler}}-${{matrix.config}}
# The install directory used in the packaging step
path: build/dist-${{matrix.config}}/**/slang/*