• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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