350 lines
9.0 KiB
YAML
350 lines
9.0 KiB
YAML
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
|