
This commit adds etnaviv.xml which describes the used ISA. Quite some time was spend to to get it into that shape by creating a big collection of shader asm generated by the binary blob. These shaders are used as basis for test driven development for this ISA specification. The xml has some black spots but the internal disasm is used by developers so that should be no problem. Some refinement will happen during normal development. This commit adds only disasm support. Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20144>
263 lines
8.7 KiB
YAML
263 lines
8.7 KiB
YAML
# 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
|
|
retry:
|
|
max: 1
|
|
# Don't retry on script_failure, job_execution_timeout, runner_unsupported,
|
|
# stale_schedule, archived_failure, or unmet_prerequisites
|
|
when:
|
|
- api_failure
|
|
- runner_system_failure
|
|
- scheduler_failure
|
|
- data_integrity_failure
|
|
- unknown_failure
|
|
|
|
|
|
# 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|vigneshraman)$/") &&
|
|
($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
|
|
- meson_options.txt
|
|
- build-support/**/*
|
|
- subprojects/**/*
|
|
- .gitattributes
|
|
- src/*
|
|
- src/compiler/**/*
|
|
- src/drm-shim/**/*
|
|
- src/gbm/**/*
|
|
- src/gtest/**/*
|
|
# 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:
|
|
retry: !reference [.scheduled_pipeline-rules, retry]
|
|
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:
|
|
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
|
|
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
|
|
S3_ARTIFACT_NAME: mesa-${ARCH}-default-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:x86_64:
|
|
extends:
|
|
- .piglit-performance-base
|
|
needs:
|
|
- kernel+rootfs_x86_64
|
|
- debian-release
|
|
|
|
# Mesa source file dependencies that may impact any GL driver test job.
|
|
.gallium-core-rules:
|
|
rules:
|
|
- !reference [.core-rules, rules]
|
|
- 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-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
|
|
- !reference [.gallium-core-rules, rules]
|
|
|
|
.gl-manual-rules:
|
|
retry: !reference [.scheduled_pipeline-rules, retry]
|
|
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:
|
|
retry: !reference [.scheduled_pipeline-rules, retry]
|
|
rules:
|
|
- !reference [.core-manual-rules, rules]
|
|
- changes:
|
|
*vulkan_file_list
|
|
when: manual
|
|
|
|
# Rules for unusual architectures that only build a subset of drivers
|
|
.ppc64el-rules:
|
|
rules:
|
|
- !reference [.never-post-merge-rules, rules]
|
|
- !reference [.no_scheduled_pipelines-rules, rules]
|
|
- !reference [.zink-common-rules, rules]
|
|
- !reference [.softpipe-rules, rules]
|
|
- !reference [.llvmpipe-rules, rules]
|
|
- !reference [.lavapipe-rules, rules]
|
|
- !reference [.radv-rules, rules]
|
|
- !reference [.radeonsi-rules, rules]
|
|
- !reference [.virgl-rules, rules]
|
|
- !reference [.nouveau-rules, rules]
|
|
|
|
.s390x-rules:
|
|
rules:
|
|
- !reference [.never-post-merge-rules, rules]
|
|
- !reference [.no_scheduled_pipelines-rules, rules]
|
|
- !reference [.zink-common-rules, rules]
|
|
- !reference [.softpipe-rules, rules]
|
|
- !reference [.llvmpipe-rules, rules]
|
|
- !reference [.lavapipe-rules, rules]
|
|
|
|
# Rules for linters
|
|
.lint-rustfmt-rules:
|
|
rules:
|
|
- !reference [.never-post-merge-rules, rules]
|
|
- !reference [.core-rules, rules]
|
|
# in merge pipeline, formatting checks are not allowed to fail
|
|
- if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
changes: &rust_file_list
|
|
- src/**/*.rs
|
|
when: on_success
|
|
allow_failure: false
|
|
# in other pipelines, formatting checks are allowed to fail
|
|
- changes: *rust_file_list
|
|
when: on_success
|
|
allow_failure: true
|
|
|
|
.lint-clang-format-rules:
|
|
rules:
|
|
- !reference [.never-post-merge-rules, rules]
|
|
- !reference [.core-rules, rules]
|
|
# in merge pipeline, formatting checks are not allowed to fail
|
|
- if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
changes: &clang_format_file_list
|
|
- .clang-format
|
|
- .clang-format-include
|
|
- .clang-format-ignore
|
|
- src/**/.clang-format
|
|
- src/egl/**/*
|
|
- src/amd/vulkan/**/*
|
|
- src/amd/compiler/**/*
|
|
- src/etnaviv/isa/**/*
|
|
when: on_success
|
|
allow_failure: false
|
|
# in other pipelines, formatting checks are allowed to fail
|
|
- changes: *clang_format_file_list
|
|
when: on_success
|
|
allow_failure: true
|