Skip to content

Commit d0e46a8

Browse files
authored
Arm backend: Refactor setup.sh to break out vulkan (#14009)
Broke out vulkan functions and defines into a separate script that can be sourced from setup.sh. Signed-off-by: [email protected]
1 parent 51b3329 commit d0e46a8

File tree

2 files changed

+67
-49
lines changed

2 files changed

+67
-49
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2025 Arm Limited and/or its affiliates.
3+
#
4+
# This source code is licensed under the BSD-style license found in the
5+
# LICENSE file in the root directory of this source tree.
6+
7+
# Important to check for unset variables since this script is always sourced from setup.sh
8+
set -u
9+
10+
# Check if the script is being sourced
11+
(return 0 2>/dev/null)
12+
if [[ $? -ne 0 ]]; then
13+
echo "Error: This script must be sourced."
14+
exit 1
15+
fi
16+
17+
vulkan_sdk_version="1.4.321.1"
18+
vulkan_sdk_base_dir="vulkan_sdk"
19+
20+
# MLSDK dependencies
21+
mlsdk_manifest_dir="ml-sdk-for-vulkan-manifest"
22+
vulkan_sdk_bin_dir="${vulkan_sdk_base_dir}/${vulkan_sdk_version}/${ARCH}/bin"
23+
24+
25+
if [[ "${ARCH}" == "x86_64" ]]; then
26+
# Vulkan SDK
27+
vulkan_sdk_url="https://sdk.lunarg.com/sdk/download/${vulkan_sdk_version}/linux/vulkansdk-linux-x86_64-${vulkan_sdk_version}.tar.xz"
28+
vulkan_sdk_sha256="f22a3625bd4d7a32e7a0d926ace16d5278c149e938dac63cecc00537626cbf73"
29+
30+
elif [[ "${ARCH}" == "aarch64" ]] || [[ "${ARCH}" == "arm64" ]]; then
31+
# Vulkan SDK
32+
vulkan_sdk_url="https://github.com/jakoch/vulkan-sdk-arm/releases/download/1.4.321.1/vulkansdk-ubuntu-22.04-arm-1.4.321.1.tar.xz"
33+
vulkan_sdk_sha256="c57e318d0940394d3a304034bb7ddabda788b5b0b54638e80e90f7264efe9f84"
34+
else
35+
echo "[main] Error: only x86-64 & aarch64/arm64 architecture is supported for now!"; exit 1;
36+
fi
37+
38+
function setup_vulkan_sdk() {
39+
40+
if command -v vulkaninfo > /dev/null 2>&1; then
41+
echo "[${FUNCNAME[0]}] Vulkan SDK already installed..."
42+
enable_vulkan_sdk=0
43+
return
44+
fi
45+
46+
cd "${root_dir}"
47+
48+
vulkan_sdk_tar_file="${vulkan_sdk_url##*/}"
49+
if [[ ! -e "${vulkan_sdk_tar_file}" ]]; then
50+
echo "[${FUNCNAME[0]}] Downloading Vulkan SDK - ${vulkan_sdk_url}.."
51+
curl -L --output "${vulkan_sdk_tar_file}" "${vulkan_sdk_url}"
52+
echo "${vulkan_sdk_sha256} ${vulkan_sdk_tar_file}" | sha256sum -c -
53+
rm -fr ${vulkan_sdk_base_dir}
54+
fi
55+
56+
mkdir -p ${vulkan_sdk_base_dir}
57+
tar -C ${vulkan_sdk_base_dir} -xJf "${vulkan_sdk_tar_file}"
58+
59+
vulkan_sdk_bin_path="$(cd ${vulkan_sdk_bin_dir} && pwd)"
60+
if ${vulkan_sdk_bin_path}/vulkaninfo > /dev/null 2>&1; then
61+
echo "[${FUNCNAME[0]}] Vulkan SDK OK"
62+
else
63+
echo "[${FUNCNAME[0]}] Vulkan SDK NOK - perhaps need manual install of swifthshader or mesa-vulkan driver?"
64+
exit 1
65+
fi
66+
}

examples/arm/setup.sh

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ enable_vgf_lib=0 # vgf reader - runtime backend dependency
2727
enable_emulation_layer=0 # Vulkan layer driver - emulates Vulkan ML extensions
2828
enable_vulkan_sdk=0 # Download and export Vulkan SDK required by emulation layer
2929
mlsdk_manifest_url="https://github.com/arm/ai-ml-sdk-manifest.git"
30-
vulkan_sdk_version="1.4.321.1"
31-
vulkan_sdk_base_dir="vulkan_sdk"
3230

3331
# Figure out if setup.sh was called or sourced and save it into "is_script_sourced"
3432
(return 0 2>/dev/null) && is_script_sourced=1 || is_script_sourced=0
@@ -38,23 +36,6 @@ toolchain_url=""
3836
toolchain_dir=""
3937
toolchain_md5_checksum=""
4038

41-
if [[ "${ARCH}" == "x86_64" ]]; then
42-
# Vulkan SDK
43-
vulkan_sdk_url="https://sdk.lunarg.com/sdk/download/${vulkan_sdk_version}/linux/vulkansdk-linux-x86_64-${vulkan_sdk_version}.tar.xz"
44-
vulkan_sdk_sha256="f22a3625bd4d7a32e7a0d926ace16d5278c149e938dac63cecc00537626cbf73"
45-
46-
elif [[ "${ARCH}" == "aarch64" ]] || [[ "${ARCH}" == "arm64" ]]; then
47-
# Vulkan SDK
48-
vulkan_sdk_url="https://github.com/jakoch/vulkan-sdk-arm/releases/download/1.4.321.1/vulkansdk-ubuntu-22.04-arm-1.4.321.1.tar.xz"
49-
vulkan_sdk_sha256="c57e318d0940394d3a304034bb7ddabda788b5b0b54638e80e90f7264efe9f84"
50-
51-
else
52-
echo "[main] Error: only x86-64 & aarch64/arm64 architecture is supported for now!"; exit 1;
53-
fi
54-
55-
# MLSDK dependencies
56-
mlsdk_manifest_dir="ml-sdk-for-vulkan-manifest"
57-
vulkan_sdk_bin_dir="${vulkan_sdk_base_dir}/${vulkan_sdk_version}/${ARCH}/bin"
5839

5940
# List of supported options and their descriptions
6041
OPTION_LIST=(
@@ -198,36 +179,6 @@ function setup_root_dir() {
198179
setup_path_script="${root_dir}/setup_path"
199180
}
200181

201-
function setup_vulkan_sdk() {
202-
203-
if command -v vulkaninfo > /dev/null 2>&1; then
204-
echo "[${FUNCNAME[0]}] Vulkan SDK already installed..."
205-
enable_vulkan_sdk=0
206-
return
207-
fi
208-
209-
cd "${root_dir}"
210-
211-
vulkan_sdk_tar_file="${vulkan_sdk_url##*/}"
212-
if [[ ! -e "${vulkan_sdk_tar_file}" ]]; then
213-
echo "[${FUNCNAME[0]}] Downloading Vulkan SDK - ${vulkan_sdk_url}.."
214-
curl -L --output "${vulkan_sdk_tar_file}" "${vulkan_sdk_url}"
215-
echo "${vulkan_sdk_sha256} ${vulkan_sdk_tar_file}" | sha256sum -c -
216-
rm -fr ${vulkan_sdk_base_dir}
217-
fi
218-
219-
mkdir -p ${vulkan_sdk_base_dir}
220-
tar -C ${vulkan_sdk_base_dir} -xJf "${vulkan_sdk_tar_file}"
221-
222-
vulkan_sdk_bin_path="$(cd ${vulkan_sdk_bin_dir} && pwd)"
223-
if ${vulkan_sdk_bin_path}/vulkaninfo > /dev/null 2>&1; then
224-
echo "[${FUNCNAME[0]}] Vulkan SDK OK"
225-
else
226-
echo "[${FUNCNAME[0]}] Vulkan SDK NOK - perhaps need manual install of swifthshader or mesa-vulkan driver?"
227-
exit 1
228-
fi
229-
}
230-
231182
function setup_ethos_u_tools() {
232183
CMAKE_POLICY_VERSION_MINIMUM=3.5 BUILD_PYBIND=1 pip install --no-dependencies -r $et_dir/backends/arm/requirements-arm-ethos-u.txt
233184
}
@@ -305,6 +256,7 @@ if [[ $is_script_sourced -eq 0 ]]; then
305256
source $et_dir/backends/arm/scripts/utils.sh
306257
source $et_dir/backends/arm/scripts/fvp_utils.sh
307258
source $et_dir/backends/arm/scripts/toolchain_utils.sh
259+
source $et_dir/backends/arm/scripts/vulkan_utils.sh
308260

309261
echo "[main]: Checking platform and os"
310262
check_platform_support

0 commit comments

Comments
 (0)