1variables: 2 FDO_UPSTREAM_REPO: "virgl/virglrenderer" 3 MESA_TEMPLATES_COMMIT: &ci-templates-commit d5aa3941aa03c2f716595116354fb81eb8012acb 4 MESA_BASE_TAG: ${DEBIAN_BASE_TAG} 5 # 6 # IMPORTANT! 7 # 8 # Use the Pipeline ID corresponding to the Mesa Git rev provided below. 9 # If multiple pipeline runs are available, please choose the one having 10 # at least the 'debian-testing' job in 'Build-x86_64' stage completed. 11 # 12 # Pick a pipeline on https://gitlab.freedesktop.org/mesa/mesa/-/pipelines/ 13 # 14 MESA_PIPELINE_ID: 743439 15 MESA_PROJECT_PATH: mesa/mesa 16 STORAGE_HOST: s3.freedesktop.org 17 CI_REGISTRY_IMAGE: "registry.freedesktop.org/${MESA_PROJECT_PATH}" 18 # per-pipeline artifact storage on MinIO 19 PIPELINE_ARTIFACTS_BASE: ${STORAGE_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID} 20 # per-job artifact storage on MinIO 21 JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID} 22 # reference images stored for traces 23 PIGLIT_REPLAY_REFERENCE_IMAGES_BASE: "${STORAGE_HOST}/mesa-tracie-results/${FDO_UPSTREAM_REPO}" 24 25 26include: 27 - project: 'freedesktop/ci-templates' 28 ref: 79c325922670137e8f0a4dc5f6f097e0eb57c1af 29 file: 30 - '/templates/ci-fairy.yml' 31 - project: 'freedesktop/ci-templates' 32 ref: *ci-templates-commit 33 file: 34 - '/templates/debian.yml' 35 - '/templates/fedora.yml' 36 - project: 'mesa/mesa' 37 # IMPORTANT: Use a recent Mesa Git revision 38 # The commit ref must be in sync with the pipeline picked above 39 # It can be found on the pipeline page below the commit message 40 ref: 1ec172646cd7f5b8c04173a6b45a871aa48aa12e 41 file: 42 - '/.gitlab-ci/image-tags.yml' 43 44# YAML anchors for rule conditions 45# -------------------------------- 46.rules-anchors: 47 rules: 48 # Scheduled pipeline 49 - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"' 50 when: on_success 51 # Forked project branch / pre-merge pipeline not for Marge bot 52 - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "virgl" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event")' 53 when: manual 54 # Pipeline runs for the main branch of the upstream virglrenderer project 55 - if: &is-virglrenderer-main '$CI_PROJECT_NAMESPACE == "virgl" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH' 56 when: always 57 # Post-merge pipeline 58 - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "virgl" && $CI_COMMIT_BRANCH' 59 when: on_success 60 # Pre-merge pipeline for Marge Bot 61 - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"' 62 when: on_success 63 64stages: 65 - build 66 - sanity test 67 - test 68 69.set-image: 70 variables: 71 MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}" 72 image: "$MESA_IMAGE" 73 74.set-image-base-tag: 75 extends: 76 - .set-image 77 variables: 78 MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}" 79 80debian/x86_build: 81 stage: build 82 extends: 83 - .set-image-base-tag 84 variables: 85 MESA_IMAGE_PATH: ${DEBIAN_X86_BUILD_IMAGE_PATH} 86 MESA_IMAGE_TAG: ${DEBIAN_BUILD_TAG} 87 MINIO_ARTIFACT_NAME: virgl-amd64 88 script: 89 - .gitlab-ci/meson/build.sh 90 artifacts: 91 name: "virgl_${CI_JOB_NAME}" 92 when: always 93 paths: 94 - install/ 95 - results/ 96 rules: 97 - if: *is-scheduled-pipeline 98 when: on_success 99 - if: *is-post-merge 100 when: never 101 - if: *is-forked-branch-or-pre-merge-not-for-marge 102 when: manual 103 - if: *is-pre-merge-for-marge 104 when: on_success 105 - when: never 106 107# 108# Sanity test jobs 109# 110 111.make_check_base: 112 stage: sanity test 113 extends: debian/x86_build 114 needs: [] 115 artifacts: 116 when: always 117 paths: 118 - results/ 119 120mesa check meson: 121 extends: .make_check_base 122 variables: 123 TEST_SUITE: make-check-meson 124 125make check clang-fuzzer: 126 extends: .make_check_base 127 variables: 128 TEST_SUITE: make-check-clang-fuzzer 129 CC: clang 130 EXTRA_OPTION: "-D fuzzer=true" 131 132make check trace-stderr: 133 extends: .make_check_base 134 variables: 135 TEST_SUITE: make-check-trace-stderr 136 EXTRA_OPTION: "-D tracing=stderr" 137 138make check venus: 139 extends: .make_check_base 140 variables: 141 TEST_SUITE: make-check-venus 142 143# 144# Piglit & dEQP test jobs 145# 146 147.use-gl-test-image: 148 stage: test 149 extends: 150 - .set-image-base-tag 151 before_script: 152 - echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}" 153 - unset CI_JOB_JWT 154 - export CI_JOB_NAME_SANITIZED="$(echo $CI_JOB_NAME | tr ' /' '--')" 155 variables: 156 CI_JOB_JWT_FILE: /minio_jwt 157 MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_IMAGE_GL_PATH} 158 MESA_IMAGE_TAG: ${DEBIAN_X86_TEST_GL_TAG} 159 script: 160 - export DEQP_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" 161 - export PIGLIT_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" 162 - .gitlab-ci/container/debian/x86_test.sh 163 artifacts: 164 name: "virgl-result" 165 when: always 166 paths: 167 - results/ 168 reports: 169 junit: results/junit.xml 170 needs: 171 - job: debian/x86_build 172 artifacts: true 173 rules: 174 - if: *is-post-merge 175 when: never 176 - when: on_success 177 178.use-vk-test-image: 179 stage: test 180 extends: 181 - .set-image-base-tag 182 before_script: 183 - echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}" 184 - unset CI_JOB_JWT 185 - export CI_JOB_NAME_SANITIZED="$(echo $CI_JOB_NAME | tr ' /' '--')" 186 variables: 187 CI_JOB_JWT_FILE: /minio_jwt 188 MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_IMAGE_VK_PATH} 189 MESA_IMAGE_TAG: ${DEBIAN_X86_TEST_VK_TAG} 190 script: 191 - export DEQP_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" 192 - export PIGLIT_RESULTS_DIR="results/${CI_JOB_NAME_SANITIZED}" 193 - .gitlab-ci/container/debian/x86_test.sh 194 artifacts: 195 name: "venus-result" 196 when: always 197 paths: 198 - results/ 199 reports: 200 junit: results/junit.xml 201 needs: 202 - job: debian/x86_build 203 artifacts: true 204 rules: 205 - if: *is-post-merge 206 when: never 207 - when: on_success 208 209.gl-host-test: 210 extends: 211 - .use-gl-test-image 212 variables: 213 GALLIUM_DRIVER: virpipe 214 GALLIVM_PERF: nopt 215 216.gl-virt-test: 217 extends: 218 - .use-gl-test-image 219 variables: 220 GALLIUM_DRIVER: virgl 221 CROSVM_GALLIUM_DRIVER: llvmpipe 222 GALLIVM_PERF: "nopt,no_quad_lod" 223 224.deqp-host: 225 extends: 226 - .gl-host-test 227 228.piglit-host: 229 extends: 230 - .gl-host-test 231 variables: &piglit-host-variables 232 PIGLIT_PLATFORM: surfaceless_egl 233 PIGLIT_NO_WINDOW: 1 234 PIGLIT_PROFILES: gpu 235 236.deqp-virt: 237 extends: 238 - .gl-virt-test 239 variables: 240 # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread 241 LP_NUM_THREADS: 1 242 243.piglit-virt: 244 extends: 245 - .gl-virt-test 246 variables: 247 <<: *piglit-host-variables 248 # Use all threads for rendering and only run one job at a time 249 LP_NUM_THREADS: ${FDO_CI_CONCURRENT} 250 FORCE_FDO_CI_CONCURRENT: 1 251 252# Host runners (virpipe/vtest) 253 254deqp-gl-host: 255 extends: 256 - .deqp-host 257 variables: 258 DEQP_SUITE: virgl-gl 259 GPU_VERSION: virgl-gl 260 261deqp-gles-host: 262 extends: 263 - .deqp-host 264 variables: 265 VIRGL_HOST_API: GLES 266 DEQP_SUITE: virgl-gles 267 GPU_VERSION: virgl-gles 268 269piglit-gl-host: 270 extends: 271 - .piglit-host 272 variables: 273 GPU_VERSION: virgl-gl 274 275piglit-gles-host: 276 extends: 277 - .piglit-host 278 variables: 279 VIRGL_HOST_API: GLES 280 GPU_VERSION: virgl-gles 281 282# Virt runners (virgl/crosvm) 283 284deqp-gl-virt: 285 extends: 286 - .deqp-virt 287 variables: 288 DEQP_SUITE: virgl-gl 289 GPU_VERSION: virgl-gl 290 CROSVM_GPU_ARGS: &deqp-gl-crosvm-gpu-args "gles=false,backend=virglrenderer,egl=true,surfaceless=true,width=1024,height=768" 291 292deqp-gles-virt: 293 extends: 294 - .deqp-virt 295 variables: 296 VIRGL_HOST_API: GLES 297 DEQP_SUITE: virgl-gles 298 GPU_VERSION: virgl-gles 299 CROSVM_GPU_ARGS: &deqp-gles-crosvm-gpu-args "gles=true,backend=virglrenderer,egl=true,surfaceless=true,width=1024,height=768" 300 301piglit-gl-virt: 302 extends: 303 - .piglit-virt 304 parallel: 3 305 variables: 306 GPU_VERSION: virgl-gl 307 CROSVM_GPU_ARGS: *deqp-gl-crosvm-gpu-args 308 309piglit-gles-virt: 310 extends: 311 - .piglit-virt 312 parallel: 3 313 variables: 314 VIRGL_HOST_API: GLES 315 GPU_VERSION: virgl-gles 316 CROSVM_GPU_ARGS: *deqp-gles-crosvm-gpu-args 317 318virgl-traces: 319 extends: 320 - .piglit-virt 321 variables: 322 GPU_VERSION: virgl-gl 323 CROSVM_GPU_ARGS: *deqp-gl-crosvm-gpu-args 324 EGL_PLATFORM: "surfaceless" 325 PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-virgl.yml" 326 PIGLIT_REPLAY_DEVICE_NAME: "gl-virgl" 327 PIGLIT_RESULTS: "virgl-replay" 328 329.venus-lavapipe-test: 330 extends: 331 - .use-vk-test-image 332 variables: 333 VK_DRIVER: virtio 334 CROSVM_GALLIUM_DRIVER: "llvmpipe" 335 CROSVM_VK_DRIVER: "lvp" 336 337venus-lavapipe: 338 extends: 339 - .venus-lavapipe-test 340 variables: 341 DEQP_FRACTION: 15 342 DEQP_SUITE: venus 343 GPU_VERSION: venus 344 LP_NUM_THREADS: 1 # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread 345 FDO_CI_CONCURRENT: 32 # Seems to be the fastest value, more gets actually slower 346 CROSVM_MEMORY: 3072 347 CROSVM_GPU_ARGS: "vulkan=true,gles=false,backend=virglrenderer,egl=true,surfaceless=true" 348 tags: 349 - mesa-swrast 350