forked from SaschaWillems/Vulkan
-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (136 loc) · 6.72 KB
/
Copy pathrust.yml
File metadata and controls
150 lines (136 loc) · 6.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: Rust CI
on:
push:
branches:
- master
pull_request:
branches:
- master
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: Test Rust Shaders - ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
name: Ubuntu
- os: windows-latest
name: Windows
- os: macos-latest
name: macOS-MoltenVK
use_moltenvk: true
- os: macos-latest
name: macOS-SwiftShader
use_swiftshader: true
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Vulkan SDK
if: ${{ runner.os != 'Linux' }}
shell: bash
env:
VULKAN_SDK_VERSION: 1.3.250.1
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/mac/vulkansdk-macos-$VULKAN_SDK_VERSION.dmg?Human=true" -O vulkan-sdk.dmg
hdiutil attach vulkan-sdk.dmg
sudo /Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION --accept-licenses --default-answer --confirm-command install
hdiutil detach /Volumes/vulkansdk-macos-$VULKAN_SDK_VERSION
echo "VULKAN_SDK_PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION" >> $GITHUB_ENV
echo "VULKAN_SDK=$VULKAN_SDK_PATH/macOS" >> $GITHUB_ENV
echo "DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/windows/VulkanSDK-$VULKAN_SDK_VERSION-Installer.exe?Human=true" -O vulkan-sdk.exe
./vulkan-sdk.exe --accept-licenses --default-answer --confirm-command install
echo "VULKAN_SDK=C:\\VulkanSDK\\$VULKAN_SDK_VERSION" >> $GITHUB_ENV
echo "PATH=$VULKAN_SDK\\Bin;$PATH" >> $GITHUB_ENV
fi
- if: ${{ runner.os == 'Linux' }}
name: Install Vulkan SDK and software renderers on Linux
run: |
sudo apt-get update -y -qq
sudo add-apt-repository ppa:kisak/turtle -y
sudo apt-get update
sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers vulkan-tools libvulkan-dev
- if: ${{ matrix.use_moltenvk == true }}
name: Setup MoltenVK on macOS
run: |
echo "VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
- name: Install SwiftShader
if: ${{ matrix.use_swiftshader == true || runner.os == 'Linux' || runner.os == 'Windows' }}
env:
SWIFTSHADER_WINDOWS_URL: https://github.com/nikitalita/swiftshader-dist-win/releases/download/2021-12-09_00-02/swiftshader-2021-12-09_00-02-subzero.7z.zip
SWIFTSHADER_LINUX_URL: https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
SWIFTSHADER_MACOS_URL: https://github.com/nikitalita/swiftshader-builds/releases/download/1.0.0/swiftshader-vulkan-r6216.7997cbc34b-macos-10.15.zip
shell: bash
run: |
export SWIFTSHADER_DEST_DIR='${{ github.workspace }}/swiftshader'
mkdir -p $SWIFTSHADER_DEST_DIR
if [ "$RUNNER_OS" == "Linux" ]; then
wget ${{ env.SWIFTSHADER_LINUX_URL }} -O swiftshader.zip
unzip swiftshader.zip -d $SWIFTSHADER_DEST_DIR
rm swiftshader.zip
SWIFTSHADER_LIB_NAME="./libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$SWIFTSHADER_LIB_NAME|" $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ]; then
wget ${{ env.SWIFTSHADER_MACOS_URL }} -O swiftshader.zip
unzip swiftshader.zip -d temp-ss-dl/
rm swiftshader.zip
mv temp-ss-dl/lib/libvk_swiftshader.dylib $SWIFTSHADER_DEST_DIR/libvk_swiftshader.dylib
mv temp-ss-dl/share/vulkan/icd.d/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
rm -rf temp-ss-dl/
sed -i '' "s/..\/..\/..\/lib\/libvk_swiftshader.dylib/.\/libvk_swiftshader.dylib/" "$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json"
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install --yes 7zip wget
wget -O swiftshader.zip ${{env.SWIFTSHADER_WINDOWS_URL}}
7z x swiftshader.zip -otemp-ss-dl/
rm swiftshader.zip
mv temp-ss-dl/swiftshader-*/swiftshader-*.7z temp-ss-dl/swiftshader.7z
7z x temp-ss-dl/swiftshader.7z -otemp-ss-dl/swiftshader
rm temp-ss-dl/swiftshader.7z
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader.dll $SWIFTSHADER_DEST_DIR/vk_swiftshader.dll
mv temp-ss-dl/swiftshader/x64/bin/vulkan-1.dll $SWIFTSHADER_DEST_DIR/vulkan-1.dll
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
rm -rf temp-ss-dl/
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR\vk_swiftshader_icd.json" >> $GITHUB_ENV
fi
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rust-src, rustc-dev, llvm-tools
- name: Install cargo-gpu
run: cargo install --git https://github.com/rust-gpu/cargo-gpu cargo-gpu
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Compile shaders to SPIR-V
working-directory: shaders/rust
run: python3 compileshaders.py
- name: Verify no uncommitted changes
run: |
# Check if there are any changes to tracked files
if ! git diff --exit-code; then
echo "Error: Generated SPIR-V files differ from checked-in versions"
echo "Please run 'python3 compileshaders.py' locally and commit the changes"
git diff --name-only
exit 1
fi
# Check for untracked files
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
echo "Error: New untracked files were generated"
echo "Please add these files to git or update .gitignore:"
git ls-files --others --exclude-standard
exit 1
fi