# This file list source dependencies to avoid creating/running jobs
# those outcome cannot be changed by the modifications from a branch.

# Mesa core source file dependencies
# ----------------------------------
.mesa-rules:
  rules:
    - changes: &mesa_core_file_list
      - .gitlab-ci.yml
      - .gitlab-ci/**/*
      - include/**/*
      - meson.build
      - SConstruct
      - src/*
      - src/compiler/**/*
      - src/drm-shim/**/*
      - src/egl/**/*
      - src/gbm/**/*
      - src/glx/**/*
      - src/gtest/**/*
      - src/hgl/**/*
      - src/include/**/*
      - src/loader/**/*
      - src/mapi/**/*
      - src/mesa/**/*
      - src/util/**/*

# Gallium core source file dependencies
# -------------------------------------
.gallium-rules:
  rules:
    - changes: &gallium_core_file_list
      - src/gallium/*
      - src/gallium/auxiliary/**/*
      - src/gallium/drivers/*
      - src/gallium/include/**/*
      - src/gallium/state_trackers/**/*
      - src/gallium/targets/**/*
      - src/gallium/tests/**/*
      - src/gallium/winsys/*

# Generic rule to not run the job during scheduled pipelines
# ----------------------------------------------------------
.scheduled_pipelines-rules:
  rules: &ignore_scheduled_pipelines
    if: '$CI_PIPELINE_SOURCE == "schedule"'
    when: never

.softpipe-rules:
  stage: softpipe
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
      - src/gallium/drivers/softpipe/**/*
      - src/gallium/winsys/sw/**/*
      when: on_success
    - when: never

.llvmpipe-rules:
  stage: llvmpipe
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes: &llvmpipe_file_list
      - src/gallium/drivers/llvmpipe/**/*
      - src/gallium/winsys/sw/**/*
      when: on_success
    - when: never

.freedreno-rules:
  stage: freedreno
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
      # Note: when https://gitlab.com/gitlab-org/gitlab/-/issues/198688
      # is supported, we can change the src/freedreno/ rule to explicitly
      # exclude tools, rather than having to explicitly list everything
      # else
      - src/freedreno/common/**/*
      - src/freedreno/drm/**/*
      - src/freedreno/fdl/**/*
      - src/freedreno/ir2/**/*
      - src/freedreno/ir3/**/*
      - src/freedreno/perfcntrs/**/*
      - src/freedreno/registers/**/*
      - src/freedreno/vulkan/**/*
      - src/gallium/drivers/freedreno/**/*
      - src/gallium/winsys/freedreno/**/*
      when: on_success
    - when: never

.panfrost-rules:
  stage: panfrost
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
      - src/gallium/drivers/panfrost/**/*
      - src/gallium/winsys/panfrost/**/*
      - src/panfrost/**/*
      when: on_success
    - when: never

.lima-rules:
  stage: lima
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
      - src/gallium/drivers/lima/**/*
      - src/gallium/winsys/lima/**/*
      - src/lima/**/*
      when: on_success
    - when: never

.radv-rules:
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
      - src/amd/**/*
      - src/vulkan/**/*
      when: on_success
    - when: never

.virgl-rules:
  stage: virgl
  rules:
    - *ignore_scheduled_pipelines
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
        *llvmpipe_file_list
      when: on_success
    - changes:
      - src/gallium/drivers/virgl/**/*
      - src/gallium/winsys/virgl/**/*
      when: on_success
    - when: never

.radeonsi-rules:
  stage: radeonsi
  rules:
    - changes:
        *mesa_core_file_list
      when: on_success
    - changes:
        *gallium_core_file_list
      when: on_success
    - changes:
      - src/gallium/drivers/radeonsi/**/*
      - src/gallium/winsys/amdgpu/**/*
      - src/amd/**/*
      when: on_success
    - when: never
