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