WGSL: Fix issue where swizzle L-values are generated (#5682) #361
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
name: CI | |
on: | |
push: | |
branches: [master] | |
paths-ignore: | |
- "docs/**" | |
- "LICENCE" | |
- "CONTRIBUTION.md" | |
- "README.md" | |
pull_request: | |
branches: [master] | |
paths-ignore: | |
- "docs/**" | |
- "LICENCE" | |
- "CONTRIBUTION.md" | |
- "README.md" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: [linux, macos, windows] | |
config: [debug, releaseWithDebugInfo] | |
compiler: [gcc, clang, cl] | |
platform: [x86_64, aarch64, wasm] | |
exclude: | |
# Default to x64, but aarch64 on osx | |
- { os: linux, platform: aarch64 } | |
- { os: windows, platform: aarch64 } | |
- { os: macos, platform: x86_64 } | |
- { os: linux, config: debug, platform: wasm } | |
- { os: windows, platform: wasm } | |
- { os: macos, platform: wasm } | |
# Unused compiler configs | |
- { os: linux, compiler: clang } | |
- { os: linux, compiler: cl } | |
- { os: windows, compiler: gcc } | |
- { os: windows, compiler: clang } | |
- { os: macos, compiler: gcc } | |
- { os: macos, compiler: cl } | |
include: | |
- { os: linux, runs-on: ubuntu-20.04 } | |
- { os: macos, runs-on: macos-latest } | |
- { os: windows, runs-on: windows-latest } | |
# Warnings are treated as errors by default. | |
# But we may want to disable it temporarily. | |
- { os: linux, warnings-as-errors: true } | |
- { os: macos, warnings-as-errors: true } | |
- { os: windows, warnings-as-errors: true } | |
# 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: releaseWithDebugInfo, test-category: full } | |
# default not full gpu tests | |
- full-gpu-tests: false | |
# The runners don't have a GPU by default except for the self-hosted ones | |
- has-gpu: false | |
# Self-hosted aarch64 build | |
- os: linux | |
config: releaseWithDebugInfo | |
compiler: gcc | |
platform: aarch64 | |
test-category: smoke | |
full-gpu-tests: false | |
runs-on: [self-hosted, Linux, ARM64] | |
has-gpu: true | |
# Self-hosted full gpu build | |
- os: windows | |
config: releaseWithDebugInfo | |
compiler: cl | |
platform: x86_64 | |
test-category: full | |
full-gpu-tests: true | |
runs-on: [Windows, self-hosted] | |
has-gpu: true | |
fail-fast: false | |
runs-on: ${{ matrix.runs-on }} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
fetch-depth: "0" | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
os: ${{matrix.os}} | |
compiler: ${{matrix.compiler}} | |
platform: ${{matrix.platform}} | |
config: ${{matrix.config}} | |
build-llvm: ${{ matrix.platform != 'wasm' }} | |
- name: Build Slang | |
run: | | |
if [[ "${{ matrix.platform }}" = "wasm" ]]; then | |
git clone https://github.com/emscripten-core/emsdk.git | |
pushd emsdk | |
./emsdk install latest | |
./emsdk activate latest | |
source ./emsdk_env.sh | |
popd | |
cmake --workflow --preset generators --fresh | |
mkdir generators | |
cmake --install build --prefix generators --component generators | |
emcmake cmake -DSLANG_GENERATORS_PATH=generators/bin --preset emscripten -DSLANG_SLANG_LLVM_FLAVOR=DISABLE | |
cmake --build --preset emscripten --config "$cmake_config" --target slang | |
[ -f "build.em/$cmake_config/lib/libslang.a" ] | |
[ -f "build.em/$cmake_config/lib/libcompiler-core.a" ] | |
[ -f "build.em/$cmake_config/lib/libcore.a" ] | |
else | |
if [[ "${{ matrix.os }}" =~ "windows" && "${{ matrix.config }}" != "release" && "${{ matrix.config }}" != "releaseWithDebugInfo" ]]; 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-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 | |
fi | |
- name: Test Slang | |
if: ${{ matrix.platform != 'wasm' }} | |
run: | | |
export SLANG_RUN_SPIRV_VALIDATION=1 | |
export SLANG_USE_SPV_SOURCE_LANGUAGE_UNKNOWN=1 | |
if [[ "${{matrix.full-gpu-tests}}" == "true" ]]; then | |
"$bin_dir/slang-test" \ | |
-use-test-server \ | |
-server-count 8 \ | |
-category ${{ matrix.test-category }} \ | |
-api all-cpu \ | |
-expected-failure-list tests/expected-failure-github.txt | |
elif [[ "${{matrix.has-gpu}}" == "true" ]]; then | |
"$bin_dir/slang-test" \ | |
-use-test-server \ | |
-category ${{ matrix.test-category }} \ | |
-api all-dx12 \ | |
-expected-failure-list tests/expected-failure-github.txt | |
else | |
"$bin_dir/slang-test" \ | |
-use-test-server \ | |
-category ${{ matrix.test-category }} \ | |
-api all-dx12 \ | |
-expected-failure-list tests/expected-failure-github.txt \ | |
-expected-failure-list tests/expected-failure-record-replay-tests.txt | |
fi | |
- name: Test Slang via glsl | |
if: ${{ matrix.full-gpu-tests && matrix.platform != 'wasm' }} | |
run: | | |
export SLANG_RUN_SPIRV_VALIDATION=1 | |
export SLANG_USE_SPV_SOURCE_LANGUAGE_UNKNOWN=1 | |
"$bin_dir/slang-test" \ | |
-use-test-server \ | |
-server-count 8 \ | |
-category ${{ matrix.test-category }} \ | |
-emit-spirv-via-glsl \ | |
-api vk \ | |
-expected-failure-list tests/expected-failure.txt | |
- 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}}/**/ZIP/slang/* |