16
16
name : Test Rust Shaders - ${{ matrix.name }}
17
17
runs-on : ${{ matrix.os }}
18
18
strategy :
19
+ fail-fast : false
19
20
matrix :
20
21
include :
21
22
- os : ubuntu-latest
@@ -35,45 +36,80 @@ jobs:
35
36
submodules : " recursive"
36
37
37
38
- name : Install Vulkan SDK
38
- uses : jakoch/install-vulkan-sdk-action@v1.0.0
39
- with :
40
- vulkan_version : 1.3.268.0
41
- optional_components : com.lunarg.vulkan.debug
42
- install_runtime : true
43
- cache : true
44
- stripdown : true
39
+ if : ${{ runner.os != 'Linux' }}
40
+ shell : bash
41
+ env :
42
+ VULKAN_SDK_VERSION : 1.3.250.1
43
+ run : |
44
+ if [ "$RUNNER_OS" == "macOS" ]; then
45
+ wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/mac/vulkansdk-macos-$VULKAN_SDK_VERSION.dmg?Human=true" -O vulkan-sdk.dmg
46
+ hdiutil attach vulkan-sdk.dmg
47
+ sudo /Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION --accept-licenses --default-answer --confirm-command install
48
+ hdiutil detach /Volumes/vulkansdk-macos-$VULKAN_SDK_VERSION
49
+ echo "VULKAN_SDK_PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION" >> $GITHUB_ENV
50
+ echo "VULKAN_SDK=$VULKAN_SDK_PATH/macOS" >> $GITHUB_ENV
51
+ echo "DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
52
+ echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
53
+ elif [ "$RUNNER_OS" == "Windows" ]; then
54
+ wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/windows/VulkanSDK-$VULKAN_SDK_VERSION-Installer.exe?Human=true" -O vulkan-sdk.exe
55
+ ./vulkan-sdk.exe --accept-licenses --default-answer --confirm-command install
56
+ echo "VULKAN_SDK=C:\\VulkanSDK\\$VULKAN_SDK_VERSION" >> $GITHUB_ENV
57
+ echo "PATH=$VULKAN_SDK\\Bin;$PATH" >> $GITHUB_ENV
58
+ fi
45
59
46
60
- if : ${{ runner.os == 'Linux' }}
47
- name : Install xvfb, llvmpipe and lavapipe
61
+ name : Install Vulkan SDK and software renderers on Linux
48
62
run : |
49
63
sudo apt-get update -y -qq
50
64
sudo add-apt-repository ppa:kisak/turtle -y
51
65
sudo apt-get update
52
- sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
66
+ sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers vulkan-tools libvulkan-dev
53
67
54
68
- if : ${{ matrix.use_moltenvk == true }}
55
69
name : Setup MoltenVK on macOS
56
70
run : |
57
- # MoltenVK should be installed with the Vulkan SDK
58
- # Find and set the ICD path
59
- VULKAN_SDK_VERSION=$(ls -1 $HOME/VulkanSDK | head -n 1)
60
- echo "VK_ICD_FILENAMES=$HOME/VulkanSDK/$VULKAN_SDK_VERSION/macOS/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
71
+ echo "VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
61
72
62
- - if : ${{ matrix.use_swiftshader == true }}
63
- name : Install SwiftShader on macOS
73
+ - name : Install SwiftShader
74
+ if : ${{ matrix.use_swiftshader == true || runner.os == 'Linux' || runner.os == 'Windows' }}
75
+ env :
76
+ 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
77
+ SWIFTSHADER_LINUX_URL : https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
78
+ SWIFTSHADER_MACOS_URL : https://github.com/nikitalita/swiftshader-builds/releases/download/1.0.0/swiftshader-vulkan-r6216.7997cbc34b-macos-10.15.zip
79
+ shell : bash
64
80
run : |
65
- # Based on https://github.com/GDRETools/gdsdecomp/blob/master/.github/actions/install-swiftshader/action.yml
66
- git clone https://github.com/google/swiftshader.git
67
- cd swiftshader
68
- mkdir build && cd build
69
- cmake -DSWIFTSHADER_BUILD_TESTS=OFF -DSWIFTSHADER_BUILD_SAMPLES=OFF ..
70
- cmake --build . --config Release
71
- sudo mkdir -p /usr/local/share/vulkan/icd.d
72
- sudo cp Darwin/vk_swiftshader_icd.json /usr/local/share/vulkan/icd.d/
73
- sudo mkdir -p /usr/local/lib
74
- sudo cp Darwin/libvk_swiftshader.dylib /usr/local/lib/
75
- # Set environment variable for SwiftShader ICD
76
- echo "VK_ICD_FILENAMES=/usr/local/share/vulkan/icd.d/vk_swiftshader_icd.json" >> $GITHUB_ENV
81
+ export SWIFTSHADER_DEST_DIR='${{ github.workspace }}/swiftshader'
82
+ mkdir -p $SWIFTSHADER_DEST_DIR
83
+ if [ "$RUNNER_OS" == "Linux" ]; then
84
+ wget ${{ env.SWIFTSHADER_LINUX_URL }} -O swiftshader.zip
85
+ unzip swiftshader.zip -d $SWIFTSHADER_DEST_DIR
86
+ rm swiftshader.zip
87
+ SWIFTSHADER_LIB_NAME="./libvk_swiftshader.so"
88
+ sed -i "s|PATH_TO_CHANGE|$SWIFTSHADER_LIB_NAME|" $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
89
+ echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
90
+ elif [ "$RUNNER_OS" == "macOS" ]; then
91
+ wget ${{ env.SWIFTSHADER_MACOS_URL }} -O swiftshader.zip
92
+ unzip swiftshader.zip -d temp-ss-dl/
93
+ rm swiftshader.zip
94
+ mv temp-ss-dl/lib/libvk_swiftshader.dylib $SWIFTSHADER_DEST_DIR/libvk_swiftshader.dylib
95
+ mv temp-ss-dl/share/vulkan/icd.d/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
96
+ rm -rf temp-ss-dl/
97
+ sed -i '' "s/..\/..\/..\/lib\/libvk_swiftshader.dylib/.\/libvk_swiftshader.dylib/" "$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json"
98
+ echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
99
+ elif [ "$RUNNER_OS" == "Windows" ]; then
100
+ choco install --yes 7zip wget
101
+ wget -O swiftshader.zip ${{env.SWIFTSHADER_WINDOWS_URL}}
102
+ 7z x swiftshader.zip -otemp-ss-dl/
103
+ rm swiftshader.zip
104
+ mv temp-ss-dl/swiftshader-*/swiftshader-*.7z temp-ss-dl/swiftshader.7z
105
+ 7z x temp-ss-dl/swiftshader.7z -otemp-ss-dl/swiftshader
106
+ rm temp-ss-dl/swiftshader.7z
107
+ mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader.dll $SWIFTSHADER_DEST_DIR/vk_swiftshader.dll
108
+ mv temp-ss-dl/swiftshader/x64/bin/vulkan-1.dll $SWIFTSHADER_DEST_DIR/vulkan-1.dll
109
+ mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
110
+ rm -rf temp-ss-dl/
111
+ echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR\vk_swiftshader_icd.json" >> $GITHUB_ENV
112
+ fi
77
113
78
114
- name : Install Rust
79
115
uses : dtolnay/rust-toolchain@stable
0 commit comments