Skip to content

.github: update SPIRV-Tools build #121

.github: update SPIRV-Tools build

.github: update SPIRV-Tools build #121

Workflow file for this run

name: Presubmit
on:
push:
branches:
- main
pull_request:
jobs:
format:
name: Check code formatting
runs-on: ubuntu-22.04
steps:
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format clang-format-15
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check format
run: |
git-clang-format --binary clang-format-15 --diff origin/main --extensions cpp,hpp > output.txt
cat output.txt
grep -E "(no modified files to format|clang-format did not modify any files)" output.txt
build:
name: Builds & Tests
needs: format
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build libvulkan-dev clang-15 mesa-vulkan-drivers
- name: Build SPIRV-Tools
run: |
git clone --depth 1 --branch main https://github.com/KhronosGroup/SPIRV-Tools.git third_party/spirv-tools
git clone --depth 1 --branch main https://github.com/KhronosGroup/SPIRV-Headers.git third_party/spirv-tools/external/spirv-headers
cmake -B third_party/spirv-tools/build -S third_party/spirv-tools/ -G Ninja \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DSPIRV_SKIP_TESTS=1 \
-DCMAKE_BUILD_TYPE=Release
cmake --build third_party/spirv-tools/build
cmake --install third_party/spirv-tools/build --prefix $(pwd)/install/
- name: Build Perfetto
run: |
git clone --depth 1 --branch v43.2 https://android.googlesource.com/platform/external/perfetto third_party/perfetto
$(pwd)/third_party/perfetto/tools/install-build-deps
$(pwd)/third_party/perfetto/tools/setup_all_configs.py
$(pwd)/third_party/perfetto/tools/ninja -C $(pwd)/third_party/perfetto/out/linux_clang_release libtrace_processor.a perfetto traced
- name: Install Vulkan-Loader dependencies
run: |
sudo apt-get install build-essential libx11-xcb-dev libxkbcommon-dev libwayland-dev libxrandr-dev
- name: Build Vulkan-Loader
run : |
git clone --depth 1 --branch v1.3.280 https://github.com/KhronosGroup/Vulkan-Loader.git third_party/vulkan-loader
cmake -B third_party/vulkan-loader/build -S third_party/vulkan-loader -G Ninja \
-DVulkanHeaders_DIR=$(pwd)/install/share/cmake/VulkanHeaders \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_C_COMPILER="$(which clang)" \
-DUPDATE_DEPS=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build third_party/vulkan-loader/build
- name: Build debug
run: |
cmake -B build_debug -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DSPIRV_HEADERS_INCLUDE_PATH="$(pwd)/third_party/spirv-tools/external/spirv-headers/include" \
-DSPIRV_TOOLS_BUILD_PATH="$(pwd)/third_party/spirv-tools/build" \
-DSPIRV_TOOLS_SOURCE_PATH="$(pwd)/third_party/spirv-tools" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_BUILD_TYPE=Debug
cmake --build build_debug
- name: Build release
run: |
cmake -B build_release -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DSPIRV_HEADERS_INCLUDE_PATH="$(pwd)/third_party/spirv-tools/external/spirv-headers/include" \
-DSPIRV_TOOLS_BUILD_PATH="$(pwd)/third_party/spirv-tools/build" \
-DSPIRV_TOOLS_SOURCE_PATH="$(pwd)/third_party/spirv-tools" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DBACKEND=System \
-DCMAKE_BUILD_TYPE=Release
cmake --build build_release
- name: Test runner
env:
VKSP_RUNNER: ${{ github.workspace }}/build_release/runner/vulkan-shader-profiler-runner
run: |
$(pwd)/tests/test-runner.sh
- name: Test layer & extractor
env:
VK_LOADER_DEBUG: all
LD_LIBRARY_PATH: ${{ github.workspace }}/build_release/layer/:${{ github.workspace }}/third_party/vulkan-loader/build/loader/:$LD_LIBRARY_PATH
VKSP_EXTRACTOR: ${{ github.workspace }}/build_release/extractor/vulkan-shader-profiler-extractor
VKSP_RUNNER: ${{ github.workspace }}/build_release/runner/vulkan-shader-profiler-runner
PERFETTO_TRACED: ${{ github.workspace }}/third_party/perfetto/out/linux_clang_release/traced
PERFETTO_BINARY: ${{ github.workspace }}/third_party/perfetto/out/linux_clang_release/perfetto
run: |
$(pwd)/tests/test-extractor.sh
- name: Test buffers
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/build_release/layer/:${{ github.workspace }}/third_party/vulkan-loader/build/loader/:$LD_LIBRARY_PATH
VKSP_RUNNER: ${{ github.workspace }}/build_release/runner/vulkan-shader-profiler-runner
VKSP_MERGE_BUFFERS: ${{ github.workspace}}/build_release/merge-buffers/vulkan-shader-profiler-merge-buffers
PERFETTO_TRACED: ${{ github.workspace }}/third_party/perfetto/out/linux_clang_release/traced
PERFETTO_BINARY: ${{ github.workspace }}/third_party/perfetto/out/linux_clang_release/perfetto
run: |
$(pwd)/tests/test-buffers.sh