mesa/.gitlab-ci/test-source-dep.yml

990 lines
26 KiB
YAML
Raw Normal View History

# This file list source dependencies to avoid creating/running jobs
# those outcome cannot be changed by the modifications from a branch.
# Rule to filter for only scheduled pipelines.
.scheduled_pipeline-rules:
rules:
- if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
when: on_success
# Generic rule to not run the job during scheduled pipelines. Jobs that aren't
# something like a nightly run should include this rule.
.no_scheduled_pipelines-rules:
rules:
- if: *is-scheduled-pipeline
when: never
# Rule for restricted traces jobs to only run for users with access to those
# traces (both https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db-private
# for trace access, and minio bucket access for viewing result images from CI).
#
# This is a compromise, allowing some marked developers to have their MRs
# blocked on regressions to non-redistributable traces, while not blocking
# merges for other devs who would be unable to debug changes to them.
.restricted-rules:
rules:
# If the triggerer has access to the restricted traces and if it is pre-merge
- if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias|gallo|kwg|majanes|llanderwelin|zmike)$/") &&
($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
when: never
# Mesa core source file dependencies that may impact any test job
# ---------------------------------------------------------------
.core-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- changes: &core_file_list
- .gitlab-ci.yml
- .gitlab-ci/**/*
- include/**/*
- meson.build
- .gitattributes
- src/*
- src/compiler/**/*
- src/drm-shim/**/*
- src/gbm/**/*
- src/gtest/**/*
- src/include/**/*
# Some src/util and src/compiler files use headers from mesa/ (e.g.
# mtypes.h). We should clean that up.
- src/mesa/**/*.h
- src/tool/**/*
- src/util/**/*
when: on_success
# Same core dependencies for doing manual runs.
.core-manual-rules:
rules:
# We only want manual jobs to show up when it's not marge's pre-merge CI
# run, otherwise she'll wait until her timeout. The exception is
# performance jobs, see below.
- if: '($GITLAB_USER_LOGIN == "marge-bot" &&
$CI_PIPELINE_SOURCE == "merge_request_event" &&
$CI_JOB_NAME !~ "/performance$/")'
when: never
- !reference [.scheduled_pipeline-rules, rules]
- changes:
*core_file_list
when: manual
# Rules for performance jobs tracking. We want perf jobs to run as code is
# merged to main, but we don't want them to block marge. So, they need to have
# only when: never or when: manual, and a separate script maintained by
# Collabora triggers the manual job after merge to main. These "never" filters
# need to come before any paths with "manual".
.performance-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
# Run only on pre-merge pipelines from Marge
- if: $MESA_CI_PERFORMANCE_ENABLED == null
when: never
# Allow the merge to complete even before the job completes (since it won't
# even start until the separate script triggers on it).
allow_failure: true
.piglit-performance-base:
extends:
- .performance-rules
variables:
LAVA_JOB_PRIORITY: 40
PIGLIT_REPLAY_SUBCOMMAND: "profile"
PIGLIT_REPLAY_EXTRA_ARGS: "--db-path ${CI_PROJECT_DIR}/replayer-db/"
# More than this can hit OOM due to BOs leaked during the replay of the last frame
PIGLIT_REPLAY_LOOP_TIMES: 150
# We don't want for more than one workload to be submitted to the GPU at a time
FDO_CI_CONCURRENT: 1
# Piglit is very sparse in its status output and downloads of big traces can take a while
LAVA_DEVICE_HANGING_TIMEOUT_SEC: 600
GIT_STRATEGY: none
HWCI_FREQ_MAX: "true"
# Always use the same device
LAVA_TAGS: "cbg-0"
# Ensure that we are using the release build artifact
MINIO_ARTIFACT_NAME: mesa-${ARCH}-release
# Reset dependencies in performance jobs to enforce the release build artifact
dependencies: null
# Don't run in parallel. It is okay to performance jobs to take a little
# longer to finish, as they don't block marge from merging an MR.
parallel: null
.piglit-performance:arm64:
extends:
- .piglit-performance-base
needs:
- debian/arm64_test
- debian-arm64-release
.piglit-performance:amd64:
extends:
- .piglit-performance-base
needs:
- kernel+rootfs_amd64
- debian-release
# Mesa source file dependencies that may impact any GL driver test job.
.gl-rules:
rules:
- !reference [.core-rules, rules]
- changes: &mesa_core_file_list
- src/egl/**/*
- src/glx/**/*
- src/loader/**/*
- src/mapi/**/*
- src/mesa/*
- src/mesa/main/**/*
- src/mesa/math/**/*
- src/mesa/program/**/*
- src/mesa/sparc/**/*
- src/mesa/state_tracker/**/*
- src/mesa/swrast/**/*
- src/mesa/swrast_setup/**/*
- src/mesa/vbo/**/*
- src/mesa/x86/**/*
- src/mesa/x86-64/**/*
when: on_success
- changes: &gallium_core_file_list
- src/gallium/*
- src/gallium/auxiliary/**/*
- src/gallium/drivers/*
- src/gallium/include/**/*
- src/gallium/frontends/dri/*
- src/gallium/frontends/glx/**/*
- src/gallium/targets/**/*
- src/gallium/tests/**/*
- src/gallium/winsys/*
when: on_success
.gl-manual-rules:
rules:
- !reference [.core-manual-rules, rules]
- changes:
*mesa_core_file_list
when: manual
- changes:
*gallium_core_file_list
when: manual
# Source file dependencies that may impact any Vulkan driver build or test
.vulkan-rules:
rules:
- !reference [.core-rules, rules]
- changes: &vulkan_file_list
- src/vulkan/**/*
when: on_success
.vulkan-manual-rules:
rules:
- !reference [.core-manual-rules, rules]
- changes:
*vulkan_file_list
when: manual
.softpipe-rules:
stage: software-renderer
rules:
- !reference [.gl-rules, rules]
- changes: &softpipe_file_list
- src/gallium/drivers/softpipe/**/*
- src/gallium/winsys/sw/**/*
when: on_success
.llvmpipe-rules:
stage: software-renderer
rules:
- !reference [.gl-rules, rules]
- changes: &llvmpipe_file_list
- src/gallium/drivers/llvmpipe/**/*
- src/gallium/winsys/sw/**/*
when: on_success
.lavapipe-rules:
stage: software-renderer
rules:
- !reference [.vulkan-rules, rules]
# One could probably be a little more clever here and skip non-gallium Mesa changes (see also .llvmpipe-cl-rules).
- !reference [.gl-rules, rules]
- changes: &lavapipe_file_list
- src/gallium/drivers/llvmpipe/**/*
- src/gallium/frontends/lavapipe/**/*
- src/gallium/winsys/sw/**/*
when: on_success
.lavapipe-manual-rules:
stage: software-renderer
rules:
- !reference [.vulkan-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes: *lavapipe_file_list
when: manual
.llvmpipe-cl-rules:
stage: software-renderer
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- changes: &llvmpipe_cl_files
- .gitlab-ci.yml
- .gitlab-ci/**/*
- meson.build
- .gitattributes
- include/**/*
- src/compiler/**/*
- src/include/**/*
- src/util/**/*
when: on_success
- changes:
*gallium_core_file_list
when: on_success
- changes:
*llvmpipe_file_list
when: on_success
# TODO: remove together with Clover
.llvmpipe-clover-rules:
rules:
- !reference [.llvmpipe-cl-rules, rules]
- changes:
- src/gallium/frontends/clover/**/*
when: on_success
.llvmpipe-rusticl-rules:
rules:
- !reference [.llvmpipe-cl-rules, rules]
- changes:
- src/gallium/frontends/rusticl/**/*
when: on_success
.collabora-farm-rules:
rules:
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
when: never
.igalia-farm-rules:
rules:
- if: '$IGALIA_FARM == "offline"'
when: never
.anholt-farm-rules:
rules:
- if: '$ANHOLT_FARM == "offline"'
when: never
.valve-farm-rules:
rules:
- if: '$VALVE_FARM == "offline"'
when: never
.austriancoder-farm-rules:
rules:
- if: '$AUSTRIANCODER_FARM == "offline"'
when: never
# Skips freedreno jobs if either of the farms we use are offline.
.freedreno-farm-rules:
rules:
- if: '$FD_FARM == "offline"'
when: never
- !reference [.collabora-farm-rules, rules]
# Rules for changes that impact either freedreno or turnip.
.freedreno-common-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.freedreno-farm-rules, rules]
- changes: &freedreno_core_file_list
- src/freedreno/ci/**/*
- src/freedreno/common/**/*
- src/freedreno/drm/**/*
- src/freedreno/fdl/**/*
- src/freedreno/ir3/**/*
- src/freedreno/isa/**/*
- src/freedreno/registers/**/*
when: on_success
.freedreno-common-manual-rules:
rules:
- !reference [.freedreno-farm-rules, rules]
- !reference [.core-manual-rules, rules]
- changes:
*freedreno_core_file_list
when: manual
.freedreno-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-rules, rules]
- !reference [.gl-rules, rules]
- changes: &freedreno_gl_file_list
- src/freedreno/ir2/**/*
- src/gallium/drivers/freedreno/**/*
- src/gallium/winsys/freedreno/**/*
when: on_success
.freedreno-manual-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*freedreno_gl_file_list
when: manual
.turnip-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-rules, rules]
- !reference [.vulkan-rules, rules]
- changes: &freedreno_vulkan_file_list
- src/freedreno/vulkan/**/*
when: on_success
.turnip-manual-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-manual-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
*freedreno_vulkan_file_list
when: manual
# For piglit and skqp test jobs that run both GL and VK tests.
.freedreno-turnip-rules:
rules:
- !reference [.freedreno-rules, rules]
- !reference [.turnip-rules, rules]
.freedreno-rules-restricted:
stage: freedreno
rules:
- !reference [.restricted-rules, rules]
- !reference [.freedreno-rules, rules]
.freedreno-rules-performance:
stage: freedreno
rules:
- !reference [.performance-rules, rules]
- !reference [.freedreno-manual-rules, rules]
allow_failure: true # see comment in .performance-rules, which we don't inherit this line from.
variables:
LAVA_JOB_PRIORITY: 40
# Ensure that we are using the release build artifact
MINIO_ARTIFACT_NAME: mesa-arm64-release
needs:
- debian/arm64_test
- debian-arm64-release
dependencies: null
.nouveau-rules:
stage: nouveau
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes: &nouveau_file_list
- src/nouveau/**/*
- src/gallium/drivers/nouveau/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/nouveau/**/*
when: on_success
.nouveau-manual-rules:
stage: nouveau
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*nouveau_file_list
when: manual
.panfrost-midgard-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes: &panfrost_gallium_file_list
- src/gallium/drivers/panfrost/**/*
- src/gallium/winsys/panfrost/**/*
when: on_success
- changes: &panfrost_common_file_list
- src/panfrost/ci/*
- src/panfrost/include/*
- src/panfrost/lib/*
- src/panfrost/shared/*
- src/panfrost/util/*
when: on_success
- changes:
- src/panfrost/midgard/**/*
when: on_success
.panfrost-midgard-manual-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes: *panfrost_gallium_file_list
when: manual
- changes: *panfrost_common_file_list
when: manual
- changes:
- src/panfrost/midgard/**/*
when: manual
.panfrost-bifrost-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.vulkan-rules, rules]
- !reference [.gl-rules, rules]
- changes:
*panfrost_common_file_list
when: on_success
- changes:
*panfrost_gallium_file_list
when: on_success
- changes: &panfrost_vulkan_file_list
- src/panfrost/vulkan/*
when: on_success
- changes: &panfrost_bifrost_file_list
- src/panfrost/compiler/**/*
when: on_success
.panfrost-bifrost-manual-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*panfrost_common_file_list
when: manual
- changes:
*panfrost_gallium_file_list
when: manual
- changes:
*panfrost_vulkan_file_list
when: manual
- changes:
*panfrost_bifrost_file_list
when: manual
.broadcom-common-rules:
rules:
- changes: &broadcom_file_list
- src/broadcom/meson.build
- src/broadcom/ci/**/*
- src/broadcom/cle/**/*
- src/broadcom/clif/**/*
- src/broadcom/common/**/*
- src/broadcom/compiler/**/*
- src/broadcom/drm-shim/**/*
- src/broadcom/qpu/**/*
- src/broadcom/simulator/**/*
when: on_success
ci: add testing for VC4 drivers (Raspberry Pi 3) This tests OpenGL ES 2.0 CTS suite with VC4 drivers, through baremetal Raspberry Pi 3 devices. The devices are connected to a switch that supports Power over Ethernet (PoE), so the devices can be started/stopped through the switch, and also to a host that runs the GitLab runner through serial-to-USB cables, to monitor the devices to know when the testing finishes. The Raspberries uses a network boot, using NFS and TFTP. For the root filesystem, they use the one created in the armhf container. For the kernel/modules case, this is handled externally. Currently it is using the same kernel/modules that come with the Raspberry Pi OS. In future we could build them in the same armhf container. At this moment we only test armhf architecture, as this is the default one suggested by the Raspberry Pi Foundation. In future we could also add testing for arm64 architecture. Finally, for the very rare ocassions where the Raspberry Pi 3 device is booted but no data is received, it retries the testing for a second time, powering off and on the device in the process. v2: - Remove commit that exists capture devcoredump (Eric) - Squash remaining commits in one (Andres) v3: - Add missing boot timeout check (Juan) v4: - Use locks when running the PoE on/off script (Eric) - Use a timeout for serial read (Eric) v5: - Rename stage to "raspberrypi" (Eric) - Bump up arm64_test tag (Eric) v6: - Make serial buffer timeout optional (Juan) Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7628>
2020-11-15 19:57:55 +00:00
.vc4-rules:
stage: broadcom
ci: add testing for VC4 drivers (Raspberry Pi 3) This tests OpenGL ES 2.0 CTS suite with VC4 drivers, through baremetal Raspberry Pi 3 devices. The devices are connected to a switch that supports Power over Ethernet (PoE), so the devices can be started/stopped through the switch, and also to a host that runs the GitLab runner through serial-to-USB cables, to monitor the devices to know when the testing finishes. The Raspberries uses a network boot, using NFS and TFTP. For the root filesystem, they use the one created in the armhf container. For the kernel/modules case, this is handled externally. Currently it is using the same kernel/modules that come with the Raspberry Pi OS. In future we could build them in the same armhf container. At this moment we only test armhf architecture, as this is the default one suggested by the Raspberry Pi Foundation. In future we could also add testing for arm64 architecture. Finally, for the very rare ocassions where the Raspberry Pi 3 device is booted but no data is received, it retries the testing for a second time, powering off and on the device in the process. v2: - Remove commit that exists capture devcoredump (Eric) - Squash remaining commits in one (Andres) v3: - Add missing boot timeout check (Juan) v4: - Use locks when running the PoE on/off script (Eric) - Use a timeout for serial read (Eric) v5: - Rename stage to "raspberrypi" (Eric) - Bump up arm64_test tag (Eric) v6: - Make serial buffer timeout optional (Juan) Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7628>
2020-11-15 19:57:55 +00:00
rules:
- !reference [.igalia-farm-rules, rules]
- !reference [.gl-rules, rules]
- !reference [.broadcom-common-rules, rules]
ci: add testing for VC4 drivers (Raspberry Pi 3) This tests OpenGL ES 2.0 CTS suite with VC4 drivers, through baremetal Raspberry Pi 3 devices. The devices are connected to a switch that supports Power over Ethernet (PoE), so the devices can be started/stopped through the switch, and also to a host that runs the GitLab runner through serial-to-USB cables, to monitor the devices to know when the testing finishes. The Raspberries uses a network boot, using NFS and TFTP. For the root filesystem, they use the one created in the armhf container. For the kernel/modules case, this is handled externally. Currently it is using the same kernel/modules that come with the Raspberry Pi OS. In future we could build them in the same armhf container. At this moment we only test armhf architecture, as this is the default one suggested by the Raspberry Pi Foundation. In future we could also add testing for arm64 architecture. Finally, for the very rare ocassions where the Raspberry Pi 3 device is booted but no data is received, it retries the testing for a second time, powering off and on the device in the process. v2: - Remove commit that exists capture devcoredump (Eric) - Squash remaining commits in one (Andres) v3: - Add missing boot timeout check (Juan) v4: - Use locks when running the PoE on/off script (Eric) - Use a timeout for serial read (Eric) v5: - Rename stage to "raspberrypi" (Eric) - Bump up arm64_test tag (Eric) v6: - Make serial buffer timeout optional (Juan) Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7628>
2020-11-15 19:57:55 +00:00
- changes:
- src/gallium/drivers/vc4/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/vc4/**/*
when: on_success
.v3d-rules:
stage: broadcom
rules:
- !reference [.igalia-farm-rules, rules]
- !reference [.gl-rules, rules]
- !reference [.broadcom-common-rules, rules]
- changes: &v3d_file_list
- src/gallium/drivers/v3d/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/v3d/**/*
when: on_success
.v3d-manual-rules:
stage: broadcom
rules:
- !reference [.igalia-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*broadcom_file_list
when: manual
- changes:
*v3d_file_list
when: manual
.v3dv-rules:
stage: broadcom
rules:
- !reference [.igalia-farm-rules, rules]
- !reference [.vulkan-rules, rules]
- changes:
- src/broadcom/**/*
when: on_success
.lima-rules:
stage: arm
rules:
- if: '$LIMA_FARM == "offline"'
when: never
- !reference [.gl-rules, rules]
- changes:
- src/gallium/drivers/lima/**/*
- src/gallium/winsys/lima/**/*
- src/lima/**/*
when: on_success
.radv-rules:
stage: amd
rules:
- !reference [.vulkan-rules, rules]
- changes: &radv_file_list
- src/amd/**/*
- src/vulkan/**/*
when: on_success
.radv-collabora-rules:
stage: amd
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.radv-rules, rules]
.radv-valve-rules:
stage: amd
rules:
- !reference [.valve-farm-rules, rules]
- !reference [.radv-rules, rules]
.radv-valve-manual-rules:
stage: amd
rules:
- !reference [.valve-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
*radv_file_list
when: manual
.venus-rules:
stage: layered-backends
rules:
- !reference [.lavapipe-rules, rules]
- changes: &venus_file_list
- src/virtio/**/*
when: on_success
- when: never
.radeonsi-rules:
stage: amd
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes: &radeonsi_file_list
- src/gallium/drivers/radeonsi/**/*
- src/gallium/include/winsys/**/*
- src/gallium/winsys/amdgpu/**/*
- src/amd/*
- src/amd/addrlib/**/*
- src/amd/ci/*
- src/amd/common/**/*
- src/amd/llvm/**/*
- src/amd/registers/**/*
when: on_success
.radeonsi+radv-rules:
stage: amd
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes:
*radeonsi_file_list
when: on_success
- changes:
*radv_file_list
when: on_success
.radeonsi-vaapi-rules:
stage: amd
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes:
*radeonsi_file_list
when: on_success
- changes: &radeon_vcn_file_list
- src/gallium/frontends/va/**/*
when: on_success
.i915g-rules:
stage: intel
rules:
- !reference [.gl-rules, rules]
- changes: &i915g_file_list
- src/gallium/drivers/i915/**/*
- src/gallium/winsys/i915/**/*
- src/intel/**/*
when: on_success
.i915g-manual-rules:
stage: intel
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*i915g_file_list
when: manual
.crocus-rules:
stage: intel
rules:
- !reference [.gl-rules, rules]
- changes: &crocus_file_list
- src/gallium/drivers/crocus/**/*
- src/gallium/winsys/crocus/**/*
- src/intel/**/*
when: on_success
.crocus-manual-rules:
stage: intel
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*crocus_file_list
when: manual
.iris-rules:
stage: intel
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes: &iris_file_list
- src/gallium/drivers/iris/**/*
- src/gallium/winsys/iris/**/*
- src/intel/**/*
when: on_success
.iris-manual-rules:
stage: intel
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*iris_file_list
when: manual
# Unfortunately we can't sed the on_success from another rules set, so we have
# to do duplicate the files lists to set the job to manual (see
# .performance-rules)
.iris-rules-performance:
stage: intel
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.performance-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*iris_file_list
when: manual
allow_failure: true # see comment in .performance-rules, which we don't inherit this line from.
variables:
LAVA_JOB_PRIORITY: 40
MINIO_ARTIFACT_NAME: "mesa-amd64-release"
needs:
- kernel+rootfs_amd64
- debian-release
.anv-rules:
stage: intel
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.collabora-farm-rules, rules]
- !reference [.vulkan-rules, rules]
- changes:
- src/intel/**/*
when: on_success
.anv-manual-rules:
stage: intel
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
- src/intel/**/*
when: on_success
.hasvk-rules:
stage: intel
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.vulkan-rules, rules]
- changes:
- src/intel/**/*
when: on_success
.hasvk-manual-rules:
stage: intel
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
- src/intel/**/*
when: on_success
.intel-rules:
stage: intel
rules:
- !reference [.collabora-farm-rules, rules]
# Note that we trigger on changes both anv and iris, because piglit and skqp jobs test both.
- !reference [.vulkan-rules, rules]
- !reference [.gl-rules, rules]
- changes: &iris_file_list
- src/gallium/drivers/iris/**/*
- src/gallium/winsys/iris/**/*
- src/intel/**/*
when: on_success
.virgl-rules:
stage: layered-backends
rules:
- !reference [.gl-rules, rules]
- changes:
*llvmpipe_file_list
when: on_success
- changes: &virgl_file_list
- src/gallium/drivers/virgl/**/*
- src/gallium/winsys/virgl/**/*
when: on_success
.virgl-iris-manual-rules:
stage: layered-backends
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*virgl_file_list
when: manual
- changes:
*iris_file_list
when: manual
.virgl-iris-rules-performance:
stage: layered-backends
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.performance-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*llvmpipe_file_list
when: manual
- changes:
*virgl_file_list
when: manual
allow_failure: true # see comment in .performance-rules, which we don't inherit this line from.
variables:
LAVA_JOB_PRIORITY: 40
MINIO_ARTIFACT_NAME: "mesa-amd64-release"
needs:
- kernel+rootfs_amd64
- debian-release
.zink-common-rules:
rules:
- !reference [.gl-rules, rules]
- changes:
- src/gallium/drivers/zink/**/*
when: on_success
.zink-common-manual-rules:
rules:
- !reference [.gl-manual-rules, rules]
- changes:
- src/gallium/drivers/zink/**/*
when: manual
.zink-lvp-rules:
stage: layered-backends
rules:
- !reference [.lavapipe-rules, rules]
- !reference [.zink-common-rules, rules]
.zink-anv-rules:
stage: layered-backends
rules:
- !reference [.anv-rules, rules]
- !reference [.zink-common-rules, rules]
.zink-anv-manual-rules:
stage: layered-backends
rules:
- !reference [.anv-manual-rules, rules]
- !reference [.zink-common-manual-rules, rules]
.zink-anv-rules-restricted:
stage: layered-backends
rules:
- !reference [.restricted-rules, rules]
- !reference [.anv-rules, rules]
- !reference [.zink-common-rules, rules]
.zink-turnip-rules:
stage: layered-backends
rules:
- !reference [.turnip-rules, rules]
- !reference [.zink-common-rules, rules]
.zink-turnip-manual-rules:
stage: layered-backends
rules:
- !reference [.turnip-manual-rules, rules]
- !reference [.zink-common-manual-rules, rules]
.zink-radv-manual-rules:
stage: layered-backends
rules:
- !reference [.radv-valve-manual-rules, rules]
- !reference [.zink-common-manual-rules, rules]
# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the
# rules duplication manually
.windows-build-rules:
rules:
- if: '$MICROSOFT_FARM == "offline"'
when: never
- !reference [.zink-common-rules, rules]
- !reference [.vulkan-rules, rules]
- changes:
*softpipe_file_list
when: on_success
- changes:
*lavapipe_file_list
when: on_success
- changes: &d3d12_file_list
- src/gallium/drivers/d3d12/**/*
- src/gallium/frontends/wgl/*
- src/gallium/winsys/d3d12/wgl/*
- src/gallium/targets/libgl-gdi/*
- src/gallium/targets/libgl-d3d12/*
when: on_success
- changes:
- src/microsoft/**/*
- src/gallium/frontends/va/*
- src/gallium/targets/va/*
when: on_success
- changes:
*radv_file_list
when: on_success
.glon12-test-rules:
rules:
- if: '$MICROSOFT_FARM == "offline"'
when: never
- !reference [.gl-rules, rules]
- changes: *d3d12_file_list
when: on_success
- changes:
- src/microsoft/compiler/*
when: on_success
.spirv2dxil-test-rules:
rules:
- if: '$MICROSOFT_FARM == "offline"'
when: never
- !reference [.core-rules, rules]
- changes: &spirv2dxil_file_list
- src/microsoft/ci/*
- src/microsoft/compiler/*
- src/microsoft/spirv_to_dxil/*
when: on_success
.dozen-test-rules:
rules:
- if: '$MICROSOFT_FARM == "offline"'
when: never
- !reference [.vulkan-rules, rules]
- changes:
*spirv2dxil_file_list
when: on_success
- changes:
- src/microsoft/vulkan/*
when: on_success
.etnaviv-rules:
stage: etnaviv
rules:
- !reference [.austriancoder-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes: &etnaviv_file_list
- src/etnaviv/**/*
- src/gallium/drivers/etnaviv/**/*
- src/gallium/winsys/etnaviv/**/*
- src/gallium/auxiliary/renderonly/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/etnaviv/**/*
when: on_success
.etnaviv-manual-rules:
stage: etnaviv
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*etnaviv_file_list
when: manual
# Rules for unusual architectures that only build a subset of drivers
.ppc64el-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.zink-common-rules, rules]
- changes:
*softpipe_file_list
when: on_success
- changes:
*llvmpipe_file_list
when: on_success
- changes:
*lavapipe_file_list
when: on_success
- changes:
*radv_file_list
when: on_success
- changes:
*radeonsi_file_list
when: on_success
- changes:
*virgl_file_list
when: on_success
- changes:
- src/gallium/drivers/nouveau/**/*
- src/gallium/winsys/nouveau/**/*
when: on_success
.s390x-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.zink-common-rules, rules]
- changes:
*softpipe_file_list
when: on_success
- changes:
*llvmpipe_file_list
when: on_success
- changes:
*lavapipe_file_list
when: on_success
# Rules for linters
.lint-rustfmt-rules:
rules:
- !reference [.core-rules, rules]
- changes:
- src/**/*.rs
when: on_success
.lint-clang-format-rules:
rules:
- !reference [.core-rules, rules]
- changes:
- src/**/asahi/**/*
- src/**/panfrost/**/*
when: on_success