# 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

# 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/hgl/**/*
      - 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

# 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

# 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

.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

.llvmpipe-cl-rules:
  stage: software-renderer
  rules:
    - !reference [.no_scheduled_pipelines-rules, rules]
    - changes:
      - .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
    - changes: &clover_file_list
      - src/gallium/frontends/clover/**/*
      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

# 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 [.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-rules:
  stage: freedreno
  rules:
    - !reference [.gl-rules, rules]
    - !reference [.freedreno-common-rules, rules]
    - changes: &freedreno_gl_file_list
      - src/freedreno/ir2/**/*
      - src/gallium/drivers/freedreno/**/*
      - src/gallium/winsys/freedreno/**/*
      when: on_success

.turnip-rules:
  stage: freedreno
  rules:
    - !reference [.vulkan-rules, rules]
    - !reference [.freedreno-common-rules, rules]
    - changes:
      - src/freedreno/vulkan/**/*
      when: on_success

# 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:
    # 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)$/") &&
           ($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
      when: never
    - !reference [.freedreno-rules, rules]

# Rules for GL driver performance tracking.  We want them 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.
.gl-rules-performance:
  rules:
    - !reference [.no_scheduled_pipelines-rules, rules]
    # Run only on pre-merge pipelines from Marge
    - if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
      when: never
    - changes:
        *mesa_core_file_list
      when: manual
    - changes:
        *gallium_core_file_list
      when: manual

# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the
# rules duplication manually
.freedreno-rules-performance:
  stage: freedreno
  rules:
    - !reference [.freedreno-farm-rules, rules]
    - !reference [.gl-rules-performance, rules]
    - changes:
        *freedreno_core_file_list
      when: manual
    - changes:
        *freedreno_gl_file_list
      when: manual

.nouveau-rules:
  stage: nouveau
  rules:
    - !reference [.gl-rules, rules]
    - changes:
      - src/nouveau/**/*
      - src/gallium/drivers/nouveau/**/*
      - src/gallium/winsys/kmsro/**/*
      - src/gallium/winsys/nouveau/**/*
      when: on_success

.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-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:
      - src/panfrost/bifrost/**/*
      when: on_success

.vc4-rules:
  stage: broadcom
  rules:
    - !reference [.igalia-farm-rules, rules]
    - !reference [.gl-rules, rules]
    - changes:
      - src/broadcom/**/*
      - 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]
    - changes:
      - src/broadcom/**/*
      - src/gallium/drivers/v3d/**/*
      - src/gallium/winsys/kmsro/**/*
      - src/gallium/winsys/v3d/**/*
      when: on_success

.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 [.collabora-farm-rules, rules]
    - !reference [.vulkan-rules, rules]
    - changes: &radv_file_list
      - src/amd/**/*
      - src/vulkan/**/*
      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

# 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
# .gl-rules-performance)
.virgl-iris-rules-performance:
  stage: layered-backends
  rules:
    - !reference [.collabora-farm-rules, rules]
    - !reference [.gl-rules-performance, rules]
    - changes:
        *llvmpipe_file_list
      when: manual
    - changes:
        *virgl_file_list
      when: manual

.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/common/**/*
      - src/amd/llvm/**/*
      - src/amd/registers/**/*
      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:
      - src/gallium/drivers/i915/**/*
      - src/gallium/winsys/i915/**/*
      - src/intel/**/*
      when: on_success

.crocus-rules:
  stage: intel
  rules:
    - !reference [.gl-rules, rules]
    - changes:
      - src/gallium/drivers/crocus/**/*
      - src/gallium/winsys/crocus/**/*
      - src/intel/**/*
      when: on_success

.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

# 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
# .gl-rules-performance)
.iris-rules-performance:
  stage: intel
  rules:
    - !reference [.collabora-farm-rules, rules]
    - !reference [.gl-rules-performance, rules]
    - changes:
        *iris_file_list
      when: manual

.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

.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

.zink-common-rules:
  rules:
    - !reference [.gl-rules, rules]
    - changes:
      - src/gallium/drivers/zink/**/*
      when: on_success

.zink-lvp-rules:
  stage: layered-backends
  rules:
    - !reference [.zink-common-rules, rules]
    - !reference [.lavapipe-rules, rules]

.zink-anv-rules:
  stage: layered-backends
  rules:
    - !reference [.zink-common-rules, rules]
    - !reference [.anv-rules, rules]

.zink-turnip-rules:
  stage: layered-backends
  rules:
    - !reference [.zink-common-rules, rules]
    - !reference [.turnip-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/**/*
      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 [.no_scheduled_pipelines-rules, rules]
    - !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 [.gl-rules, rules]
    - changes:
      - 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

# 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
