From 97717391096322aa491667bee6424e641ec379a0 Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 16:16:23 -0400 Subject: [PATCH 1/9] Add GitHub Actions CI workflow and build status badge Builds on windows-latest (VS 2022) and ubuntu-24.04 using Qt 6.7.0 via jurplel/install-qt-action@v4. No test targets exist in this repo, so only Release builds of radeon_gpu_analyzer_cli and radeon_gpu_analyzer_gui are run. LFS checkout enabled for binary externals tracked via Git LFS. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 92 +++++++++++++++++++++++++++++++++++++ README.md | 2 + 2 files changed, 94 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..2ecde8c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,92 @@ +name: Build + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + build: + name: ${{ matrix.os-name }} + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + include: + - runner: windows-latest + os-name: Windows + qt-arch: win64_msvc2019_64 + - runner: ubuntu-24.04 + os-name: Ubuntu + + steps: + - uses: actions/checkout@v5 + with: + lfs: true + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.11' + + - name: Install Qt (Windows) + if: runner.os == 'Windows' + uses: jurplel/install-qt-action@v4 + with: + version: '6.7.0' + arch: ${{ matrix.qt-arch }} + dir: 'C:\' + cache: true + + - name: Install Qt (Ubuntu) + if: runner.os == 'Linux' + uses: jurplel/install-qt-action@v4 + with: + version: '6.7.0' + arch: linux_gcc_64 + dir: '${{ github.workspace }}' + modules: 'qtwaylandcompositor' + cache: true + + - name: Install Linux dependencies + if: runner.os == 'Linux' + run: | + sudo apt-get update -q + sudo apt-get install -y \ + cmake \ + build-essential \ + chrpath \ + patchelf \ + libxcb-xinerama0 \ + libxcb-cursor-dev \ + mesa-common-dev \ + libglu1-mesa-dev \ + libgl1-mesa-dev \ + libx11-xcb-dev \ + libxkbcommon-x11-dev \ + libwayland-dev + + - name: Pre-build (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + cd build + python pre_build.py --vs 2022 --qt 6.7.0 --qt-root C:\Qt + + - name: Pre-build (Ubuntu) + if: runner.os == 'Linux' + run: | + cd build + python3 pre_build.py --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" + + - name: Build Release (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + cmake --build build\win\vs2022 --config Release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel %NUMBER_OF_PROCESSORS% + + - name: Build Release (Ubuntu) + if: runner.os == 'Linux' + run: | + cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel $(nproc) diff --git a/README.md b/README.md index 6909cf5..0a0fe13 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # RGA (Radeon™ GPU Analyzer) # +[![Build Status](https://github.com/GPUOpen-Tools/RGA/actions/workflows/build.yml/badge.svg)](https://github.com/GPUOpen-Tools/RGA/actions/workflows/build.yml) + Radeon GPU Analyzer is a compiler and code analysis tool for Vulkan®, DirectX®, OpenGL® and OpenCL™. Using this product, you can compile high-level source code for a variety of AMD GPU and APU architectures, independent of the type of GPU/APU that is physically installed on your system. From 0e6f3671f165ffa178dc70761a69ec9b03d1548b Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 16:21:36 -0400 Subject: [PATCH 2/9] CI: add libvulkan-dev to Ubuntu apt deps find_package(Vulkan REQUIRED) in source/utils/vulkan/backend/CMakeLists.txt needs both the header and library stub, which libvulkan-dev provides. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ecde8c..7e6e448 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,8 @@ jobs: libgl1-mesa-dev \ libx11-xcb-dev \ libxkbcommon-x11-dev \ - libwayland-dev + libwayland-dev \ + libvulkan-dev - name: Pre-build (Windows) if: runner.os == 'Windows' From 096ceff2660285e508ea226ae6fd877fe26602a8 Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 16:22:39 -0400 Subject: [PATCH 3/9] CI: install Vulkan SDK on Windows runner jakoch/install-vulkan-sdk-action sets VULKAN_SDK and exposes the headers and vulkan-1.lib that find_package(Vulkan REQUIRED) needs in source/utils/vulkan/backend/CMakeLists.txt. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e6e448..e8812a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,6 +49,14 @@ jobs: modules: 'qtwaylandcompositor' cache: true + - name: Install Vulkan SDK (Windows) + if: runner.os == 'Windows' + uses: jakoch/install-vulkan-sdk-action@v1 + with: + vulkan_version: 1.3.290.0 + install_runtime: false + cache: true + - name: Install Linux dependencies if: runner.os == 'Linux' run: | From 2a4e1c682b1a1aa5227e285ac0386dc804974793 Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 16:29:49 -0400 Subject: [PATCH 4/9] CI: use --no-qt on Ubuntu to skip GUI and linuxdeployqt linuxdeployqt is not in the dependency map and is not available on the runner. --no-qt passes -DBUILD_CLI_ONLY=ON to cmake, sidestepping the deploy_qt_install_hook fatal error. The GUI is still built on Windows where windeployqt is available via the Qt install. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e8812a8..3dbf6ce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,7 +87,7 @@ jobs: if: runner.os == 'Linux' run: | cd build - python3 pre_build.py --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" + python3 pre_build.py --no-qt --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" - name: Build Release (Windows) if: runner.os == 'Windows' @@ -98,4 +98,4 @@ jobs: - name: Build Release (Ubuntu) if: runner.os == 'Linux' run: | - cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel $(nproc) + cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli --parallel $(nproc) From 6a0954925d64e8e3157c76abf8d7c353062be60e Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 16:36:46 -0400 Subject: [PATCH 5/9] CI: install linuxdeployqt on Ubuntu to enable GUI build Downloads the continuous AppImage, extracts it without FUSE via --appimage-extract, and places a wrapper script at external/linuxdeployqt/linuxdeployqt where find_program expects it. The wrapper calls squashfs-root/AppRun so linuxdeployqt's own Qt dependencies are found at runtime. Reverts --no-qt so the GUI is compiled and validated on Ubuntu as well as Windows. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dbf6ce..09be708 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,6 +76,18 @@ jobs: libwayland-dev \ libvulkan-dev + - name: Install linuxdeployqt (Ubuntu) + if: runner.os == 'Linux' + run: | + wget -q "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ + -O /tmp/linuxdeployqt.AppImage + chmod +x /tmp/linuxdeployqt.AppImage + cd /tmp && ./linuxdeployqt.AppImage --appimage-extract + mkdir -p external/linuxdeployqt + printf '#!/bin/sh\nexec /tmp/squashfs-root/AppRun "$@"\n' \ + > external/linuxdeployqt/linuxdeployqt + chmod +x external/linuxdeployqt/linuxdeployqt + - name: Pre-build (Windows) if: runner.os == 'Windows' shell: cmd @@ -87,7 +99,7 @@ jobs: if: runner.os == 'Linux' run: | cd build - python3 pre_build.py --no-qt --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" + python3 pre_build.py --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" - name: Build Release (Windows) if: runner.os == 'Windows' @@ -98,4 +110,4 @@ jobs: - name: Build Release (Ubuntu) if: runner.os == 'Linux' run: | - cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli --parallel $(nproc) + cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel $(nproc) From 2d96b4abd233fb369c9c432ca3990cd56491b52b Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 17:19:21 -0400 Subject: [PATCH 6/9] CI: downgrade Ubuntu runner to 22.04 for linuxdeployqt compatibility linuxdeployqt performs a hard glibc version check at startup and refuses to run on Ubuntu 24.04 (glibc 2.39). Ubuntu 22.04 ships glibc 2.35, which is exactly the maximum version linuxdeployqt supports. 22.04 is supported until April 2027. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09be708..22975f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,8 +17,9 @@ jobs: - runner: windows-latest os-name: Windows qt-arch: win64_msvc2019_64 - - runner: ubuntu-24.04 + - runner: ubuntu-22.04 os-name: Ubuntu + # linuxdeployqt requires glibc <= 2.35 (Ubuntu Jammy); ubuntu-24.04 ships 2.39 and is rejected at startup steps: - uses: actions/checkout@v5 From 08dd77481d253af6db457c31acfab6e1fa69c52f Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 17:23:56 -0400 Subject: [PATCH 7/9] CI: fix linuxdeployqt wrapper path after cd /tmp cd /tmp persists for the rest of the run block, so mkdir and the wrapper write were landing in /tmp/external/ instead of the repo root. Use GITHUB_WORKSPACE explicitly for paths after the directory change. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 22975f8..dca6f0a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,10 +84,10 @@ jobs: -O /tmp/linuxdeployqt.AppImage chmod +x /tmp/linuxdeployqt.AppImage cd /tmp && ./linuxdeployqt.AppImage --appimage-extract - mkdir -p external/linuxdeployqt + mkdir -p "$GITHUB_WORKSPACE/external/linuxdeployqt" printf '#!/bin/sh\nexec /tmp/squashfs-root/AppRun "$@"\n' \ - > external/linuxdeployqt/linuxdeployqt - chmod +x external/linuxdeployqt/linuxdeployqt + > "$GITHUB_WORKSPACE/external/linuxdeployqt/linuxdeployqt" + chmod +x "$GITHUB_WORKSPACE/external/linuxdeployqt/linuxdeployqt" - name: Pre-build (Windows) if: runner.os == 'Windows' From 279127a9ac79f13984d42ee7006a660667646c49 Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 17:29:48 -0400 Subject: [PATCH 8/9] CI: install linuxdeployqt wrapper to /usr/local/bin PROJECT_SOURCE_DIR in devtools_qt_helper.cmake resolves to the GUI subdirectory, not the repo root, so the HINTS path we were targeting was wrong. Installing to /usr/local/bin puts it on PATH, which find_program searches as a fallback regardless of HINTS. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dca6f0a..c2f1937 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,10 +84,9 @@ jobs: -O /tmp/linuxdeployqt.AppImage chmod +x /tmp/linuxdeployqt.AppImage cd /tmp && ./linuxdeployqt.AppImage --appimage-extract - mkdir -p "$GITHUB_WORKSPACE/external/linuxdeployqt" - printf '#!/bin/sh\nexec /tmp/squashfs-root/AppRun "$@"\n' \ - > "$GITHUB_WORKSPACE/external/linuxdeployqt/linuxdeployqt" - chmod +x "$GITHUB_WORKSPACE/external/linuxdeployqt/linuxdeployqt" + printf '#!/bin/sh\nexec /tmp/squashfs-root/AppRun "$@"\n' > /tmp/linuxdeployqt-wrapper + chmod +x /tmp/linuxdeployqt-wrapper + sudo mv /tmp/linuxdeployqt-wrapper /usr/local/bin/linuxdeployqt - name: Pre-build (Windows) if: runner.os == 'Windows' From 74663b628111a4591b13bdfded5c1a15418c4d86 Mon Sep 17 00:00:00 2001 From: Chris Hesik Date: Fri, 24 Apr 2026 17:35:18 -0400 Subject: [PATCH 9/9] CI: add libboost-all-dev to Ubuntu apt deps Required by be_isa_parser.cpp (boost/regex.hpp); listed as a prerequisite in the repo's Linux build instructions. Co-Authored-By: Claude Sonnet 4 --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2f1937..3de9c33 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,7 +75,8 @@ jobs: libx11-xcb-dev \ libxkbcommon-x11-dev \ libwayland-dev \ - libvulkan-dev + libvulkan-dev \ + libboost-all-dev - name: Install linuxdeployqt (Ubuntu) if: runner.os == 'Linux'