parameters: - name: checkoutRepo type: string default: 'self' - name: checkoutRef type: string default: '' - name: aptPackages type: object default: - python3-pip - cmake - ninja-build - pkg-config - ffmpeg - libavcodec-dev - libavformat-dev - libavutil-dev - libstdc++-12-dev - libva-amdgpu-dev - mesa-amdgpu-va-drivers - libdrm-dev - name: rocmDependencies type: object default: - rocm-cmake - llvm-project - ROCR-Runtime - clr - rocminfo - rocm-core - rocprofiler-register - name: rocmTestDependencies type: object default: - clr - llvm-project - rocminfo - rocprofiler-register - ROCR-Runtime jobs: - job: rocDecode variables: - group: common - template: /.azuredevops/variables-global.yml pool: vmImage: ${{ variables.BASE_BUILD_POOL }} workspace: clean: all steps: # Since mesa-amdgpu-multimedia-devel is not directly available from apt, register it - task: Bash@3 displayName: 'Register ROCm packages' inputs: targetType: inline script: | sudo mkdir --parents --mode=0755 /etc/apt/keyrings wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/${{ variables.KEYRING_VERSION }}/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/amdgpu.list echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${{ variables.KEYRING_VERSION }} jammy main" | sudo tee --append /etc/apt/sources.list.d/rocm.list echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600 sudo apt update - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) # CI case: download latest default branch build ${{ if eq(parameters.checkoutRef, '') }}: dependencySource: staging # manual build case: triggered by ROCm/ROCm repo ${{ elseif ne(parameters.checkoutRef, '') }}: dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - job: rocDecode_testing dependsOn: rocDecode condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) variables: - group: common - template: /.azuredevops/variables-global.yml pool: $(JOB_TEST_POOL) workspace: clean: all strategy: matrix: gfx942: JOB_GPU_TARGET: gfx942 JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }} steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters: ${{ if eq(parameters.checkoutRef, '') }}: dependencySource: staging ${{ elseif ne(parameters.checkoutRef, '') }}: dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) ${{ if eq(parameters.checkoutRef, '') }}: dependencySource: staging ${{ elseif ne(parameters.checkoutRef, '') }}: dependencySource: tag-builds # anything in /opt may be persistent across runs # so we need to remove the symlink if it already exists - script: | sudo rm -rf /opt/rocm sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm mkdir rocDecode-tests cd rocDecode-tests cmake /opt/rocm/share/rocdecode/test - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: rocDecode testDir: 'rocDecode-tests' - script: sudo rm /opt/rocm