Compare commits
11 Commits
mesa-24.2.
...
explicit-s
Author | SHA1 | Date | |
---|---|---|---|
|
aa5bc3e41f | ||
|
e4e3436d45 | ||
|
becb5d5161 | ||
|
06c2af994b | ||
|
d9cbc79941 | ||
|
e209b02b97 | ||
|
8a098f591b | ||
|
754f52e1e1 | ||
|
00dba3992c | ||
|
9c8f205131 | ||
|
f17f43b149 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
.cache
|
||||
.vscode*
|
||||
*.pyc
|
||||
*.pyo
|
||||
|
@@ -33,7 +33,7 @@ workflow:
|
||||
# merge pipeline
|
||||
- if: &is-merge-attempt $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
variables:
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
MESA_CI_PERFORMANCE_ENABLED: 1
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: "" # Empty tags are ignored by gitlab
|
||||
# post-merge pipeline
|
||||
@@ -41,24 +41,24 @@ workflow:
|
||||
# nightly pipeline
|
||||
- if: &is-scheduled-pipeline $CI_PIPELINE_SOURCE == "schedule"
|
||||
variables:
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
JOB_PRIORITY: 50
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: priority:low
|
||||
# pipeline for direct pushes that bypassed the CI
|
||||
- if: &is-direct-push $CI_PROJECT_NAMESPACE == "mesa" && $CI_PIPELINE_SOURCE == "push" && $GITLAB_USER_LOGIN != "marge-bot"
|
||||
variables:
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
JOB_PRIORITY: 70
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
JOB_PRIORITY: 40
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: priority:low
|
||||
# pre-merge or fork pipeline
|
||||
- if: $FORCE_KERNEL_TAG != null
|
||||
variables:
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${FORCE_KERNEL_TAG}
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${FORCE_KERNEL_TAG}
|
||||
JOB_PRIORITY: 50
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: priority:low
|
||||
- if: $FORCE_KERNEL_TAG == null
|
||||
variables:
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG}
|
||||
JOB_PRIORITY: 50
|
||||
VALVE_INFRA_VANGOGH_JOB_PRIORITY: priority:low
|
||||
|
||||
@@ -72,24 +72,14 @@ variables:
|
||||
bash download-git-cache.sh
|
||||
rm download-git-cache.sh
|
||||
set +o xtrace
|
||||
S3_JWT_FILE: /s3_jwt
|
||||
CI_JOB_JWT_FILE: /minio_jwt
|
||||
S3_HOST: s3.freedesktop.org
|
||||
# This bucket is used to fetch the kernel image
|
||||
S3_KERNEL_BUCKET: mesa-rootfs
|
||||
# Bucket for git cache
|
||||
S3_GITCACHE_BUCKET: git-cache
|
||||
# Bucket for the pipeline artifacts pushed to S3
|
||||
S3_ARTIFACTS_BUCKET: artifacts
|
||||
# Buckets for traces
|
||||
S3_TRACIE_RESULTS_BUCKET: mesa-tracie-results
|
||||
S3_TRACIE_PUBLIC_BUCKET: mesa-tracie-public
|
||||
S3_TRACIE_PRIVATE_BUCKET: mesa-tracie-private
|
||||
# per-pipeline artifact storage on MinIO
|
||||
PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/${S3_ARTIFACTS_BUCKET}/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
|
||||
PIPELINE_ARTIFACTS_BASE: ${S3_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: "${S3_HOST}/${S3_TRACIE_RESULTS_BUCKET}/$FDO_UPSTREAM_REPO"
|
||||
PIGLIT_REPLAY_REFERENCE_IMAGES_BASE: "${S3_HOST}/mesa-tracie-results/$FDO_UPSTREAM_REPO"
|
||||
# For individual CI farm status see .ci-farms folder
|
||||
# Disable farm with `git mv .ci-farms{,-disabled}/$farm_name`
|
||||
# Re-enable farm with `git mv .ci-farms{-disabled,}/$farm_name`
|
||||
@@ -97,22 +87,15 @@ variables:
|
||||
ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts
|
||||
# Python scripts for structured logger
|
||||
PYTHONPATH: "$PYTHONPATH:$CI_PROJECT_DIR/install"
|
||||
# Drop once deqp-runner is upgraded to > 0.18.0
|
||||
MESA_VK_ABORT_ON_DEVICE_LOSS: 1
|
||||
# Avoid the wall of "Unsupported SPIR-V capability" warnings in CI job log, hiding away useful output
|
||||
MESA_SPIRV_LOG_LEVEL: error
|
||||
|
||||
default:
|
||||
id_tokens:
|
||||
S3_JWT:
|
||||
aud: https://s3.freedesktop.org
|
||||
before_script:
|
||||
- >
|
||||
export SCRIPTS_DIR=$(mktemp -d) &&
|
||||
curl -L -s --retry 4 -f --retry-all-errors --retry-delay 60 -O --output-dir "${SCRIPTS_DIR}" "${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/setup-test-env.sh" &&
|
||||
. ${SCRIPTS_DIR}/setup-test-env.sh &&
|
||||
echo -n "${S3_JWT}" > "${S3_JWT_FILE}" &&
|
||||
unset CI_JOB_JWT S3_JWT # Unsetting vulnerable env variables
|
||||
echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}" &&
|
||||
unset CI_JOB_JWT # Unsetting vulnerable env variables
|
||||
|
||||
after_script:
|
||||
# Work around https://gitlab.com/gitlab-org/gitlab/-/issues/20338
|
||||
@@ -121,9 +104,9 @@ default:
|
||||
- >
|
||||
set +x
|
||||
|
||||
test -e "${S3_JWT_FILE}" &&
|
||||
export S3_JWT="$(<${S3_JWT_FILE})" &&
|
||||
rm "${S3_JWT_FILE}"
|
||||
test -e "${CI_JOB_JWT_FILE}" &&
|
||||
export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" &&
|
||||
rm "${CI_JOB_JWT_FILE}"
|
||||
|
||||
# Retry when job fails. Failed jobs can be found in the Mesa CI Daily Reports:
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/?sort=created_date&state=opened&label_name%5B%5D=CI%20daily
|
||||
@@ -276,7 +259,8 @@ make git archive:
|
||||
# compress the current folder
|
||||
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
|
||||
|
||||
- ci-fairy s3cp --token-file "${S3_JWT_FILE}" ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
|
||||
- ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
|
||||
|
||||
|
||||
# Sanity checks of MR settings and commit logs
|
||||
sanity:
|
||||
@@ -297,9 +281,9 @@ sanity:
|
||||
image_tags=(
|
||||
DEBIAN_BASE_TAG
|
||||
DEBIAN_BUILD_TAG
|
||||
DEBIAN_TEST_ANDROID_TAG
|
||||
DEBIAN_TEST_GL_TAG
|
||||
DEBIAN_TEST_VK_TAG
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||
DEBIAN_X86_64_TEST_GL_TAG
|
||||
DEBIAN_X86_64_TEST_VK_TAG
|
||||
ALPINE_X86_64_BUILD_TAG
|
||||
ALPINE_X86_64_LAVA_SSH_TAG
|
||||
FEDORA_X86_64_BUILD_TAG
|
||||
@@ -326,22 +310,6 @@ sanity:
|
||||
- placeholder-job
|
||||
|
||||
|
||||
mr-label-maker-test:
|
||||
extends:
|
||||
- .fdo.ci-fairy
|
||||
stage: sanity
|
||||
rules:
|
||||
- !reference [.mr-label-maker-rules, rules]
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
timeout: 10m
|
||||
script:
|
||||
- set -eu
|
||||
- python3 -m venv .venv
|
||||
- source .venv/bin/activate
|
||||
- pip install git+https://gitlab.freedesktop.org/freedesktop/mr-label-maker
|
||||
- mr-label-maker --dry-run --mr $CI_MERGE_REQUEST_IID
|
||||
|
||||
# Jobs that need to pass before spending hardware resources on further testing
|
||||
.required-for-hardware-jobs:
|
||||
needs:
|
||||
|
@@ -5,25 +5,17 @@ target:
|
||||
id: '{{ ci_runner_id }}'
|
||||
|
||||
timeouts:
|
||||
|
||||
first_console_activity: # This limits the time it can take to receive the first console log
|
||||
minutes: {{ timeout_first_console_activity_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_first_console_activity_seconds | default(0, true) }}
|
||||
retries: {{ timeout_first_console_activity_retries }}
|
||||
|
||||
minutes: {{ timeout_first_minutes }}
|
||||
retries: {{ timeout_first_retries }}
|
||||
console_activity: # Reset every time we receive a message from the logs
|
||||
minutes: {{ timeout_console_activity_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_console_activity_seconds | default(0, true) }}
|
||||
retries: {{ timeout_console_activity_retries }}
|
||||
|
||||
minutes: {{ timeout_minutes }}
|
||||
retries: {{ timeout_retries }}
|
||||
boot_cycle:
|
||||
minutes: {{ timeout_boot_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_boot_seconds | default(0, true) }}
|
||||
minutes: {{ timeout_boot_minutes }}
|
||||
retries: {{ timeout_boot_retries }}
|
||||
|
||||
overall: # Maximum time the job can take, not overrideable by the "continue" deployment
|
||||
minutes: {{ timeout_overall_minutes | default(0, true) }}
|
||||
seconds: {{ timeout_overall_seconds | default(0, true) }}
|
||||
minutes: {{ timeout_overall_minutes }}
|
||||
retries: 0
|
||||
# no retries possible here
|
||||
|
||||
@@ -39,38 +31,29 @@ console_patterns:
|
||||
job_success:
|
||||
regex: >-
|
||||
{{ job_success_regex }}
|
||||
{% if job_warn_regex %}
|
||||
job_warn:
|
||||
regex: >-
|
||||
{{ job_warn_regex }}
|
||||
{% endif %}
|
||||
|
||||
# Environment to deploy
|
||||
deployment:
|
||||
# Initial boot
|
||||
start:
|
||||
storage:
|
||||
http:
|
||||
- path: "/b2c-extra-args"
|
||||
data: >
|
||||
b2c.pipefail b2c.poweroff_delay={{ poweroff_delay }}
|
||||
b2c.minio="gateway,{{ '{{' }} minio_url }},{{ '{{' }} job_bucket_access_key }},{{ '{{' }} job_bucket_secret_key }}"
|
||||
b2c.volume="{{ '{{' }} job_bucket }}-results,mirror=gateway/{{ '{{' }} job_bucket }},pull_on=pipeline_start,push_on=changes,overwrite{% for excl in job_volume_exclusions %},exclude={{ excl }}{% endfor %},remove,expiration=pipeline_end,preserve"
|
||||
{% for volume in volumes %}
|
||||
b2c.volume={{ volume }}
|
||||
{% endfor %}
|
||||
b2c.service="--privileged --tls-verify=false --pid=host docker://{{ '{{' }} fdo_proxy_registry }}/gfx-ci/ci-tron/telegraf:latest" b2c.hostname=dut-{{ '{{' }} machine.full_name }}
|
||||
b2c.container="-v {{ '{{' }} job_bucket }}-results:{{ working_dir }} -w {{ working_dir }} {% for mount_volume in mount_volumes %} -v {{ mount_volume }}{% endfor %} --tls-verify=false docker://{{ local_container }} {{ container_cmd }}"
|
||||
kernel:
|
||||
url: '{{ kernel_url }}'
|
||||
|
||||
# NOTE: b2c.cache_device should not be here, but this works around
|
||||
# a limitation of b2c which will be removed in the next release
|
||||
cmdline: >
|
||||
SALAD.machine_id={{ '{{' }} machine_id }}
|
||||
console={{ '{{' }} local_tty_device }},115200
|
||||
b2c.cache_device=auto b2c.ntp_peer=10.42.0.1
|
||||
b2c.extra_args_url={{ '{{' }} job.http.url }}/b2c-extra-args
|
||||
console={{ '{{' }} local_tty_device }},115200 earlyprintk=vga,keep
|
||||
loglevel={{ log_level }} no_hash_pointers
|
||||
b2c.service="--privileged --tls-verify=false --pid=host docker://{{ '{{' }} fdo_proxy_registry }}/gfx-ci/ci-tron/telegraf:latest" b2c.hostname=dut-{{ '{{' }} machine.full_name }}
|
||||
b2c.container="-ti --tls-verify=false docker://{{ '{{' }} fdo_proxy_registry }}/gfx-ci/ci-tron/machine-registration:latest check"
|
||||
b2c.ntp_peer=10.42.0.1 b2c.pipefail b2c.cache_device=auto b2c.poweroff_delay={{ poweroff_delay }}
|
||||
b2c.minio="gateway,{{ '{{' }} minio_url }},{{ '{{' }} job_bucket_access_key }},{{ '{{' }} job_bucket_secret_key }}"
|
||||
b2c.volume="{{ '{{' }} job_bucket }}-results,mirror=gateway/{{ '{{' }} job_bucket }},pull_on=pipeline_start,push_on=changes,overwrite{% for excl in job_volume_exclusions %},exclude={{ excl }}{% endfor %},remove,expiration=pipeline_end,preserve"
|
||||
{% for volume in volumes %}
|
||||
b2c.volume={{ volume }}
|
||||
{% endfor %}
|
||||
b2c.container="-v {{ '{{' }} job_bucket }}-results:{{ working_dir }} -w {{ working_dir }} {% for mount_volume in mount_volumes %} -v {{ mount_volume }}{% endfor %} --tls-verify=false docker://{{ local_container }} {{ container_cmd }}"
|
||||
{% if kernel_cmdline_extras is defined %}
|
||||
{{ kernel_cmdline_extras }}
|
||||
{% endif %}
|
||||
@@ -78,7 +61,3 @@ deployment:
|
||||
initramfs:
|
||||
url: '{{ initramfs_url }}'
|
||||
|
||||
{% if dtb_url is defined %}
|
||||
dtb:
|
||||
url: '{{ dtb_url }}'
|
||||
{% endif %}
|
||||
|
@@ -10,7 +10,7 @@ if [ -z "$BM_POE_ADDRESS" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SNMP_KEY="SNMPv2-SMI::mib-2.105.1.1.1.3.1.$((${BM_POE_BASE:-0} + BM_POE_INTERFACE))"
|
||||
SNMP_KEY="SNMPv2-SMI::mib-2.105.1.1.1.3.1.$((48 + BM_POE_INTERFACE))"
|
||||
SNMP_OFF="i 2"
|
||||
|
||||
flock /var/run/poe.lock -c "snmpset -v2c -r 3 -t 30 -cmesaci $BM_POE_ADDRESS $SNMP_KEY $SNMP_OFF"
|
||||
|
@@ -10,7 +10,7 @@ if [ -z "$BM_POE_ADDRESS" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SNMP_KEY="SNMPv2-SMI::mib-2.105.1.1.1.3.1.$((${BM_POE_BASE:-0} + BM_POE_INTERFACE))"
|
||||
SNMP_KEY="SNMPv2-SMI::mib-2.105.1.1.1.3.1.$((48 + BM_POE_INTERFACE))"
|
||||
SNMP_ON="i 1"
|
||||
SNMP_OFF="i 2"
|
||||
|
||||
|
@@ -64,7 +64,7 @@ class PoERun:
|
||||
if not boot_detected:
|
||||
self.print_error(
|
||||
"Something wrong; couldn't detect the boot start up sequence")
|
||||
return 2
|
||||
return 1
|
||||
|
||||
self.logger.create_job_phase("test")
|
||||
for line in self.ser.lines(timeout=self.test_timeout, phase="test"):
|
||||
|
@@ -13,7 +13,7 @@ date +'%F %T'
|
||||
|
||||
# Make JWT token available as file in the bare-metal storage to enable access
|
||||
# to MinIO
|
||||
cp "${S3_JWT_FILE}" "${rootfs_dst}${S3_JWT_FILE}"
|
||||
cp "${CI_JOB_JWT_FILE}" "${rootfs_dst}${CI_JOB_JWT_FILE}"
|
||||
|
||||
date +'%F %T'
|
||||
|
||||
|
@@ -17,6 +17,7 @@
|
||||
paths:
|
||||
- _build/meson-logs/*.txt
|
||||
- _build/meson-logs/strace
|
||||
- shader-db
|
||||
- artifacts
|
||||
|
||||
# Just Linux
|
||||
@@ -70,14 +71,13 @@ debian-testing:
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-nine=true
|
||||
-D gallium-va=enabled
|
||||
-D gallium-rusticl=true
|
||||
GALLIUM_DRIVERS: "llvmpipe,softpipe,virgl,radeonsi,zink,crocus,iris,i915,r300,svga"
|
||||
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915,r300"
|
||||
VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
EXTRA_OPTION: >
|
||||
@@ -138,7 +138,7 @@ debian-testing-msan:
|
||||
# GLSL has some issues in sexpression reading.
|
||||
# gtest has issues in its test initialization.
|
||||
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
||||
GALLIUM_DRIVERS: "freedreno,iris,nouveau,r300,r600,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||
GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||
VULKAN_DRIVERS: intel,amd,broadcom,virtio
|
||||
# Do a host build for intel-clc (msan complains about
|
||||
# uninitialized values in the LLVM libs)
|
||||
@@ -154,9 +154,7 @@ debian-testing-msan:
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
# Disabled because it is unacceptably slow and blocks too many MRs
|
||||
# Should be re-enabled once this problem has been fixed.
|
||||
.debian-build-testing:
|
||||
debian-build-testing:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
@@ -165,7 +163,6 @@ debian-testing-msan:
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
@@ -174,9 +171,9 @@ debian-testing-msan:
|
||||
-D gallium-omx=bellagio
|
||||
-D gallium-va=enabled
|
||||
-D gallium-xa=enabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-nine=true
|
||||
-D gallium-rusticl=false
|
||||
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,freedreno,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
|
||||
VULKAN_DRIVERS: swrast
|
||||
EXTRA_OPTION: >
|
||||
-D spirv-to-dxil=true
|
||||
@@ -184,7 +181,6 @@ debian-testing-msan:
|
||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi
|
||||
-D b_lto=true
|
||||
LLVM_VERSION: 15
|
||||
S3_ARTIFACT_NAME: debian-build-testing
|
||||
script: |
|
||||
section_start lava-pytest "lava-pytest"
|
||||
.gitlab-ci/lava/lava-pytest.sh
|
||||
@@ -192,29 +188,11 @@ debian-testing-msan:
|
||||
.gitlab-ci/run-shellcheck.sh
|
||||
section_switch yamllint "yamllint"
|
||||
.gitlab-ci/run-yamllint.sh
|
||||
section_end yamllint
|
||||
section_switch meson "meson"
|
||||
.gitlab-ci/meson/build.sh
|
||||
.gitlab-ci/prepare-artifacts.sh
|
||||
timeout: 15m
|
||||
|
||||
# Disabled because it currently needs debian-build-testing
|
||||
.shader-db:
|
||||
stage: code-validation
|
||||
extends:
|
||||
- .use-debian/x86_64_build
|
||||
- .container+build-rules
|
||||
needs:
|
||||
- .debian-build-testing
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: debian-build-testing
|
||||
before_script:
|
||||
- !reference [.download_s3, before_script]
|
||||
script: |
|
||||
section_switch shader-db "shader-db"
|
||||
.gitlab-ci/run-shader-db.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- shader-db
|
||||
timeout: 15m
|
||||
timeout: 30m
|
||||
|
||||
# Test a release build with -Werror so new warnings don't sneak in.
|
||||
debian-release:
|
||||
@@ -228,7 +206,6 @@ debian-release:
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
@@ -240,7 +217,7 @@ debian-release:
|
||||
-D gallium-nine=false
|
||||
-D gallium-rusticl=false
|
||||
-D llvm=enabled
|
||||
GALLIUM_DRIVERS: "i915,iris,nouveau,freedreno,r300,svga,llvmpipe,softpipe,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,crocus"
|
||||
GALLIUM_DRIVERS: "i915,iris,nouveau,kmsro,freedreno,r300,svga,swrast,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,crocus"
|
||||
VULKAN_DRIVERS: "amd,imagination-experimental,microsoft-experimental"
|
||||
EXTRA_OPTION: >
|
||||
-D spirv-to-dxil=true
|
||||
@@ -270,10 +247,10 @@ alpine-build-testing:
|
||||
-D glx=disabled
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D glvnd=false
|
||||
-D platforms=wayland
|
||||
LLVM_VERSION: "16"
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,lima,nouveau,panfrost,r300,r600,radeonsi,svga,llvmpipe,softpipe,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-extra-hud=true
|
||||
@@ -310,7 +287,7 @@ fedora-release:
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=enabled
|
||||
-D glvnd=true
|
||||
-D platforms=x11,wayland
|
||||
EXTRA_OPTION: >
|
||||
-D b_lto=true
|
||||
@@ -321,7 +298,7 @@ fedora-release:
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,lima,nouveau,panfrost,r300,r600,radeonsi,svga,llvmpipe,softpipe,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-extra-hud=true
|
||||
@@ -363,7 +340,6 @@ debian-android:
|
||||
-D glx=disabled
|
||||
-D gbm=disabled
|
||||
-D egl=enabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=android
|
||||
EXTRA_OPTION: >
|
||||
-D android-stub=true
|
||||
@@ -433,7 +409,7 @@ debian-android:
|
||||
- debian/arm64_build
|
||||
variables:
|
||||
VULKAN_DRIVERS: freedreno,broadcom
|
||||
GALLIUM_DRIVERS: "etnaviv,freedreno,lima,nouveau,panfrost,llvmpipe,softpipe,tegra,v3d,vc4,zink"
|
||||
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4,zink"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
tags:
|
||||
- aarch64
|
||||
@@ -444,10 +420,6 @@ debian-arm32:
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
CROSS: armhf
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
# remove llvmpipe from the .meson-arm list because here we have llvm=disabled
|
||||
GALLIUM_DRIVERS: "etnaviv,freedreno,lima,nouveau,panfrost,softpipe,tegra,v3d,vc4,zink"
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D valgrind=disabled
|
||||
@@ -463,8 +435,6 @@ debian-arm32-asan:
|
||||
extends:
|
||||
- debian-arm32
|
||||
variables:
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D b_sanitize=address
|
||||
@@ -483,16 +453,13 @@ debian-arm64:
|
||||
-Wno-error=array-bounds
|
||||
-Wno-error=stringop-truncation
|
||||
VULKAN_DRIVERS: "freedreno,broadcom,panfrost,imagination-experimental"
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D valgrind=disabled
|
||||
-D imagination-srv=true
|
||||
-D perfetto=true
|
||||
-D freedreno-kmds=msm,virtio
|
||||
-D teflon=true
|
||||
GALLIUM_ST:
|
||||
-D gallium-rusticl=true
|
||||
S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
@@ -502,9 +469,8 @@ debian-arm64-asan:
|
||||
extends:
|
||||
- debian-arm64
|
||||
variables:
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D b_sanitize=address
|
||||
-D valgrind=disabled
|
||||
-D tools=dlclose-skip
|
||||
@@ -518,8 +484,6 @@ debian-arm64-build-test:
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
VULKAN_DRIVERS: "amd"
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
EXTRA_OPTION: >
|
||||
-Dtools=panfrost,imagination
|
||||
|
||||
@@ -558,7 +522,7 @@ debian-clang:
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=enabled
|
||||
-D glvnd=true
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
@@ -575,7 +539,7 @@ debian-clang:
|
||||
-D shared-llvm=enabled
|
||||
-D opencl-spirv=true
|
||||
-D shared-glapi=enabled
|
||||
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,freedreno,llvmpipe,softpipe,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau
|
||||
EXTRA_OPTION:
|
||||
-D spirv-to-dxil=true
|
||||
@@ -640,7 +604,6 @@ debian-vulkan:
|
||||
-D opengl=false
|
||||
-D gles1=disabled
|
||||
-D gles2=disabled
|
||||
-D glvnd=disabled
|
||||
-D platforms=x11,wayland
|
||||
-D osmesa=false
|
||||
GALLIUM_ST: >
|
||||
@@ -670,10 +633,8 @@ debian-x86_32:
|
||||
BUILDTYPE: debug
|
||||
CROSS: i386
|
||||
VULKAN_DRIVERS: intel,amd,swrast,virtio
|
||||
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,llvmpipe,softpipe,virgl,zink,crocus,d3d12"
|
||||
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink,crocus,d3d12"
|
||||
LLVM_VERSION: 15
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D intel-clc=system
|
||||
@@ -698,11 +659,9 @@ debian-s390x:
|
||||
- kvm
|
||||
variables:
|
||||
CROSS: s390x
|
||||
GALLIUM_DRIVERS: "llvmpipe,softpipe,zink"
|
||||
GALLIUM_DRIVERS: "swrast,zink"
|
||||
LLVM_VERSION: 15
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
|
||||
debian-ppc64el:
|
||||
extends:
|
||||
@@ -712,7 +671,5 @@ debian-ppc64el:
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
CROSS: ppc64el
|
||||
GALLIUM_DRIVERS: "nouveau,radeonsi,llvmpipe,softpipe,virgl,zink"
|
||||
GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl,zink"
|
||||
VULKAN_DRIVERS: "amd,swrast"
|
||||
DRI_LOADERS:
|
||||
-D glvnd=disabled
|
||||
|
@@ -1,139 +1,130 @@
|
||||
#!/bin/bash
|
||||
|
||||
VARS=(
|
||||
ACO_DEBUG
|
||||
ARTIFACTS_BASE_URL
|
||||
ASAN_OPTIONS
|
||||
BASE_SYSTEM_FORK_HOST_PREFIX
|
||||
BASE_SYSTEM_MAINLINE_HOST_PREFIX
|
||||
CI_COMMIT_BRANCH
|
||||
CI_COMMIT_REF_NAME
|
||||
CI_COMMIT_TITLE
|
||||
CI_JOB_ID
|
||||
S3_JWT_FILE
|
||||
CI_JOB_STARTED_AT
|
||||
CI_JOB_NAME
|
||||
CI_JOB_URL
|
||||
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||
CI_MERGE_REQUEST_TITLE
|
||||
CI_NODE_INDEX
|
||||
CI_NODE_TOTAL
|
||||
CI_PAGES_DOMAIN
|
||||
CI_PIPELINE_ID
|
||||
CI_PIPELINE_URL
|
||||
CI_PROJECT_DIR
|
||||
CI_PROJECT_NAME
|
||||
CI_PROJECT_PATH
|
||||
CI_PROJECT_ROOT_NAMESPACE
|
||||
CI_RUNNER_DESCRIPTION
|
||||
CI_SERVER_URL
|
||||
CROSVM_GALLIUM_DRIVER
|
||||
CROSVM_GPU_ARGS
|
||||
CURRENT_SECTION
|
||||
DEQP_BIN_DIR
|
||||
DEQP_CONFIG
|
||||
DEQP_EXPECTED_RENDERER
|
||||
DEQP_FRACTION
|
||||
DEQP_HEIGHT
|
||||
DEQP_RESULTS_DIR
|
||||
DEQP_RUNNER_OPTIONS
|
||||
DEQP_SUITE
|
||||
DEQP_TEMP_DIR
|
||||
DEQP_VER
|
||||
DEQP_WIDTH
|
||||
DEVICE_NAME
|
||||
DRIVER_NAME
|
||||
EGL_PLATFORM
|
||||
ETNA_MESA_DEBUG
|
||||
FDO_CI_CONCURRENT
|
||||
FDO_UPSTREAM_REPO
|
||||
FD_MESA_DEBUG
|
||||
FLAKES_CHANNEL
|
||||
FREEDRENO_HANGCHECK_MS
|
||||
GALLIUM_DRIVER
|
||||
GALLIVM_PERF
|
||||
GPU_VERSION
|
||||
GTEST
|
||||
GTEST_FAILS
|
||||
GTEST_FRACTION
|
||||
GTEST_RESULTS_DIR
|
||||
GTEST_RUNNER_OPTIONS
|
||||
GTEST_SKIPS
|
||||
HWCI_FREQ_MAX
|
||||
HWCI_KERNEL_MODULES
|
||||
HWCI_KVM
|
||||
HWCI_START_WESTON
|
||||
HWCI_START_XORG
|
||||
HWCI_TEST_SCRIPT
|
||||
IR3_SHADER_DEBUG
|
||||
JOB_ARTIFACTS_BASE
|
||||
JOB_RESULTS_PATH
|
||||
JOB_ROOTFS_OVERLAY_PATH
|
||||
KERNEL_IMAGE_BASE
|
||||
KERNEL_IMAGE_NAME
|
||||
LD_LIBRARY_PATH
|
||||
LIBGL_ALWAYS_SOFTWARE
|
||||
LP_NUM_THREADS
|
||||
MESA_BASE_TAG
|
||||
MESA_BUILD_PATH
|
||||
MESA_DEBUG
|
||||
MESA_GLES_VERSION_OVERRIDE
|
||||
MESA_GLSL_VERSION_OVERRIDE
|
||||
MESA_GL_VERSION_OVERRIDE
|
||||
MESA_IMAGE
|
||||
MESA_IMAGE_PATH
|
||||
MESA_IMAGE_TAG
|
||||
MESA_LOADER_DRIVER_OVERRIDE
|
||||
MESA_SPIRV_LOG_LEVEL
|
||||
MESA_TEMPLATES_COMMIT
|
||||
MESA_VK_ABORT_ON_DEVICE_LOSS
|
||||
MESA_VK_IGNORE_CONFORMANCE_WARNING
|
||||
S3_HOST
|
||||
S3_RESULTS_UPLOAD
|
||||
NIR_DEBUG
|
||||
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER
|
||||
PAN_MESA_DEBUG
|
||||
PANVK_DEBUG
|
||||
PIGLIT_FRACTION
|
||||
PIGLIT_NO_WINDOW
|
||||
PIGLIT_OPTIONS
|
||||
PIGLIT_PLATFORM
|
||||
PIGLIT_PROFILES
|
||||
PIGLIT_REPLAY_ANGLE_TAG
|
||||
PIGLIT_REPLAY_ARTIFACTS_BASE_URL
|
||||
PIGLIT_REPLAY_DEVICE_NAME
|
||||
PIGLIT_REPLAY_EXTRA_ARGS
|
||||
PIGLIT_REPLAY_LOOP_TIMES
|
||||
PIGLIT_REPLAY_REFERENCE_IMAGES_BASE
|
||||
PIGLIT_REPLAY_SUBCOMMAND
|
||||
PIGLIT_RESULTS
|
||||
PIGLIT_TESTS
|
||||
PIGLIT_TRACES_FILE
|
||||
PIPELINE_ARTIFACTS_BASE
|
||||
RADEON_DEBUG
|
||||
RADV_DEBUG
|
||||
RADV_PERFTEST
|
||||
SKQP_ASSETS_DIR
|
||||
SKQP_BACKENDS
|
||||
TU_DEBUG
|
||||
USE_ANGLE
|
||||
VIRGL_HOST_API
|
||||
VIRGL_RENDER_SERVER
|
||||
WAFFLE_PLATFORM
|
||||
VK_DRIVER
|
||||
VKD3D_PROTON_RESULTS
|
||||
VKD3D_CONFIG
|
||||
VKD3D_TEST_EXCLUDE
|
||||
ZINK_DESCRIPTORS
|
||||
ZINK_DEBUG
|
||||
LVP_POISON_MEMORY
|
||||
|
||||
# Dead code within Mesa CI, but required by virglrender CI
|
||||
# (because they include our files in their CI)
|
||||
VK_DRIVER_FILES
|
||||
)
|
||||
|
||||
for var in "${VARS[@]}"; do
|
||||
for var in \
|
||||
ACO_DEBUG \
|
||||
ARTIFACTS_BASE_URL \
|
||||
ASAN_OPTIONS \
|
||||
BASE_SYSTEM_FORK_HOST_PREFIX \
|
||||
BASE_SYSTEM_MAINLINE_HOST_PREFIX \
|
||||
CI_COMMIT_BRANCH \
|
||||
CI_COMMIT_REF_NAME \
|
||||
CI_COMMIT_TITLE \
|
||||
CI_JOB_ID \
|
||||
CI_JOB_JWT_FILE \
|
||||
CI_JOB_STARTED_AT \
|
||||
CI_JOB_NAME \
|
||||
CI_JOB_URL \
|
||||
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME \
|
||||
CI_MERGE_REQUEST_TITLE \
|
||||
CI_NODE_INDEX \
|
||||
CI_NODE_TOTAL \
|
||||
CI_PAGES_DOMAIN \
|
||||
CI_PIPELINE_ID \
|
||||
CI_PIPELINE_URL \
|
||||
CI_PROJECT_DIR \
|
||||
CI_PROJECT_NAME \
|
||||
CI_PROJECT_PATH \
|
||||
CI_PROJECT_ROOT_NAMESPACE \
|
||||
CI_RUNNER_DESCRIPTION \
|
||||
CI_SERVER_URL \
|
||||
CROSVM_GALLIUM_DRIVER \
|
||||
CROSVM_GPU_ARGS \
|
||||
CURRENT_SECTION \
|
||||
DEQP_BIN_DIR \
|
||||
DEQP_CONFIG \
|
||||
DEQP_EXPECTED_RENDERER \
|
||||
DEQP_FRACTION \
|
||||
DEQP_HEIGHT \
|
||||
DEQP_RESULTS_DIR \
|
||||
DEQP_RUNNER_OPTIONS \
|
||||
DEQP_SUITE \
|
||||
DEQP_TEMP_DIR \
|
||||
DEQP_VER \
|
||||
DEQP_WIDTH \
|
||||
DEVICE_NAME \
|
||||
DRIVER_NAME \
|
||||
EGL_PLATFORM \
|
||||
ETNA_MESA_DEBUG \
|
||||
FDO_CI_CONCURRENT \
|
||||
FDO_UPSTREAM_REPO \
|
||||
FD_MESA_DEBUG \
|
||||
FLAKES_CHANNEL \
|
||||
FREEDRENO_HANGCHECK_MS \
|
||||
GALLIUM_DRIVER \
|
||||
GALLIVM_PERF \
|
||||
GPU_VERSION \
|
||||
GTEST \
|
||||
GTEST_FAILS \
|
||||
GTEST_FRACTION \
|
||||
GTEST_RESULTS_DIR \
|
||||
GTEST_RUNNER_OPTIONS \
|
||||
GTEST_SKIPS \
|
||||
HWCI_FREQ_MAX \
|
||||
HWCI_KERNEL_MODULES \
|
||||
HWCI_KVM \
|
||||
HWCI_START_WESTON \
|
||||
HWCI_START_XORG \
|
||||
HWCI_TEST_SCRIPT \
|
||||
IR3_SHADER_DEBUG \
|
||||
JOB_ARTIFACTS_BASE \
|
||||
JOB_RESULTS_PATH \
|
||||
JOB_ROOTFS_OVERLAY_PATH \
|
||||
KERNEL_IMAGE_BASE \
|
||||
KERNEL_IMAGE_NAME \
|
||||
LD_LIBRARY_PATH \
|
||||
LP_NUM_THREADS \
|
||||
MESA_BASE_TAG \
|
||||
MESA_BUILD_PATH \
|
||||
MESA_DEBUG \
|
||||
MESA_GLES_VERSION_OVERRIDE \
|
||||
MESA_GLSL_VERSION_OVERRIDE \
|
||||
MESA_GL_VERSION_OVERRIDE \
|
||||
MESA_IMAGE \
|
||||
MESA_IMAGE_PATH \
|
||||
MESA_IMAGE_TAG \
|
||||
MESA_LOADER_DRIVER_OVERRIDE \
|
||||
MESA_TEMPLATES_COMMIT \
|
||||
MESA_VK_IGNORE_CONFORMANCE_WARNING \
|
||||
S3_HOST \
|
||||
S3_RESULTS_UPLOAD \
|
||||
NIR_DEBUG \
|
||||
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER \
|
||||
PAN_MESA_DEBUG \
|
||||
PANVK_DEBUG \
|
||||
PIGLIT_FRACTION \
|
||||
PIGLIT_NO_WINDOW \
|
||||
PIGLIT_OPTIONS \
|
||||
PIGLIT_PLATFORM \
|
||||
PIGLIT_PROFILES \
|
||||
PIGLIT_REPLAY_ARTIFACTS_BASE_URL \
|
||||
PIGLIT_REPLAY_DEVICE_NAME \
|
||||
PIGLIT_REPLAY_EXTRA_ARGS \
|
||||
PIGLIT_REPLAY_LOOP_TIMES \
|
||||
PIGLIT_REPLAY_REFERENCE_IMAGES_BASE \
|
||||
PIGLIT_REPLAY_SUBCOMMAND \
|
||||
PIGLIT_RESULTS \
|
||||
PIGLIT_TESTS \
|
||||
PIGLIT_TRACES_FILE \
|
||||
PIPELINE_ARTIFACTS_BASE \
|
||||
RADEON_DEBUG \
|
||||
RADV_DEBUG \
|
||||
RADV_PERFTEST \
|
||||
SKQP_ASSETS_DIR \
|
||||
SKQP_BACKENDS \
|
||||
TU_DEBUG \
|
||||
USE_ANGLE \
|
||||
VIRGL_HOST_API \
|
||||
WAFFLE_PLATFORM \
|
||||
VK_CPU \
|
||||
VK_DRIVER \
|
||||
VK_ICD_FILENAMES \
|
||||
VKD3D_PROTON_RESULTS \
|
||||
VKD3D_CONFIG \
|
||||
VKD3D_TEST_EXCLUDE \
|
||||
ZINK_DESCRIPTORS \
|
||||
ZINK_DEBUG \
|
||||
LVP_POISON_MEMORY \
|
||||
; do
|
||||
if [ -n "${!var+x}" ]; then
|
||||
echo "export $var=${!var@Q}"
|
||||
fi
|
||||
|
@@ -113,7 +113,7 @@ export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
|
||||
if [ -n "$MESA_LOADER_DRIVER_OVERRIDE" ]; then
|
||||
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
||||
fi
|
||||
ls -1 /install/lib/dri/*_dri.so || true
|
||||
ls -1 /install/lib/dri/*_dri.so
|
||||
|
||||
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||
# Ensure initialization of the DRM device (needed by MSM)
|
||||
@@ -158,9 +158,6 @@ if [ -x /capture-devcoredump.sh ]; then
|
||||
BACKGROUND_PIDS="$! $BACKGROUND_PIDS"
|
||||
fi
|
||||
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
|
||||
# If we want Xorg to be running for the test, then we start it up before the
|
||||
# HWCI_TEST_SCRIPT because we need to use xinit to start X (otherwise
|
||||
# without using -displayfd you can race with Xorg's startup), but xinit will eat
|
||||
@@ -168,6 +165,7 @@ export VK_DRIVER_FILES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
if [ -n "$HWCI_START_XORG" ]; then
|
||||
echo "touch /xorg-started; sleep 100000" > /xorg-script
|
||||
env \
|
||||
VK_ICD_FILENAMES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$(uname -m).json" \
|
||||
xinit /bin/sh /xorg-script -- /usr/bin/Xorg -noreset -s 0 -dpms -logfile /Xorg.0.log &
|
||||
BACKGROUND_PIDS="$! $BACKGROUND_PIDS"
|
||||
|
||||
@@ -194,6 +192,7 @@ if [ -n "$HWCI_START_WESTON" ]; then
|
||||
mkdir -p /tmp/.X11-unix
|
||||
|
||||
env \
|
||||
VK_ICD_FILENAMES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$(uname -m).json" \
|
||||
weston -Bheadless-backend.so --use-gl -Swayland-0 --xwayland --idle-time=0 &
|
||||
BACKGROUND_PIDS="$! $BACKGROUND_PIDS"
|
||||
|
||||
@@ -218,7 +217,7 @@ cleanup
|
||||
# upload artifacts
|
||||
if [ -n "$S3_RESULTS_UPLOAD" ]; then
|
||||
tar --zstd -cf results.tar.zst results/;
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" results.tar.zst https://"$S3_RESULTS_UPLOAD"/results.tar.zst;
|
||||
ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" results.tar.zst https://"$S3_RESULTS_UPLOAD"/results.tar.zst;
|
||||
fi
|
||||
|
||||
# We still need to echo the hwci: mesa message, as some scripts rely on it, such
|
||||
|
@@ -18,7 +18,7 @@ DEPS=(
|
||||
bash
|
||||
bison
|
||||
ccache
|
||||
"clang${LLVM_VERSION}-dev"
|
||||
clang16-dev
|
||||
cmake
|
||||
clang-dev
|
||||
coreutils
|
||||
@@ -29,13 +29,10 @@ DEPS=(
|
||||
git
|
||||
gettext
|
||||
glslang
|
||||
graphviz
|
||||
linux-headers
|
||||
"llvm${LLVM_VERSION}-static"
|
||||
"llvm${LLVM_VERSION}-dev"
|
||||
llvm16-static
|
||||
llvm16-dev
|
||||
meson
|
||||
mold
|
||||
musl-dev
|
||||
expat-dev
|
||||
elfutils-dev
|
||||
libdrm-dev
|
||||
@@ -44,13 +41,8 @@ DEPS=(
|
||||
libpciaccess-dev
|
||||
zlib-dev
|
||||
python3-dev
|
||||
py3-clang
|
||||
py3-cparser
|
||||
py3-mako
|
||||
py3-packaging
|
||||
py3-pip
|
||||
py3-ply
|
||||
py3-yaml
|
||||
vulkan-headers
|
||||
spirv-tools-dev
|
||||
util-macros
|
||||
@@ -60,8 +52,6 @@ DEPS=(
|
||||
|
||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
pip3 install --break-system-packages sphinx===5.1.1 hawkmoth===0.16.0
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
@@ -1,12 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex
|
||||
|
||||
ANGLE_REV="1409a05a81e3ccb279142433a2b987bc330f555b"
|
||||
ANGLE_REV="0518a3ff4d4e7e5b2ce8203358f719613a31c118"
|
||||
|
||||
# DEPOT tools
|
||||
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||
|
@@ -3,8 +3,8 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex
|
||||
|
@@ -1,20 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
BINDGEN_VER=0.65.1
|
||||
CBINDGEN_VER=0.26.0
|
||||
|
||||
# bindgen
|
||||
RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
bindgen-cli --version ${BINDGEN_VER} \
|
||||
--locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local
|
||||
|
||||
# cbindgen
|
||||
RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
cbindgen --version ${CBINDGEN_VER} \
|
||||
--locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local
|
||||
|
@@ -3,9 +3,9 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex
|
||||
|
@@ -3,9 +3,9 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex -o pipefail
|
||||
@@ -16,9 +16,9 @@ set -ex -o pipefail
|
||||
# - the GL release produces `glcts`, and
|
||||
# - the GLES release produces `deqp-gles*` and `deqp-egl`
|
||||
|
||||
DEQP_VK_VERSION=1.3.8.2
|
||||
DEQP_GL_VERSION=4.6.4.1
|
||||
DEQP_GLES_VERSION=3.2.10.1
|
||||
DEQP_VK_VERSION=1.3.7.0
|
||||
DEQP_GL_VERSION=4.6.4.0
|
||||
DEQP_GLES_VERSION=3.2.10.0
|
||||
|
||||
# Patches to VulkanCTS may come from commits in their repo (listed in
|
||||
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
||||
@@ -28,18 +28,28 @@ DEQP_GLES_VERSION=3.2.10.1
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_commits_to_backport=(
|
||||
# Fix more ASAN errors due to missing virtual destructors
|
||||
dd40bcfef1b4035ea55480b6fd4d884447120768
|
||||
# Take multiview into account for task shader inv. stats
|
||||
22aa3f4c59f6e1d4daebd5a8c9c05bce6cd3b63b
|
||||
|
||||
# Remove "unused shader stages" tests
|
||||
7dac86c6bbd15dec91d7d9a98cd6dd57c11092a7
|
||||
# Remove illegal mesh shader query tests
|
||||
2a87f7b25dc27188be0f0a003b2d7aef69d9002e
|
||||
|
||||
# Emit point size from "many indirect draws" test
|
||||
771e56d1c4d03e073ddb7f1200ad6d57e0a0c979
|
||||
# Relax fragment shader invocations result verifications
|
||||
0d8bf6a2715f95907e9cf86a86876ff1f26c66fe
|
||||
|
||||
# Fix several issues in dynamic rendering basic tests
|
||||
c5453824b498c981c6ba42017d119f5de02a3e34
|
||||
|
||||
# Add setVisible for VulkanWindowDirectDrm
|
||||
a8466bf6ea98f6cd6733849ad8081775318a3e3e
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_patch_files=(
|
||||
# Derivate subgroup fix
|
||||
# https://github.com/KhronosGroup/VK-GL-CTS/pull/442
|
||||
build-deqp-vk_Use-subgroups-helper-in-derivate-tests.patch
|
||||
build-deqp-vk_Add-missing-subgroup-support-checks-for-linear-derivate-tests.patch
|
||||
)
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
@@ -67,6 +77,8 @@ fi
|
||||
# shellcheck disable=SC2034
|
||||
# GLES builds also EGL
|
||||
gles_cts_commits_to_backport=(
|
||||
# Implement support for the EGL_EXT_config_select_group extension
|
||||
88ba9ac270db5be600b1ecacbc6d9db0c55d5be4
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
@@ -206,7 +218,7 @@ if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||
if [ "${DEQP_API}" = 'VK' ]; then
|
||||
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
||||
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
||||
>> /deqp/mustpass/vk-main.txt
|
||||
>> /deqp/mustpass/vk-master.txt
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -241,7 +253,7 @@ fi
|
||||
|
||||
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
||||
rm -rf /deqp/external/**/mustpass/
|
||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-main*
|
||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-master*
|
||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-default
|
||||
|
||||
rm -rf /deqp/external/openglcts/modules/cts-runner
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
set -ex
|
||||
|
||||
git clone https://github.com/microsoft/DirectX-Headers -b v1.613.1 --depth 1
|
||||
git clone https://github.com/microsoft/DirectX-Headers -b v1.611.0 --depth 1
|
||||
pushd DirectX-Headers
|
||||
meson setup build --backend=ninja --buildtype=release -Dbuild-test=false $EXTRA_MESON_ARGS
|
||||
meson install -C build
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex
|
||||
|
@@ -1,11 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# Script used for Android and Fedora builds (Debian builds get their libdrm version
|
||||
# from https://gitlab.freedesktop.org/gfx-ci/ci-deb-repo - see PKG_REPO_REV)
|
||||
# Script used for Android and Fedora builds
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
set -ex
|
||||
|
||||
export LIBDRM_VERSION=libdrm-2.4.122
|
||||
export LIBDRM_VERSION=libdrm-2.4.119
|
||||
|
||||
curl -L -O --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||
https://dri.freedesktop.org/libdrm/"$LIBDRM_VERSION".tar.xz
|
||||
|
@@ -4,13 +4,12 @@ set -ex
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# ALPINE_X86_64_BUILD_TAG
|
||||
# DEBIAN_BASE_TAG
|
||||
# DEBIAN_BUILD_TAG
|
||||
# FEDORA_X86_64_BUILD_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
MOLD_VERSION="2.32.0"
|
||||
MOLD_VERSION="2.4.1"
|
||||
|
||||
git clone -b v"$MOLD_VERSION" --single-branch --depth 1 https://github.com/rui314/mold.git
|
||||
pushd mold
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
|
||||
set -ex -o pipefail
|
||||
|
||||
|
@@ -4,11 +4,11 @@ set -ex
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
REV="582f5490a124c27c26d3a452fee03a8c85fa9a5c"
|
||||
REV="1e631479c0b477006dd7561c55e06269d2878d8d"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||
pushd /piglit
|
||||
|
@@ -2,11 +2,11 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
set -ex
|
||||
|
||||
VKD3D_PROTON_COMMIT="3d46c082906c77544385d10801e4c0184f0385d9"
|
||||
VKD3D_PROTON_COMMIT="a0ccc383937903f4ca0997ce53e41ccce7f2f2ec"
|
||||
|
||||
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
||||
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
||||
|
@@ -2,12 +2,12 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# KERNEL_ROOTFS_TAG:
|
||||
|
||||
set -ex
|
||||
|
||||
VALIDATION_TAG="v1.3.289"
|
||||
VALIDATION_TAG="snapshot-2024wk06"
|
||||
|
||||
git clone -b "$VALIDATION_TAG" --single-branch --depth 1 https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
|
||||
pushd Vulkan-ValidationLayers
|
||||
|
@@ -3,17 +3,8 @@
|
||||
|
||||
set -ex
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BUILD_TAG
|
||||
# DEBIAN_TEST_ANDROID_TAG
|
||||
# DEBIAN_TEST_GL_TAG
|
||||
# DEBIAN_TEST_VK_TAG
|
||||
# FEDORA_X86_64_BUILD_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
export LIBWAYLAND_VERSION="1.21.0"
|
||||
export WAYLAND_PROTOCOLS_VERSION="1.34"
|
||||
export WAYLAND_PROTOCOLS_VERSION="1.31"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/wayland/wayland
|
||||
cd wayland
|
||||
|
@@ -22,7 +22,7 @@ cpp = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}${sdk_v
|
||||
c_ld = 'lld'
|
||||
cpp_ld = 'lld'
|
||||
strip = '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip'
|
||||
pkg-config = ['/usr/bin/pkgconf']
|
||||
pkgconfig = ['/usr/bin/pkgconf']
|
||||
|
||||
[host_machine]
|
||||
system = 'android'
|
||||
|
5
.gitlab-ci/container/debian/arm32_test.sh
Normal file
5
.gitlab-ci/container/debian/arm32_test.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
arch=armhf . .gitlab-ci/container/debian/arm_test.sh
|
@@ -26,7 +26,6 @@ DEPS=(
|
||||
ccache
|
||||
cmake
|
||||
curl
|
||||
"clang-${LLVM_VERSION}"
|
||||
fastboot
|
||||
flatbuffers-compiler
|
||||
flex
|
||||
@@ -34,15 +33,11 @@ DEPS=(
|
||||
git
|
||||
glslang-tools
|
||||
kmod
|
||||
"libclang-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
libasan8
|
||||
libdrm-dev
|
||||
libelf-dev
|
||||
libexpat1-dev
|
||||
libflatbuffers-dev
|
||||
"libllvm${LLVM_VERSION}"
|
||||
libvulkan-dev
|
||||
libx11-dev
|
||||
libx11-xcb-dev
|
||||
@@ -69,7 +64,6 @@ DEPS=(
|
||||
python3-mako
|
||||
python3-pil
|
||||
python3-pip
|
||||
python3-pycparser
|
||||
python3-requests
|
||||
python3-setuptools
|
||||
u-boot-tools
|
||||
@@ -91,16 +85,6 @@ arch=armhf
|
||||
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
. .gitlab-ci/container/install-meson.sh
|
||||
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
|
||||
. .gitlab-ci/container/build-bindgen.sh
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEBIAN_ARCH=arm64 \
|
||||
. .gitlab-ci/container/debian/test-base.sh
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
. .gitlab-ci/container/debian/test-gl.sh
|
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
. .gitlab-ci/container/debian/test-vk.sh
|
5
.gitlab-ci/container/debian/arm64_test.sh
Normal file
5
.gitlab-ci/container/debian/arm64_test.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
arch=arm64 . .gitlab-ci/container/debian/arm_test.sh
|
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
arch=armhf . .gitlab-ci/container/debian/baremetal_arm_test.sh
|
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
arch=arm64 . .gitlab-ci/container/debian/baremetal_arm_test.sh
|
@@ -1,160 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BASE_TAG
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get install -y ca-certificates gnupg2 software-properties-common
|
||||
|
||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list.d/*
|
||||
|
||||
echo "deb [trusted=yes] https://gitlab.freedesktop.org/gfx-ci/ci-deb-repo/-/raw/${PKG_REPO_REV}/ ${FDO_DISTRIBUTION_VERSION%-*} main" | tee /etc/apt/sources.list.d/gfx-ci_.list
|
||||
|
||||
export LLVM_VERSION="${LLVM_VERSION:=15}"
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
autoconf
|
||||
automake
|
||||
bc
|
||||
bison
|
||||
bzip2
|
||||
ccache
|
||||
cmake
|
||||
"clang-${LLVM_VERSION}"
|
||||
dpkg-dev
|
||||
flex
|
||||
glslang-tools
|
||||
g++
|
||||
libasound2-dev
|
||||
libcap-dev
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
libdrm-dev
|
||||
libegl-dev
|
||||
libelf-dev
|
||||
libepoxy-dev
|
||||
libgbm-dev
|
||||
libpciaccess-dev
|
||||
libssl-dev
|
||||
libvulkan-dev
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxext-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
make
|
||||
meson
|
||||
openssh-server
|
||||
patch
|
||||
pkgconf
|
||||
protobuf-compiler
|
||||
python3-dev
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
spirv-tools
|
||||
wayland-protocols
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
apt-utils
|
||||
curl
|
||||
git
|
||||
git-lfs
|
||||
inetutils-syslogd
|
||||
iptables
|
||||
jq
|
||||
libasan8
|
||||
libdrm2
|
||||
libexpat1
|
||||
"libllvm${LLVM_VERSION}"
|
||||
liblz4-1
|
||||
libpng16-16
|
||||
libpython3.11
|
||||
libvulkan1
|
||||
libwayland-client0
|
||||
libwayland-server0
|
||||
libxcb-ewmh2
|
||||
libxcb-randr0
|
||||
libxcb-xfixes0
|
||||
libxkbcommon0
|
||||
libxrandr2
|
||||
libxrender1
|
||||
python3-mako
|
||||
python3-numpy
|
||||
python3-packaging
|
||||
python3-pil
|
||||
python3-requests
|
||||
python3-six
|
||||
python3-yaml
|
||||
socat
|
||||
vulkan-tools
|
||||
waffle-utils
|
||||
xauth
|
||||
xvfb
|
||||
zlib1g
|
||||
zstd
|
||||
)
|
||||
|
||||
apt-get update
|
||||
apt-get dist-upgrade -y
|
||||
|
||||
apt-get install --purge -y \
|
||||
sysvinit-core libelogind0
|
||||
|
||||
apt-get install -y --no-remove "${DEPS[@]}"
|
||||
|
||||
apt-get install -y --no-install-recommends "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Download prebuilt kernel
|
||||
|
||||
if [ "$DEBIAN_ARCH" = amd64 ]; then
|
||||
export KERNEL_IMAGE_NAME=bzImage
|
||||
|
||||
mkdir -p /lava-files/
|
||||
. .gitlab-ci/container/download-prebuilt-kernel.sh
|
||||
fi
|
||||
|
||||
# Needed for ci-fairy, this revision is able to upload files to MinIO
|
||||
# and doesn't depend on git
|
||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||
|
||||
# Needed for manipulation with traces yaml files.
|
||||
pip3 install --break-system-packages yq
|
||||
|
||||
. .gitlab-ci/container/build-mold.sh
|
||||
|
||||
############### Build LLVM-SPIRV translator
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
############### Build libclc
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
############### Build Wayland
|
||||
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
############### Build Crosvm
|
||||
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
. .gitlab-ci/container/build-crosvm.sh
|
||||
|
||||
############### Build dEQP runner
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
rm -rf /root/.rustup
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
@@ -1,124 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export LLVM_VERSION="${LLVM_VERSION:=15}"
|
||||
|
||||
apt-get install -y libelogind0 # this interfere with systemd deps, install separately
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
bzip2
|
||||
ccache
|
||||
"clang-${LLVM_VERSION}"
|
||||
cmake
|
||||
dpkg-dev
|
||||
g++
|
||||
glslang-tools
|
||||
libasound2-dev
|
||||
libcap-dev
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
libdrm-dev
|
||||
libgles2-mesa-dev
|
||||
libgtest-dev
|
||||
libpciaccess-dev
|
||||
libpng-dev
|
||||
libudev-dev
|
||||
libvulkan-dev
|
||||
libwaffle-dev
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-dri2-0-dev
|
||||
libxcb-dri3-dev
|
||||
libxcb-present-dev
|
||||
libxfixes-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
make
|
||||
meson
|
||||
ocl-icd-opencl-dev
|
||||
patch
|
||||
pkgconf
|
||||
python3-distutils
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
clinfo
|
||||
iptables
|
||||
kmod
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
libcap2
|
||||
libegl1
|
||||
libepoxy0
|
||||
libfdt1
|
||||
libxcb-shm0
|
||||
ocl-icd-libopencl1
|
||||
python3-lxml
|
||||
python3-renderdoc
|
||||
python3-simplejson
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
)
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
$EXTRA_LOCAL_PACKAGES
|
||||
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Build piglit
|
||||
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=ON
|
||||
-DPIGLIT_USE_WAYLAND=ON
|
||||
-DPIGLIT_USE_X11=ON
|
||||
-DPIGLIT_BUILD_GLX_TESTS=ON
|
||||
-DPIGLIT_BUILD_EGL_TESTS=ON
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=ON
|
||||
-DPIGLIT_BUILD_CL_TESTS=ON
|
||||
-DPIGLIT_BUILD_VK_TESTS=ON
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=ON" \
|
||||
. .gitlab-ci/container/build-piglit.sh
|
||||
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build validation layer for zink
|
||||
|
||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||
|
||||
############### Build nine tests
|
||||
|
||||
. .gitlab-ci/container/build-ninetests.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
@@ -1,145 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# The relative paths in this file only become valid at runtime.
|
||||
# shellcheck disable=SC1091
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get install -y libelogind0 # this interfere with systemd deps, install separately
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
ccache
|
||||
cmake
|
||||
dpkg-dev
|
||||
g++
|
||||
glslang-tools
|
||||
libexpat1-dev
|
||||
gnupg2
|
||||
libdrm-dev
|
||||
libgbm-dev
|
||||
libgles2-mesa-dev
|
||||
liblz4-dev
|
||||
libpciaccess-dev
|
||||
libudev-dev
|
||||
libvulkan-dev
|
||||
libwaffle-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-dri2-0-dev
|
||||
libxcb-ewmh-dev
|
||||
libxcb-keysyms1-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
libzstd-dev
|
||||
meson
|
||||
p7zip
|
||||
patch
|
||||
pkgconf
|
||||
python3-dev
|
||||
python3-distutils
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
software-properties-common
|
||||
wine64-tools
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
curl
|
||||
libepoxy0
|
||||
libxcb-shm0
|
||||
pciutils
|
||||
python3-lxml
|
||||
python3-simplejson
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
wine
|
||||
wine64
|
||||
xinit
|
||||
xserver-xorg-video-amdgpu
|
||||
xserver-xorg-video-ati
|
||||
)
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y --no-remove --no-install-recommends \
|
||||
"${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
############### Install DXVK
|
||||
|
||||
. .gitlab-ci/container/setup-wine.sh "/dxvk-wine64"
|
||||
. .gitlab-ci/container/install-wine-dxvk.sh
|
||||
|
||||
############### Install apitrace binaries for wine
|
||||
|
||||
. .gitlab-ci/container/install-wine-apitrace.sh
|
||||
# Add the apitrace path to the registry
|
||||
wine \
|
||||
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" \
|
||||
/v Path \
|
||||
/t REG_EXPAND_SZ \
|
||||
/d "C:\windows\system32;C:\windows;C:\windows\system32\wbem;Z:\apitrace-msvc-win64\bin" \
|
||||
/f
|
||||
|
||||
############### Building ...
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Build parallel-deqp-runner's hang-detection tool
|
||||
|
||||
. .gitlab-ci/container/build-hang-detection.sh
|
||||
|
||||
############### Build piglit replayer
|
||||
# We don't run any _piglit_ Vulkan tests in the containers.
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=OFF
|
||||
-DPIGLIT_USE_WAYLAND=OFF
|
||||
-DPIGLIT_USE_X11=OFF
|
||||
-DPIGLIT_BUILD_GLX_TESTS=OFF
|
||||
-DPIGLIT_BUILD_EGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=OFF
|
||||
-DPIGLIT_BUILD_CL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_VK_TESTS=OFF
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=OFF" \
|
||||
PIGLIT_BUILD_TARGETS="piglit_replayer" \
|
||||
. .gitlab-ci/container/build-piglit.sh
|
||||
|
||||
############### Build Fossilize
|
||||
|
||||
. .gitlab-ci/container/build-fossilize.sh
|
||||
|
||||
############### Build dEQP VK
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build gfxreconstruct
|
||||
|
||||
. .gitlab-ci/container/build-gfxreconstruct.sh
|
||||
|
||||
############### Build VKD3D-Proton
|
||||
|
||||
. .gitlab-ci/container/setup-wine.sh "/vkd3d-proton-wine64"
|
||||
|
||||
. .gitlab-ci/container/build-vkd3d-proton.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
@@ -28,7 +28,6 @@ DEPS=(
|
||||
"clang-${LLVM_VERSION}"
|
||||
"clang-format-${LLVM_VERSION}"
|
||||
dpkg-cross
|
||||
dpkg-dev
|
||||
findutils
|
||||
flex
|
||||
flatbuffers-compiler
|
||||
@@ -71,10 +70,8 @@ DEPS=(
|
||||
python3-pil
|
||||
python3-pip
|
||||
python3-ply
|
||||
python3-pycparser
|
||||
python3-requests
|
||||
python3-setuptools
|
||||
python3-yaml
|
||||
qemu-user
|
||||
valgrind
|
||||
x11proto-dri2-dev
|
||||
@@ -97,7 +94,8 @@ apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||
|
||||
. .gitlab-ci/container/install-meson.sh
|
||||
# We need at least 1.3.1 for rusticl
|
||||
pip3 install --break-system-packages 'meson==1.3.1'
|
||||
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
|
||||
|
@@ -81,10 +81,15 @@ rm -rf $XORGMACROS_VERSION
|
||||
|
||||
. .gitlab-ci/container/build-directx-headers.sh
|
||||
|
||||
. .gitlab-ci/container/build-bindgen.sh
|
||||
|
||||
python3 -m pip install --break-system-packages -r .gitlab-ci/lava/requirements.txt
|
||||
|
||||
# install bindgen
|
||||
RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
bindgen-cli --version 0.62.0 \
|
||||
--locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
@@ -1,4 +1,160 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
DEBIAN_ARCH=amd64 \
|
||||
. .gitlab-ci/container/debian/test-base.sh
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BASE_TAG
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get install -y ca-certificates gnupg2 software-properties-common
|
||||
|
||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list.d/*
|
||||
|
||||
echo "deb [trusted=yes] https://gitlab.freedesktop.org/gfx-ci/ci-deb-repo/-/raw/${PKG_REPO_REV}/ ${FDO_DISTRIBUTION_VERSION%-*} main" | tee /etc/apt/sources.list.d/gfx-ci_.list
|
||||
|
||||
export LLVM_VERSION="${LLVM_VERSION:=15}"
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
autoconf
|
||||
automake
|
||||
bc
|
||||
bison
|
||||
bzip2
|
||||
ccache
|
||||
cmake
|
||||
"clang-${LLVM_VERSION}"
|
||||
flex
|
||||
glslang-tools
|
||||
g++
|
||||
libasound2-dev
|
||||
libcap-dev
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
libdrm-dev
|
||||
libegl-dev
|
||||
libelf-dev
|
||||
libepoxy-dev
|
||||
libgbm-dev
|
||||
libpciaccess-dev
|
||||
libssl-dev
|
||||
libvulkan-dev
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxext-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
make
|
||||
meson
|
||||
openssh-server
|
||||
patch
|
||||
pkgconf
|
||||
protobuf-compiler
|
||||
python3-dev
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
spirv-tools
|
||||
wayland-protocols
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
apt-utils
|
||||
curl
|
||||
git
|
||||
git-lfs
|
||||
inetutils-syslogd
|
||||
iptables
|
||||
jq
|
||||
libasan8
|
||||
libdrm2
|
||||
libexpat1
|
||||
"libllvm${LLVM_VERSION}"
|
||||
liblz4-1
|
||||
libpng16-16
|
||||
libpython3.11
|
||||
libvulkan1
|
||||
libwayland-client0
|
||||
libwayland-server0
|
||||
libxcb-ewmh2
|
||||
libxcb-randr0
|
||||
libxcb-xfixes0
|
||||
libxkbcommon0
|
||||
libxrandr2
|
||||
libxrender1
|
||||
python3-mako
|
||||
python3-numpy
|
||||
python3-packaging
|
||||
python3-pil
|
||||
python3-requests
|
||||
python3-six
|
||||
python3-yaml
|
||||
socat
|
||||
vulkan-tools
|
||||
waffle-utils
|
||||
xauth
|
||||
xvfb
|
||||
zlib1g
|
||||
zstd
|
||||
)
|
||||
|
||||
apt-get update
|
||||
apt-get dist-upgrade -y
|
||||
|
||||
apt-get install --purge -y \
|
||||
sysvinit-core libelogind0
|
||||
|
||||
apt-get install -y --no-remove "${DEPS[@]}"
|
||||
|
||||
apt-get install -y --no-install-recommends "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Build kernel
|
||||
|
||||
export DEFCONFIG="arch/x86/configs/x86_64_defconfig"
|
||||
export KERNEL_IMAGE_NAME=bzImage
|
||||
export KERNEL_ARCH=x86_64
|
||||
export DEBIAN_ARCH=amd64
|
||||
|
||||
mkdir -p /lava-files/
|
||||
. .gitlab-ci/container/build-kernel.sh
|
||||
|
||||
# Needed for ci-fairy, this revision is able to upload files to MinIO
|
||||
# and doesn't depend on git
|
||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||
|
||||
# Needed for manipulation with traces yaml files.
|
||||
pip3 install --break-system-packages yq
|
||||
|
||||
. .gitlab-ci/container/build-mold.sh
|
||||
|
||||
############### Build LLVM-SPIRV translator
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
############### Build libclc
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
############### Build Wayland
|
||||
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
############### Build Crosvm
|
||||
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
. .gitlab-ci/container/build-crosvm.sh
|
||||
|
||||
############### Build dEQP runner
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
rm -rf /root/.rustup
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
@@ -1,3 +1,109 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
. .gitlab-ci/container/debian/test-gl.sh
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export LLVM_VERSION="${LLVM_VERSION:=15}"
|
||||
|
||||
apt-get install -y libelogind0 # this interfere with systemd deps, install separately
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
bzip2
|
||||
ccache
|
||||
"clang-${LLVM_VERSION}"
|
||||
cmake
|
||||
g++
|
||||
glslang-tools
|
||||
libasound2-dev
|
||||
libcap-dev
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
libdrm-dev
|
||||
libgles2-mesa-dev
|
||||
libgtest-dev
|
||||
libpciaccess-dev
|
||||
libpng-dev
|
||||
libudev-dev
|
||||
libvulkan-dev
|
||||
libwaffle-dev
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-dri2-0-dev
|
||||
libxcb-dri3-dev
|
||||
libxcb-present-dev
|
||||
libxfixes-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
"llvm-${LLVM_VERSION}-dev"
|
||||
make
|
||||
meson
|
||||
ocl-icd-opencl-dev
|
||||
patch
|
||||
pkgconf
|
||||
python3-distutils
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
clinfo
|
||||
iptables
|
||||
kmod
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
libcap2
|
||||
libegl1
|
||||
libepoxy0
|
||||
libfdt1
|
||||
libxcb-shm0
|
||||
ocl-icd-libopencl1
|
||||
python3-lxml
|
||||
python3-renderdoc
|
||||
python3-simplejson
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
)
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
$EXTRA_LOCAL_PACKAGES
|
||||
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Build piglit
|
||||
|
||||
PIGLIT_OPTS="-DPIGLIT_BUILD_GLX_TESTS=ON -DPIGLIT_BUILD_CL_TESTS=ON -DPIGLIT_BUILD_DMA_BUF_TESTS=ON" . .gitlab-ci/container/build-piglit.sh
|
||||
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build validation layer for zink
|
||||
|
||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||
|
||||
############### Build nine tests
|
||||
|
||||
. .gitlab-ci/container/build-ninetests.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
@@ -1,3 +1,128 @@
|
||||
#!/usr/bin/env bash
|
||||
# The relative paths in this file only become valid at runtime.
|
||||
# shellcheck disable=SC1091
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
. .gitlab-ci/container/debian/test-vk.sh
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
apt-get install -y libelogind0 # this interfere with systemd deps, install separately
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
ccache
|
||||
cmake
|
||||
g++
|
||||
glslang-tools
|
||||
libexpat1-dev
|
||||
gnupg2
|
||||
libdrm-dev
|
||||
libgbm-dev
|
||||
libgles2-mesa-dev
|
||||
liblz4-dev
|
||||
libpciaccess-dev
|
||||
libudev-dev
|
||||
libvulkan-dev
|
||||
libwaffle-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-ewmh-dev
|
||||
libxcb-keysyms1-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
libzstd-dev
|
||||
meson
|
||||
p7zip
|
||||
patch
|
||||
pkgconf
|
||||
python3-dev
|
||||
python3-distutils
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
python3-wheel
|
||||
software-properties-common
|
||||
wine64-tools
|
||||
xz-utils
|
||||
)
|
||||
|
||||
DEPS=(
|
||||
curl
|
||||
libepoxy0
|
||||
libxcb-shm0
|
||||
pciutils
|
||||
python3-lxml
|
||||
python3-simplejson
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
wine
|
||||
wine64
|
||||
xinit
|
||||
xserver-xorg-video-amdgpu
|
||||
xserver-xorg-video-ati
|
||||
)
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y --no-remove --no-install-recommends \
|
||||
"${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
############### Install DXVK
|
||||
|
||||
. .gitlab-ci/container/setup-wine.sh "/dxvk-wine64"
|
||||
. .gitlab-ci/container/install-wine-dxvk.sh
|
||||
|
||||
############### Install apitrace binaries for wine
|
||||
|
||||
. .gitlab-ci/container/install-wine-apitrace.sh
|
||||
# Add the apitrace path to the registry
|
||||
wine \
|
||||
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" \
|
||||
/v Path \
|
||||
/t REG_EXPAND_SZ \
|
||||
/d "C:\windows\system32;C:\windows;C:\windows\system32\wbem;Z:\apitrace-msvc-win64\bin" \
|
||||
/f
|
||||
|
||||
############### Building ...
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
############### Build parallel-deqp-runner's hang-detection tool
|
||||
|
||||
. .gitlab-ci/container/build-hang-detection.sh
|
||||
|
||||
############### Build piglit replayer
|
||||
|
||||
PIGLIT_BUILD_TARGETS="piglit_replayer" . .gitlab-ci/container/build-piglit.sh
|
||||
|
||||
############### Build Fossilize
|
||||
|
||||
. .gitlab-ci/container/build-fossilize.sh
|
||||
|
||||
############### Build dEQP VK
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
. .gitlab-ci/container/build-apitrace.sh
|
||||
|
||||
############### Build gfxreconstruct
|
||||
|
||||
. .gitlab-ci/container/build-gfxreconstruct.sh
|
||||
|
||||
############### Build VKD3D-Proton
|
||||
|
||||
. .gitlab-ci/container/setup-wine.sh "/vkd3d-proton-wine64"
|
||||
|
||||
. .gitlab-ci/container/build-vkd3d-proton.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
@@ -27,7 +27,6 @@ EPHEMERAL=(
|
||||
DEPS=(
|
||||
bindgen
|
||||
bison
|
||||
cbindgen
|
||||
ccache
|
||||
clang-devel
|
||||
flex
|
||||
@@ -77,8 +76,6 @@ DEPS=(
|
||||
python3-devel
|
||||
python3-mako
|
||||
python3-ply
|
||||
python3-pycparser
|
||||
python3-yaml
|
||||
rust-packaging
|
||||
vulkan-headers
|
||||
spirv-tools-devel
|
||||
@@ -102,7 +99,8 @@ tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
||||
rm -rf $XORGMACROS_VERSION
|
||||
|
||||
. .gitlab-ci/container/install-meson.sh
|
||||
# We need at least 1.3.1 for rusticl
|
||||
pip install meson==1.3.1
|
||||
|
||||
. .gitlab-ci/container/build-mold.sh
|
||||
|
||||
|
@@ -40,16 +40,10 @@
|
||||
# repository's container registry, so that the image from the main
|
||||
# repository's registry will be used there as well.
|
||||
|
||||
.debian-container-version:
|
||||
.debian-container:
|
||||
variables:
|
||||
FDO_DISTRIBUTION_VERSION: bookworm-slim
|
||||
|
||||
.debian-container:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
- .debian-container-version
|
||||
|
||||
.container:
|
||||
stage: container
|
||||
extends:
|
||||
@@ -69,6 +63,8 @@
|
||||
# Debian based x86_64 build image base
|
||||
debian/x86_64_build-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
- .debian-container
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_build-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
@@ -80,7 +76,7 @@ debian/x86_64_build-base:
|
||||
.use-debian/x86_64_build-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .debian-container
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_64_BUILD_BASE_IMAGE}
|
||||
@@ -182,15 +178,14 @@ debian/android_build:
|
||||
|
||||
# Debian based x86_64 test image base
|
||||
debian/x86_64_test-base:
|
||||
extends:
|
||||
- .debian-container
|
||||
extends: debian/x86_64_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}"
|
||||
|
||||
.use-debian/x86_64_test-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .debian-container
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_64_TEST_BASE_IMAGE}
|
||||
@@ -198,33 +193,11 @@ debian/x86_64_test-base:
|
||||
needs:
|
||||
- debian/x86_64_test-base
|
||||
|
||||
# Debian based aarch64 test image base
|
||||
debian/arm64_test-base:
|
||||
tags:
|
||||
- aarch64
|
||||
extends:
|
||||
- .debian-container
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
|
||||
.use-debian/arm64_test-base:
|
||||
tags:
|
||||
- aarch64
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .debian-container-version
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: ${DEBIAN_ARM64_TEST_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
needs:
|
||||
- debian/arm64_test-base
|
||||
|
||||
# Debian based x86_64 test image for GL
|
||||
debian/x86_64_test-gl:
|
||||
extends: .use-debian/x86_64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_X86_64_TEST_GL_TAG}
|
||||
|
||||
.use-debian/x86_64_test-gl:
|
||||
extends:
|
||||
@@ -240,7 +213,7 @@ debian/x86_64_test-gl:
|
||||
debian/x86_64_test-vk:
|
||||
extends: .use-debian/x86_64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_X86_64_TEST_VK_TAG}
|
||||
|
||||
.use-debian/x86_64_test-vk:
|
||||
extends:
|
||||
@@ -253,10 +226,10 @@ debian/x86_64_test-vk:
|
||||
- debian/x86_64_test-vk
|
||||
|
||||
# Debian based x86_64 test image for Android
|
||||
.debian/x86_64_test-android:
|
||||
debian/x86_64_test-android:
|
||||
extends: .use-debian/x86_64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG}
|
||||
MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_X86_64_TEST_ANDROID_TAG}
|
||||
ANDROID_NDK: android-ndk-r25b
|
||||
|
||||
.use-debian/x86_64_test-android:
|
||||
@@ -269,52 +242,12 @@ debian/x86_64_test-vk:
|
||||
needs:
|
||||
- debian/x86_64_test-android
|
||||
|
||||
# Debian based aarch64 test image for GL
|
||||
debian/arm64_test-gl:
|
||||
tags:
|
||||
- aarch64
|
||||
extends: .use-debian/arm64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||
|
||||
.use-debian/arm64_test-gl:
|
||||
tags:
|
||||
- aarch64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_GL_PATH}
|
||||
MESA_IMAGE_TAG: *debian-arm64_test-gl
|
||||
needs:
|
||||
- debian/arm64_test-gl
|
||||
|
||||
# Debian based aarch64 test image for VK
|
||||
debian/arm64_test-vk:
|
||||
tags:
|
||||
- aarch64
|
||||
extends: .use-debian/arm64_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||
|
||||
.use-debian/arm64_test-vk:
|
||||
tags:
|
||||
- aarch64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-arm64_test-base
|
||||
MESA_IMAGE_PATH: ${DEBIAN_ARM64_TEST_IMAGE_VK_PATH}
|
||||
MESA_IMAGE_TAG: *debian-arm64_test-vk
|
||||
needs:
|
||||
- debian/arm64_test-vk
|
||||
|
||||
# Debian based ARM build image
|
||||
debian/arm64_build:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
- .debian-container-version
|
||||
- .debian-container
|
||||
tags:
|
||||
- aarch64
|
||||
variables:
|
||||
@@ -346,14 +279,6 @@ alpine/x86_64_build:
|
||||
- .alpine/x86_64_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &alpine-x86_64_build ${ALPINE_X86_64_BUILD_TAG}
|
||||
rules:
|
||||
# Note: the next three lines must remain in that order, so that the rules
|
||||
# in `linkcheck-docs` catch nightly pipelines before the rules in `pages`
|
||||
# exclude them.
|
||||
- !reference [linkcheck-docs, rules]
|
||||
- !reference [pages, rules]
|
||||
- !reference [test-docs, rules]
|
||||
- !reference [.container, rules]
|
||||
|
||||
.use-alpine/x86_64_build:
|
||||
extends:
|
||||
@@ -393,9 +318,8 @@ fedora/x86_64_build:
|
||||
.kernel+rootfs:
|
||||
extends:
|
||||
- .container+build-rules
|
||||
- .debian-container-version
|
||||
- .debian-container
|
||||
stage: container
|
||||
timeout: 90m
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG}
|
||||
@@ -439,59 +363,59 @@ kernel+rootfs_arm32:
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
|
||||
# x86_64 image with ARM64 & ARM32 kernel & rootfs for baremetal testing
|
||||
.debian/baremetal_arm_test:
|
||||
.debian/arm_test:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
- .debian-container-version
|
||||
- .debian-container
|
||||
# Don't want the .container rules
|
||||
- .container+build-rules
|
||||
variables:
|
||||
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
ARTIFACTS_PREFIX: "https://${S3_HOST}/${S3_KERNEL_BUCKET}"
|
||||
ARTIFACTS_PREFIX: "https://${S3_HOST}/mesa-lava"
|
||||
ARTIFACTS_SUFFIX: "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
MESA_ARTIFACTS_TAG: *debian-arm64_build
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
|
||||
debian/baremetal_arm32_test:
|
||||
debian/arm32_test:
|
||||
extends:
|
||||
- .debian/baremetal_arm_test
|
||||
- .debian/arm_test
|
||||
needs:
|
||||
- kernel+rootfs_arm32
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm32_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
|
||||
debian/baremetal_arm64_test:
|
||||
debian/arm64_test:
|
||||
extends:
|
||||
- .debian/baremetal_arm_test
|
||||
- .debian/arm_test
|
||||
needs:
|
||||
- kernel+rootfs_arm64
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm64_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||
|
||||
.use-debian/baremetal_arm_test:
|
||||
.use-debian/arm_test:
|
||||
variables:
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
|
||||
.use-debian/baremetal_arm32_test:
|
||||
.use-debian/arm32_test:
|
||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
extends:
|
||||
- .use-debian/baremetal_arm_test
|
||||
- .use-debian/arm_test
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "debian/baremetal_arm32_test"
|
||||
MESA_IMAGE_PATH: "debian/arm32_test"
|
||||
MESA_IMAGE_TAG: *debian-arm32_test
|
||||
needs:
|
||||
- debian/baremetal_arm_test
|
||||
- debian/arm_test
|
||||
|
||||
.use-debian/baremetal_arm64_test:
|
||||
.use-debian/arm64_test:
|
||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
extends:
|
||||
- .use-debian/baremetal_arm_test
|
||||
- .use-debian/arm_test
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "debian/baremetal_arm64_test"
|
||||
MESA_IMAGE_PATH: "debian/arm64_test"
|
||||
MESA_IMAGE_TAG: *debian-arm64_test
|
||||
needs:
|
||||
- debian/baremetal_arm_test
|
||||
- debian/arm_test
|
||||
|
||||
# Native Windows docker builds
|
||||
#
|
||||
|
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BUILD_TAG
|
||||
# FEDORA_X86_64_BUILD_TAG
|
||||
|
||||
rm -f /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
|
||||
# We need at least 1.4.0 for rusticl
|
||||
pip3 install 'meson==1.4.0'
|
@@ -14,7 +14,7 @@ export LLVM_VERSION="${LLVM_VERSION:=15}"
|
||||
|
||||
check_minio()
|
||||
{
|
||||
S3_PATH="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||
S3_PATH="${S3_HOST}/mesa-lava/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||
if curl -L --retry 4 -f --retry-delay 60 -s -X HEAD \
|
||||
"https://${S3_PATH}/done"; then
|
||||
echo "Remote files are up-to-date, skip rebuilding them."
|
||||
@@ -31,8 +31,6 @@ check_minio "${CI_PROJECT_PATH}"
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
|
||||
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
||||
BUILD_CL="ON"
|
||||
BUILD_VK="ON"
|
||||
GCC_ARCH="aarch64-linux-gnu"
|
||||
KERNEL_ARCH="arm64"
|
||||
SKQP_ARCH="arm64"
|
||||
@@ -54,8 +52,6 @@ if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
||||
KERNEL_IMAGE_NAME="Image"
|
||||
|
||||
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
||||
BUILD_CL="OFF"
|
||||
BUILD_VK="OFF"
|
||||
GCC_ARCH="arm-linux-gnueabihf"
|
||||
KERNEL_ARCH="arm"
|
||||
SKQP_ARCH="arm"
|
||||
@@ -80,8 +76,6 @@ elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
||||
libxkbcommon-dev:armhf
|
||||
)
|
||||
else
|
||||
BUILD_CL="ON"
|
||||
BUILD_VK="ON"
|
||||
GCC_ARCH="x86_64-linux-gnu"
|
||||
KERNEL_ARCH="x86_64"
|
||||
SKQP_ARCH="x64"
|
||||
@@ -89,7 +83,7 @@ else
|
||||
DEVICE_TREES=""
|
||||
KERNEL_IMAGE_NAME="bzImage"
|
||||
CONTAINER_ARCH_PACKAGES=(
|
||||
libasound2-dev libcap-dev libfdt-dev libva-dev p7zip wine
|
||||
libasound2-dev libcap-dev libfdt-dev libva-dev wayland-protocols p7zip wine
|
||||
)
|
||||
fi
|
||||
|
||||
@@ -150,15 +144,9 @@ CONTAINER_EPHEMERAL=(
|
||||
python3-serial
|
||||
python3-venv
|
||||
unzip
|
||||
wayland-protocols
|
||||
zstd
|
||||
)
|
||||
|
||||
[ "$BUILD_CL" == "ON" ] && CONTAINER_EPHEMERAL+=(
|
||||
ocl-icd-opencl-dev
|
||||
)
|
||||
|
||||
|
||||
echo "deb [trusted=yes] https://gitlab.freedesktop.org/gfx-ci/ci-deb-repo/-/raw/${PKG_REPO_REV}/ ${FDO_DISTRIBUTION_VERSION%-*} main" | tee /etc/apt/sources.list.d/gfx-ci_.list
|
||||
|
||||
apt-get update
|
||||
@@ -202,6 +190,7 @@ PKG_DEP=(
|
||||
# arch dependent rootfs packages
|
||||
[ "$DEBIAN_ARCH" = "arm64" ] && PKG_ARCH=(
|
||||
libgl1 libglu1-mesa
|
||||
libvulkan-dev
|
||||
firmware-linux-nonfree firmware-qcom-media
|
||||
libfontconfig1
|
||||
)
|
||||
@@ -214,6 +203,7 @@ PKG_DEP=(
|
||||
spirv-tools
|
||||
libelf1 libfdt1 "libllvm${LLVM_VERSION}"
|
||||
libva2 libva-drm2
|
||||
libvulkan-dev
|
||||
socat
|
||||
sysvinit-core
|
||||
wine
|
||||
@@ -222,16 +212,6 @@ PKG_DEP=(
|
||||
firmware-misc-nonfree
|
||||
)
|
||||
|
||||
[ "$BUILD_CL" == "ON" ] && PKG_ARCH+=(
|
||||
clinfo
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
ocl-icd-libopencl1
|
||||
)
|
||||
[ "$BUILD_VK" == "ON" ] && PKG_ARCH+=(
|
||||
libvulkan-dev
|
||||
)
|
||||
|
||||
mmdebstrap \
|
||||
--variant=apt \
|
||||
--arch="${DEBIAN_ARCH}" \
|
||||
@@ -264,17 +244,6 @@ fi
|
||||
STRIP_CMD="${GCC_ARCH}-strip"
|
||||
mkdir -p $ROOTFS/usr/lib/$GCC_ARCH
|
||||
|
||||
############### Build libclc
|
||||
|
||||
if [ "$BUILD_CL" = "ON" ]; then
|
||||
rm -rf /usr/lib/clc/*
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
mkdir -p $ROOTFS/usr/{share,lib}/clc
|
||||
mv /usr/share/clc/spirv*-mesa3d-.spv $ROOTFS/usr/share/clc/
|
||||
ln -s /usr/share/clc/spirv64-mesa3d-.spv $ROOTFS/usr/lib/clc/
|
||||
ln -s /usr/share/clc/spirv-mesa3d-.spv $ROOTFS/usr/lib/clc/
|
||||
fi
|
||||
|
||||
############### Build Vulkan validation layer (for zink)
|
||||
if [ "$DEBIAN_ARCH" = "amd64" ]; then
|
||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||
@@ -311,7 +280,7 @@ DEQP_API=GLES \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
[ "$BUILD_VK" == "ON" ] && DEQP_API=VK \
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
@@ -326,21 +295,7 @@ if [[ "$DEBIAN_ARCH" = "arm64" ]] \
|
||||
fi
|
||||
|
||||
############### Build piglit
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=ON
|
||||
-DPIGLIT_USE_WAYLAND=ON
|
||||
-DPIGLIT_USE_X11=ON
|
||||
-DPIGLIT_BUILD_GLX_TESTS=ON
|
||||
-DPIGLIT_BUILD_EGL_TESTS=ON
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=ON
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=ON
|
||||
-DPIGLIT_BUILD_CL_TESTS=$BUILD_CL
|
||||
-DPIGLIT_BUILD_VK_TESTS=$BUILD_VK
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=ON" \
|
||||
. .gitlab-ci/container/build-piglit.sh
|
||||
PIGLIT_OPTS="-DPIGLIT_BUILD_DMA_BUF_TESTS=ON -DPIGLIT_BUILD_GLX_TESTS=ON" . .gitlab-ci/container/build-piglit.sh
|
||||
mv /piglit $ROOTFS/.
|
||||
|
||||
############### Build libva tests
|
||||
@@ -372,8 +327,8 @@ if [[ -e ".gitlab-ci/local/build-rootfs.sh" ]]; then
|
||||
fi
|
||||
|
||||
|
||||
############### Download prebuilt kernel
|
||||
. .gitlab-ci/container/download-prebuilt-kernel.sh
|
||||
############### Build kernel
|
||||
. .gitlab-ci/container/build-kernel.sh
|
||||
|
||||
############### Delete rust, since the tests won't be compiling anything.
|
||||
rm -rf /root/.cargo
|
||||
@@ -410,8 +365,8 @@ popd
|
||||
|
||||
. .gitlab-ci/container/container_post_build.sh
|
||||
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/"${ROOTFSTAR}" \
|
||||
ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" /lava-files/"${ROOTFSTAR}" \
|
||||
https://${S3_PATH}/"${ROOTFSTAR}"
|
||||
|
||||
touch /lava-files/done
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/done https://${S3_PATH}/done
|
||||
ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" /lava-files/done https://${S3_PATH}/done
|
||||
|
@@ -0,0 +1,29 @@
|
||||
From 7c9aa6f846f9f2f0d70b5c4a8e7c99a3d31b3b1a Mon Sep 17 00:00:00 2001
|
||||
From: Rob Clark <robdclark@chromium.org>
|
||||
Date: Sat, 27 Jan 2024 10:59:00 -0800
|
||||
Subject: [PATCH] Add missing subgroup support checks for linear derivate tests
|
||||
|
||||
Some of these tests require subgroup ops support, but didn't bother
|
||||
checking whether they were supported. Add this missing checks.
|
||||
---
|
||||
.../vulkan/shaderrender/vktShaderRenderDerivateTests.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
index 3253505958..709044f2e8 100644
|
||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
@@ -1145,6 +1145,13 @@ LinearDerivateCase::~LinearDerivateCase (void)
|
||||
TestInstance* LinearDerivateCase::createInstance (Context& context) const
|
||||
{
|
||||
DE_ASSERT(m_uniformSetup != DE_NULL);
|
||||
+ if (m_fragmentTmpl.find("gl_SubgroupInvocationID") != std::string::npos) {
|
||||
+ if (!subgroups::areQuadOperationsSupportedForStages(context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
||||
+ throw tcu::NotSupportedError("test requires VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
+
|
||||
+ if (subgroups::getSubgroupSize(context) < 4)
|
||||
+ throw tcu::NotSupportedError("test requires subgroupSize >= 4");
|
||||
+ }
|
||||
return new LinearDerivateCaseInstance(context, *m_uniformSetup, m_definitions, m_values);
|
||||
}
|
||||
|
@@ -0,0 +1,56 @@
|
||||
From ed3794c975d284a5453ae33ae59dd1541a9eb804 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Clark <robdclark@chromium.org>
|
||||
Date: Sat, 27 Jan 2024 10:57:28 -0800
|
||||
Subject: [PATCH] Use subgroups helper in derivate tests
|
||||
|
||||
For the tests that need subgroup ops, use the existing subgroups helper,
|
||||
rather than open-coding the same checks.
|
||||
---
|
||||
.../vktShaderRenderDerivateTests.cpp | 23 ++++---------------
|
||||
1 file changed, 5 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
index a8bb5a3ba7..3253505958 100644
|
||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include "vktShaderRenderDerivateTests.hpp"
|
||||
#include "vktShaderRender.hpp"
|
||||
+#include "subgroups/vktSubgroupsTestsUtils.hpp"
|
||||
#include "vkImageUtil.hpp"
|
||||
#include "vkQueryUtil.hpp"
|
||||
|
||||
@@ -707,28 +708,14 @@ tcu::TestStatus TriangleDerivateCaseInstance::iterate (void)
|
||||
{
|
||||
const std::string errorPrefix = m_definitions.inNonUniformControlFlow ? "Derivatives in dynamic control flow" :
|
||||
"Manual derivatives with subgroup operations";
|
||||
- if (!m_context.contextSupports(vk::ApiVersion(0, 1, 1, 0)))
|
||||
- throw tcu::NotSupportedError(errorPrefix + " require Vulkan 1.1");
|
||||
-
|
||||
- vk::VkPhysicalDeviceSubgroupProperties subgroupProperties;
|
||||
- deMemset(&subgroupProperties, 0, sizeof(subgroupProperties));
|
||||
- subgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
|
||||
-
|
||||
- vk::VkPhysicalDeviceProperties2 properties2;
|
||||
- deMemset(&properties2, 0, sizeof(properties2));
|
||||
- properties2.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
||||
- properties2.pNext = &subgroupProperties;
|
||||
-
|
||||
- m_context.getInstanceInterface().getPhysicalDeviceProperties2(m_context.getPhysicalDevice(), &properties2);
|
||||
+ if (!subgroups::areQuadOperationsSupportedForStages(m_context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
||||
+ throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
|
||||
- if (subgroupProperties.subgroupSize < 4)
|
||||
+ if (subgroups::getSubgroupSize(m_context) < 4)
|
||||
throw tcu::NotSupportedError(errorPrefix + " require subgroupSize >= 4");
|
||||
|
||||
- if ((subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT) == 0)
|
||||
+ if (!subgroups::isSubgroupFeatureSupportedForDevice(m_context, VK_SUBGROUP_FEATURE_BALLOT_BIT))
|
||||
throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_BALLOT_BIT");
|
||||
-
|
||||
- if (isSubgroupFunc(m_definitions.func) && (subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_QUAD_BIT) == 0)
|
||||
- throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
}
|
||||
|
||||
setup();
|
@@ -96,9 +96,9 @@ set +e -x
|
||||
NIR_DEBUG="novalidate" \
|
||||
LIBGL_ALWAYS_SOFTWARE=${CROSVM_LIBGL_ALWAYS_SOFTWARE} \
|
||||
GALLIUM_DRIVER=${CROSVM_GALLIUM_DRIVER} \
|
||||
VK_DRIVER_FILES=$CI_PROJECT_DIR/install/share/vulkan/icd.d/${CROSVM_VK_DRIVER}_icd.x86_64.json \
|
||||
VK_ICD_FILENAMES=$CI_PROJECT_DIR/install/share/vulkan/icd.d/${CROSVM_VK_DRIVER}_icd.x86_64.json \
|
||||
crosvm --no-syslog run \
|
||||
--gpu "${CROSVM_GPU_ARGS}" --gpu-render-server "path=${VIRGL_RENDER_SERVER:-/usr/local/libexec/virgl_render_server}" \
|
||||
--gpu "${CROSVM_GPU_ARGS}" --gpu-render-server "path=/usr/local/libexec/virgl_render_server" \
|
||||
-m "${CROSVM_MEMORY:-4096}" -c "${CROSVM_CPU:-2}" --disable-sandbox \
|
||||
--shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
|
||||
--net "host-ip=192.168.30.1,netmask=255.255.255.0,mac=AA:BB:CC:00:00:12" \
|
||||
|
@@ -18,8 +18,7 @@ INSTALL=$(realpath -s "$PWD"/install)
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL"/lib/:$LD_LIBRARY_PATH
|
||||
export EGL_PLATFORM=surfaceless
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd."$ARCH".json
|
||||
export VK_ICD_FILENAMES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.${VK_CPU:-$(uname -m)}.json
|
||||
export OCL_ICD_VENDORS="$PWD"/install/etc/OpenCL/vendors/
|
||||
|
||||
if [ -n "$USE_ANGLE" ]; then
|
||||
@@ -60,7 +59,7 @@ if [ -z "$DEQP_SUITE" ]; then
|
||||
|
||||
# Generate test case list file.
|
||||
if [ "$DEQP_VER" = "vk" ]; then
|
||||
MUSTPASS=/deqp/mustpass/vk-main.txt
|
||||
MUSTPASS=/deqp/mustpass/vk-master.txt
|
||||
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
|
||||
elif [ "$DEQP_VER" = "gles2" ] || [ "$DEQP_VER" = "gles3" ] || [ "$DEQP_VER" = "gles31" ] || [ "$DEQP_VER" = "egl" ]; then
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
||||
@@ -170,7 +169,7 @@ fi
|
||||
uncollapsed_section_switch deqp "deqp: deqp-runner"
|
||||
|
||||
# Print the detailed version with the list of backports and local patches
|
||||
for api in vk gl gles; do
|
||||
for api in vk gl; do
|
||||
deqp_version_log=/deqp/version-$api
|
||||
if [ -r "$deqp_version_log" ]; then
|
||||
cat "$deqp_version_log"
|
||||
|
@@ -18,7 +18,7 @@ TMP_DIR=$(mktemp -d)
|
||||
echo "$(date +"%F %T") Downloading archived master..."
|
||||
if ! /usr/bin/wget \
|
||||
-O "$TMP_DIR/$CI_PROJECT_NAME.tar.gz" \
|
||||
"https://${S3_HOST}/${S3_GITCACHE_BUCKET}/${FDO_UPSTREAM_REPO}/$CI_PROJECT_NAME.tar.gz";
|
||||
"https://${S3_HOST}/git-cache/${FDO_UPSTREAM_REPO}/$CI_PROJECT_NAME.tar.gz";
|
||||
then
|
||||
echo "Repository cache not available"
|
||||
exit
|
||||
|
@@ -237,25 +237,6 @@
|
||||
when: never
|
||||
- !reference [.freedreno-farm-rules, rules]
|
||||
|
||||
.vmware-farm-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/vmware ]
|
||||
when: never
|
||||
- changes: [ .ci-farms-disabled/vmware ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: on_success
|
||||
- changes: [ .ci-farms-disabled/* ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: never
|
||||
|
||||
.vmware-farm-manual-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/vmware ]
|
||||
when: never
|
||||
- changes: [ .ci-farms-disabled/vmware ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: never
|
||||
- !reference [.vmware-farm-rules, rules]
|
||||
|
||||
.ondracka-farm-rules:
|
||||
rules:
|
||||
@@ -330,10 +311,6 @@
|
||||
changes: [ .ci-farms-disabled/ondracka ]
|
||||
exists: [ .ci-farms-disabled/ondracka ]
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: [ .ci-farms-disabled/vmware ]
|
||||
exists: [ .ci-farms-disabled/vmware ]
|
||||
when: never
|
||||
# Any other change to ci-farms/* means some farm is getting re-enabled.
|
||||
# Run jobs in Marge pipelines (and let it fallback to manual otherwise)
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "marge-bot"'
|
||||
|
@@ -11,7 +11,7 @@ INSTALL=$PWD/install
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||
export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||
|
||||
# To store Fossilize logs on failure.
|
||||
RESULTS="$PWD/results"
|
||||
|
@@ -13,37 +13,34 @@
|
||||
|
||||
variables:
|
||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
||||
DEBIAN_BASE_TAG: "20240717-pyyaml-3"
|
||||
DEBIAN_BASE_TAG: "20240307-virglcrosvm"
|
||||
|
||||
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
||||
DEBIAN_BUILD_TAG: "20240717-pyyaml-3"
|
||||
DEBIAN_BUILD_TAG: "20240301-mold"
|
||||
|
||||
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
||||
DEBIAN_ARM64_TEST_BASE_IMAGE: "debian/arm64_test-base"
|
||||
|
||||
DEBIAN_X86_64_TEST_IMAGE_GL_PATH: "debian/x86_64_test-gl"
|
||||
DEBIAN_ARM64_TEST_IMAGE_GL_PATH: "debian/arm64_test-gl"
|
||||
DEBIAN_X86_64_TEST_IMAGE_VK_PATH: "debian/x86_64_test-vk"
|
||||
DEBIAN_ARM64_TEST_IMAGE_VK_PATH: "debian/arm64_test-vk"
|
||||
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
||||
|
||||
DEBIAN_TEST_ANDROID_TAG: "20240423-deqp"
|
||||
DEBIAN_TEST_GL_TAG: "20240713-piglit-58"
|
||||
DEBIAN_TEST_VK_TAG: "20240713-piglit-58"
|
||||
KERNEL_ROOTFS_TAG: "20240713-piglit-58"
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG: "20240311-runner"
|
||||
DEBIAN_X86_64_TEST_GL_TAG: "20240313-ninetests"
|
||||
DEBIAN_X86_64_TEST_VK_TAG: "20240317-direct_drm"
|
||||
KERNEL_ROOTFS_TAG: "20240317-direct_drm"
|
||||
|
||||
ALPINE_X86_64_BUILD_TAG: "20240717-pyyaml"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20240401-wlproto"
|
||||
FEDORA_X86_64_BUILD_TAG: "20240717-pyyaml"
|
||||
KERNEL_TAG: "v6.6.21-mesa-f8ea"
|
||||
ALPINE_X86_64_BUILD_TAG: "20240208-libclc-5"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20230626-v1"
|
||||
FEDORA_X86_64_BUILD_TAG: "20240301-mold"
|
||||
KERNEL_TAG: "v6.6.21-mesa-19fc"
|
||||
KERNEL_REPO: "gfx-ci/linux"
|
||||
PKG_REPO_REV: "bca9635d"
|
||||
PKG_REPO_REV: "3cc12a2a"
|
||||
|
||||
WINDOWS_X64_MSVC_PATH: "windows/x86_64_msvc"
|
||||
WINDOWS_X64_MSVC_TAG: "20240717-pyyaml-3"
|
||||
WINDOWS_X64_MSVC_TAG: "20231222-msvc"
|
||||
|
||||
WINDOWS_X64_BUILD_PATH: "windows/x86_64_build"
|
||||
WINDOWS_X64_BUILD_TAG: "20240717-pyyaml-3"
|
||||
WINDOWS_X64_BUILD_TAG: "20240117-vulkan-sdk"
|
||||
|
||||
WINDOWS_X64_TEST_PATH: "windows/x86_64_test"
|
||||
WINDOWS_X64_TEST_TAG: "20240717-pyyaml-3"
|
||||
WINDOWS_X64_TEST_TAG: "20240117-vulkan-sdk"
|
||||
|
@@ -5,36 +5,24 @@ class MesaCIException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class MesaCIRetriableException(MesaCIException):
|
||||
pass
|
||||
|
||||
|
||||
class MesaCITimeoutError(MesaCIRetriableException):
|
||||
class MesaCITimeoutError(MesaCIException):
|
||||
def __init__(self, *args, timeout_duration: timedelta) -> None:
|
||||
super().__init__(*args)
|
||||
self.timeout_duration = timeout_duration
|
||||
|
||||
|
||||
class MesaCIRetryError(MesaCIRetriableException):
|
||||
class MesaCIRetryError(MesaCIException):
|
||||
def __init__(self, *args, retry_count: int, last_job: None) -> None:
|
||||
super().__init__(*args)
|
||||
self.retry_count = retry_count
|
||||
self.last_job = last_job
|
||||
|
||||
|
||||
class MesaCIFatalException(MesaCIException):
|
||||
"""Exception raised when the Mesa CI script encounters a fatal error that
|
||||
prevents the script from continuing."""
|
||||
|
||||
def __init__(self, *args) -> None:
|
||||
super().__init__(*args)
|
||||
|
||||
|
||||
class MesaCIParseException(MesaCIRetriableException):
|
||||
class MesaCIParseException(MesaCIException):
|
||||
pass
|
||||
|
||||
|
||||
class MesaCIKnownIssueException(MesaCIRetriableException):
|
||||
class MesaCIKnownIssueException(MesaCIException):
|
||||
"""Exception raised when the Mesa CI script finds something in the logs that
|
||||
is known to cause the LAVA job to eventually fail"""
|
||||
|
||||
|
@@ -11,7 +11,7 @@ variables:
|
||||
# proxy used to cache data locally
|
||||
FDO_HTTP_CACHE_URI: "http://caching-proxy/cache/?uri="
|
||||
# base system generated by the container build job, shared between many pipelines
|
||||
BASE_SYSTEM_HOST_PREFIX: "${S3_HOST}/${S3_KERNEL_BUCKET}"
|
||||
BASE_SYSTEM_HOST_PREFIX: "${S3_HOST}/mesa-lava"
|
||||
BASE_SYSTEM_MAINLINE_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${FDO_UPSTREAM_REPO}/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||
BASE_SYSTEM_FORK_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||
# per-job build artifacts
|
||||
|
@@ -30,7 +30,7 @@ artifacts/ci-common/generate-env.sh | tee results/job-rootfs-overlay/set-job-env
|
||||
section_end variables
|
||||
|
||||
tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}"
|
||||
ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}"
|
||||
|
||||
ARTIFACT_URL="${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME:?}.tar.zst"
|
||||
|
||||
@@ -49,9 +49,8 @@ PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
|
||||
--first-stage-init artifacts/ci-common/init-stage1.sh \
|
||||
--ci-project-dir "${CI_PROJECT_DIR}" \
|
||||
--device-type "${DEVICE_TYPE}" \
|
||||
--farm "${FARM}" \
|
||||
--dtb-filename "${DTB}" \
|
||||
--jwt-file "${S3_JWT_FILE}" \
|
||||
--jwt-file "${CI_JOB_JWT_FILE}" \
|
||||
--kernel-image-name "${KERNEL_IMAGE_NAME}" \
|
||||
--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
|
||||
--boot-method "${BOOT_METHOD}" \
|
||||
|
@@ -16,7 +16,7 @@ import sys
|
||||
import time
|
||||
from collections import defaultdict
|
||||
from dataclasses import dataclass, fields
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from datetime import datetime, timedelta
|
||||
from os import environ, getenv, path
|
||||
from typing import Any, Optional
|
||||
|
||||
@@ -25,8 +25,6 @@ from lavacli.utils import flow_yaml as lava_yaml
|
||||
|
||||
from lava.exceptions import (
|
||||
MesaCIException,
|
||||
MesaCIFatalException,
|
||||
MesaCIRetriableException,
|
||||
MesaCIParseException,
|
||||
MesaCIRetryError,
|
||||
MesaCITimeoutError,
|
||||
@@ -60,7 +58,7 @@ except ImportError as e:
|
||||
|
||||
# Timeout in seconds to decide if the device from the dispatched LAVA job has
|
||||
# hung or not due to the lack of new log output.
|
||||
DEVICE_HANGING_TIMEOUT_SEC = int(getenv("DEVICE_HANGING_TIMEOUT_SEC", 5 * 60))
|
||||
DEVICE_HANGING_TIMEOUT_SEC = int(getenv("DEVICE_HANGING_TIMEOUT_SEC", 5*60))
|
||||
|
||||
# How many seconds the script should wait before try a new polling iteration to
|
||||
# check if the dispatched LAVA job is running or waiting in the job queue.
|
||||
@@ -83,29 +81,18 @@ NUMBER_OF_RETRIES_TIMEOUT_DETECTION = int(
|
||||
getenv("LAVA_NUMBER_OF_RETRIES_TIMEOUT_DETECTION", 2)
|
||||
)
|
||||
|
||||
CI_JOB_TIMEOUT_SEC = int(getenv("CI_JOB_TIMEOUT", 3600))
|
||||
# How many seconds the script will wait to let LAVA run the job and give the final details.
|
||||
EXPECTED_JOB_DURATION_SEC = int(getenv("EXPECTED_JOB_DURATION_SEC", 60 * 10))
|
||||
# CI_JOB_STARTED is given by GitLab CI/CD in UTC timezone by default.
|
||||
CI_JOB_STARTED_AT_RAW = getenv("CI_JOB_STARTED_AT", "")
|
||||
CI_JOB_STARTED_AT: datetime = (
|
||||
datetime.fromisoformat(CI_JOB_STARTED_AT_RAW)
|
||||
if CI_JOB_STARTED_AT_RAW
|
||||
else datetime.now(timezone.utc)
|
||||
)
|
||||
|
||||
|
||||
def raise_exception_from_metadata(metadata: dict, job_id: int) -> None:
|
||||
"""
|
||||
Investigate infrastructure errors from the job metadata.
|
||||
If it finds an error, raise it as MesaCIRetriableException.
|
||||
If it finds an error, raise it as MesaCIException.
|
||||
"""
|
||||
if "result" not in metadata or metadata["result"] != "fail":
|
||||
return
|
||||
if "error_type" in metadata:
|
||||
error_type = metadata["error_type"]
|
||||
if error_type == "Infrastructure":
|
||||
raise MesaCIRetriableException(
|
||||
raise MesaCIException(
|
||||
f"LAVA job {job_id} failed with Infrastructure Error. Retry."
|
||||
)
|
||||
if error_type == "Job":
|
||||
@@ -113,12 +100,12 @@ def raise_exception_from_metadata(metadata: dict, job_id: int) -> None:
|
||||
# with mal-formed job definitions. As we are always validating the
|
||||
# jobs, only the former is probable to happen. E.g.: When some LAVA
|
||||
# action timed out more times than expected in job definition.
|
||||
raise MesaCIRetriableException(
|
||||
raise MesaCIException(
|
||||
f"LAVA job {job_id} failed with JobError "
|
||||
"(possible LAVA timeout misconfiguration/bug). Retry."
|
||||
)
|
||||
if "case" in metadata and metadata["case"] == "validate":
|
||||
raise MesaCIRetriableException(
|
||||
raise MesaCIException(
|
||||
f"LAVA job {job_id} failed validation (possible download error). Retry."
|
||||
)
|
||||
|
||||
@@ -195,6 +182,7 @@ def is_job_hanging(job, max_idle_time):
|
||||
|
||||
|
||||
def parse_log_lines(job, log_follower, new_log_lines):
|
||||
|
||||
if log_follower.feed(new_log_lines):
|
||||
# If we had non-empty log data, we can assure that the device is alive.
|
||||
job.heartbeat()
|
||||
@@ -212,6 +200,7 @@ def parse_log_lines(job, log_follower, new_log_lines):
|
||||
|
||||
|
||||
def fetch_new_log_lines(job):
|
||||
|
||||
# The XMLRPC binary packet may be corrupted, causing a YAML scanner error.
|
||||
# Retry the log fetching several times before exposing the error.
|
||||
for _ in range(5):
|
||||
@@ -227,28 +216,14 @@ def submit_job(job):
|
||||
try:
|
||||
job.submit()
|
||||
except Exception as mesa_ci_err:
|
||||
raise MesaCIRetriableException(
|
||||
raise MesaCIException(
|
||||
f"Could not submit LAVA job. Reason: {mesa_ci_err}"
|
||||
) from mesa_ci_err
|
||||
|
||||
|
||||
def wait_for_job_get_started(job, attempt_no):
|
||||
def wait_for_job_get_started(job):
|
||||
print_log(f"Waiting for job {job.job_id} to start.")
|
||||
while not job.is_started():
|
||||
current_job_duration_sec: int = int(
|
||||
(datetime.now(timezone.utc) - CI_JOB_STARTED_AT).total_seconds()
|
||||
)
|
||||
remaining_time_sec: int = max(0, CI_JOB_TIMEOUT_SEC - current_job_duration_sec)
|
||||
if remaining_time_sec < EXPECTED_JOB_DURATION_SEC:
|
||||
job.cancel()
|
||||
raise MesaCIFatalException(
|
||||
f"{CONSOLE_LOG['BOLD']}"
|
||||
f"{CONSOLE_LOG['FG_YELLOW']}"
|
||||
f"Job {job.job_id} only has {remaining_time_sec} seconds "
|
||||
"remaining to run, but it is expected to take at least "
|
||||
f"{EXPECTED_JOB_DURATION_SEC} seconds."
|
||||
f"{CONSOLE_LOG['RESET']}",
|
||||
)
|
||||
time.sleep(WAIT_FOR_DEVICE_POLLING_TIME_SEC)
|
||||
job.refresh_log()
|
||||
print_log(f"Job {job.job_id} started.")
|
||||
@@ -324,7 +299,7 @@ def execute_job_with_retries(
|
||||
try:
|
||||
job_log["submitter_start_time"] = datetime.now().isoformat()
|
||||
submit_job(job)
|
||||
wait_for_job_get_started(job, attempt_no)
|
||||
wait_for_job_get_started(job)
|
||||
log_follower: LogFollower = bootstrap_log_follower()
|
||||
follow_job_execution(job, log_follower)
|
||||
return job
|
||||
@@ -343,8 +318,6 @@ def execute_job_with_retries(
|
||||
f"Finished executing LAVA job in the attempt #{attempt_no}"
|
||||
f"{CONSOLE_LOG['RESET']}"
|
||||
)
|
||||
if job.exception and not isinstance(job.exception, MesaCIRetriableException):
|
||||
break
|
||||
|
||||
return last_failed_job
|
||||
|
||||
@@ -388,7 +361,6 @@ class LAVAJobSubmitter(PathResolver):
|
||||
boot_method: str
|
||||
ci_project_dir: str
|
||||
device_type: str
|
||||
farm: str
|
||||
job_timeout_min: int # The job timeout in minutes
|
||||
build_url: str = None
|
||||
dtb_filename: str = None
|
||||
@@ -499,9 +471,8 @@ class LAVAJobSubmitter(PathResolver):
|
||||
if not last_attempt_job:
|
||||
# No job was run, something bad happened
|
||||
STRUCTURAL_LOG["job_combined_status"] = "script_crash"
|
||||
current_exception = str(sys.exc_info()[1])
|
||||
current_exception = str(sys.exc_info()[0])
|
||||
STRUCTURAL_LOG["job_combined_fail_reason"] = current_exception
|
||||
print(f"Interrupting the script. Reason: {current_exception}")
|
||||
raise SystemExit(1)
|
||||
|
||||
STRUCTURAL_LOG["job_combined_status"] = last_attempt_job.status
|
||||
@@ -517,7 +488,6 @@ class StructuredLoggerWrapper:
|
||||
def _init_logger(self):
|
||||
STRUCTURAL_LOG["fixed_tags"] = self.__submitter.lava_tags
|
||||
STRUCTURAL_LOG["dut_job_type"] = self.__submitter.device_type
|
||||
STRUCTURAL_LOG["farm"] = self.__submitter.farm
|
||||
STRUCTURAL_LOG["job_combined_fail_reason"] = None
|
||||
STRUCTURAL_LOG["job_combined_status"] = "not_submitted"
|
||||
STRUCTURAL_LOG["dut_attempt_counter"] = 0
|
||||
@@ -539,6 +509,7 @@ class StructuredLoggerWrapper:
|
||||
def logger_context(self):
|
||||
context = contextlib.nullcontext()
|
||||
try:
|
||||
|
||||
global STRUCTURAL_LOG
|
||||
STRUCTURAL_LOG = StructuredLogger(
|
||||
self.__submitter.structured_log_file, truncate=True
|
||||
|
@@ -23,10 +23,3 @@ KNOWN_ISSUE_R8152_PATTERNS: tuple[str, ...] = (
|
||||
# This is considered noise, since LAVA produces this log after receiving a package of feedback
|
||||
# messages.
|
||||
LOG_DEBUG_FEEDBACK_NOISE = "Listened to connection for namespace 'dut' done"
|
||||
|
||||
A6XX_GPU_RECOVERY_WATCH_PERIOD_MIN = 3
|
||||
A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT = 30
|
||||
A6XX_GPU_RECOVERY_FAILURE_MESSAGE = (
|
||||
"cx gdsc didn't collapse",
|
||||
"Timeout waiting for GMU OOB",
|
||||
)
|
||||
|
@@ -6,7 +6,6 @@ from typing import Any, Optional
|
||||
|
||||
from lava.exceptions import (
|
||||
MesaCIException,
|
||||
MesaCIRetriableException,
|
||||
MesaCIKnownIssueException,
|
||||
MesaCIParseException,
|
||||
MesaCITimeoutError,
|
||||
@@ -35,7 +34,7 @@ class LAVAJob:
|
||||
self._is_finished = False
|
||||
self.log: dict[str, Any] = log
|
||||
self.status = "not_submitted"
|
||||
self.__exception: Optional[Exception] = None
|
||||
self.__exception: Optional[str] = None
|
||||
|
||||
def heartbeat(self) -> None:
|
||||
self.last_log_time: datetime = datetime.now()
|
||||
@@ -64,13 +63,13 @@ class LAVAJob:
|
||||
return self._is_finished
|
||||
|
||||
@property
|
||||
def exception(self) -> Optional[Exception]:
|
||||
def exception(self) -> str:
|
||||
return self.__exception
|
||||
|
||||
@exception.setter
|
||||
def exception(self, exception: Exception) -> None:
|
||||
self.__exception = exception
|
||||
self.log["dut_job_fail_reason"] = repr(self.__exception)
|
||||
self.__exception = repr(exception)
|
||||
self.log["dut_job_fail_reason"] = self.__exception
|
||||
|
||||
def validate(self) -> Optional[dict]:
|
||||
"""Returns a dict with errors, if the validation fails.
|
||||
@@ -177,15 +176,11 @@ class LAVAJob:
|
||||
self.status = "canceled"
|
||||
elif isinstance(exception, MesaCITimeoutError):
|
||||
self.status = "hung"
|
||||
elif isinstance(exception, MesaCIRetriableException):
|
||||
elif isinstance(exception, MesaCIException):
|
||||
self.status = "failed"
|
||||
elif isinstance(exception, KeyboardInterrupt):
|
||||
self.status = "interrupted"
|
||||
print_log("LAVA job submitter was interrupted. Cancelling the job.")
|
||||
raise
|
||||
elif isinstance(exception, MesaCIException):
|
||||
self.status = "interrupted"
|
||||
print_log("LAVA job submitter was interrupted. Cancelling the job.")
|
||||
raise
|
||||
else:
|
||||
self.status = "job_submitter_error"
|
||||
|
@@ -15,8 +15,6 @@ from lava.utils.uart_job_definition import (
|
||||
fastboot_deploy_actions,
|
||||
tftp_boot_action,
|
||||
tftp_deploy_actions,
|
||||
qemu_boot_action,
|
||||
qemu_deploy_actions,
|
||||
uart_test_actions,
|
||||
)
|
||||
|
||||
@@ -34,10 +32,6 @@ class LAVAJobDefinition:
|
||||
|
||||
def __init__(self, job_submitter: "LAVAJobSubmitter") -> None:
|
||||
self.job_submitter: "LAVAJobSubmitter" = job_submitter
|
||||
# NFS args provided by LAVA
|
||||
self.lava_nfs_args: str = "root=/dev/nfs rw nfsroot=$NFS_SERVER_IP:$NFS_ROOTFS,tcp,hard,v3 ip=dhcp"
|
||||
# extra_nfsroot_args appends to cmdline
|
||||
self.extra_nfsroot_args: str = " init=/init rootwait usbcore.quirks=0bda:8153:k"
|
||||
|
||||
def has_ssh_support(self) -> bool:
|
||||
if FORCE_UART:
|
||||
@@ -61,11 +55,11 @@ class LAVAJobDefinition:
|
||||
actions for the LAVA job submission.
|
||||
"""
|
||||
args = self.job_submitter
|
||||
values = self.generate_metadata()
|
||||
nfsrootfs = {
|
||||
"url": f"{args.rootfs_url_prefix}/lava-rootfs.tar.zst",
|
||||
"compression": "zstd",
|
||||
}
|
||||
values = self.generate_metadata()
|
||||
|
||||
init_stage1_steps = self.init_stage1_steps()
|
||||
artifact_download_steps = self.artifact_download_steps()
|
||||
@@ -77,9 +71,6 @@ class LAVAJobDefinition:
|
||||
if args.boot_method == "fastboot":
|
||||
deploy_actions = fastboot_deploy_actions(self, nfsrootfs)
|
||||
boot_action = fastboot_boot_action(args)
|
||||
elif args.boot_method == "qemu-nfs":
|
||||
deploy_actions = qemu_deploy_actions(self, nfsrootfs)
|
||||
boot_action = qemu_boot_action(args)
|
||||
else: # tftp
|
||||
deploy_actions = tftp_deploy_actions(self, nfsrootfs)
|
||||
boot_action = tftp_boot_action(args)
|
||||
@@ -126,7 +117,7 @@ class LAVAJobDefinition:
|
||||
"device_type": self.job_submitter.device_type,
|
||||
"visibility": {"group": [self.job_submitter.visibility_group]},
|
||||
"priority": JOB_PRIORITY,
|
||||
"context": {"extra_nfsroot_args": self.extra_nfsroot_args},
|
||||
"context": {"extra_nfsroot_args": " init=/init rootwait usbcore.quirks=0bda:8153:k"},
|
||||
"timeouts": {
|
||||
"job": {"minutes": self.job_submitter.job_timeout_min},
|
||||
"actions": {
|
||||
@@ -151,10 +142,6 @@ class LAVAJobDefinition:
|
||||
if self.job_submitter.lava_tags:
|
||||
values["tags"] = self.job_submitter.lava_tags.split(",")
|
||||
|
||||
# QEMU lava jobs mandate proper arch value in the context
|
||||
if self.job_submitter.boot_method == "qemu-nfs":
|
||||
values["context"]["arch"] = self.job_submitter.mesa_job_name.split(":")[1]
|
||||
|
||||
return values
|
||||
|
||||
def attach_kernel_and_dtb(self, deploy_field):
|
||||
@@ -197,7 +184,7 @@ class LAVAJobDefinition:
|
||||
"set +x # HIDE_START",
|
||||
f'echo -n "{jwt_file.read()}" > "{self.job_submitter.jwt_file}"',
|
||||
"set -x # HIDE_END",
|
||||
f'echo "export S3_JWT_FILE={self.job_submitter.jwt_file}" >> /set-job-env-vars.sh',
|
||||
f'echo "export CI_JOB_JWT_FILE={self.job_submitter.jwt_file}" >> /set-job-env-vars.sh',
|
||||
]
|
||||
else:
|
||||
download_steps += [
|
||||
@@ -216,13 +203,7 @@ class LAVAJobDefinition:
|
||||
# - exec .gitlab-ci/common/init-stage2.sh
|
||||
|
||||
with open(self.job_submitter.first_stage_init, "r") as init_sh:
|
||||
# For vmware farm, patch nameserver as 8.8.8.8 is off limit.
|
||||
# This is temporary and will be reverted once the farm is moved.
|
||||
if self.job_submitter.mesa_job_name.startswith("vmware-"):
|
||||
run_steps += [x.rstrip().replace("nameserver 8.8.8.8", "nameserver 10.25.198.110") for x in init_sh if not x.startswith("#") and x.rstrip()]
|
||||
else:
|
||||
run_steps += [x.rstrip() for x in init_sh if not x.startswith("#") and x.rstrip()]
|
||||
|
||||
run_steps += [x.rstrip() for x in init_sh if not x.startswith("#") and x.rstrip()]
|
||||
# We cannot distribute the Adreno 660 shader firmware inside rootfs,
|
||||
# since the license isn't bundled inside the repository
|
||||
if self.job_submitter.device_type == "sm8350-hdk":
|
||||
|
@@ -1,9 +1,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from datetime import datetime, timedelta
|
||||
from dataclasses import dataclass, field
|
||||
from typing import TYPE_CHECKING, Any, Optional, Sequence
|
||||
from typing import TYPE_CHECKING, Any, Sequence
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from lava.utils import LogFollower
|
||||
@@ -14,9 +13,6 @@ from lava.utils.constants import (
|
||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER,
|
||||
LOG_DEBUG_FEEDBACK_NOISE,
|
||||
KNOWN_ISSUE_R8152_PATTERNS,
|
||||
A6XX_GPU_RECOVERY_WATCH_PERIOD_MIN,
|
||||
A6XX_GPU_RECOVERY_FAILURE_MESSAGE,
|
||||
A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT,
|
||||
)
|
||||
from lava.utils.log_section import LogSectionType
|
||||
|
||||
@@ -33,8 +29,6 @@ class LAVALogHints:
|
||||
log_follower: LogFollower
|
||||
r8152_issue_consecutive_counter: int = field(default=0, init=False)
|
||||
reboot_counter: int = field(default=0, init=False)
|
||||
a6xx_gpu_recovery_fail_counter: int = field(default=0, init=False)
|
||||
a6xx_gpu_first_fail_time: Optional[datetime] = field(default=None, init=False)
|
||||
|
||||
def raise_known_issue(self, message) -> None:
|
||||
raise MesaCIKnownIssueException(
|
||||
@@ -50,7 +44,6 @@ class LAVALogHints:
|
||||
continue
|
||||
self.detect_r8152_issue(line)
|
||||
self.detect_forced_reboot(line)
|
||||
self.detect_a6xx_gpu_recovery_failure(line)
|
||||
|
||||
def detect_r8152_issue(self, line):
|
||||
if self.log_follower.phase in (
|
||||
@@ -84,23 +77,3 @@ class LAVALogHints:
|
||||
self.raise_known_issue(
|
||||
"Forced reboot detected during test phase, failing the job..."
|
||||
)
|
||||
|
||||
# If the a6xx gpu repeatedly fails to recover over a short period of time,
|
||||
# then successful recovery is unlikely so cancel the job preemptively.
|
||||
def detect_a6xx_gpu_recovery_failure(self, line: dict[str, Any]) -> None:
|
||||
if search_known_issue_patterns(A6XX_GPU_RECOVERY_FAILURE_MESSAGE, line["msg"]):
|
||||
time_of_failure = datetime.fromisoformat(line["dt"])
|
||||
self.a6xx_gpu_recovery_fail_counter += 1
|
||||
|
||||
if self.a6xx_gpu_first_fail_time is None:
|
||||
self.a6xx_gpu_first_fail_time = time_of_failure
|
||||
|
||||
if self.a6xx_gpu_recovery_fail_counter == A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT:
|
||||
time_since_first_fail = time_of_failure - self.a6xx_gpu_first_fail_time
|
||||
if time_since_first_fail <= timedelta(minutes=A6XX_GPU_RECOVERY_WATCH_PERIOD_MIN):
|
||||
self.raise_known_issue(
|
||||
"Repeated GPU recovery failure detected: cancelling the job"
|
||||
)
|
||||
else:
|
||||
self.a6xx_gpu_first_fail_time = None
|
||||
self.a6xx_gpu_recovery_fail_counter = 0
|
||||
|
@@ -18,7 +18,6 @@ def fastboot_deploy_actions(
|
||||
job_definition: "LAVAJobDefinition", nfsrootfs
|
||||
) -> tuple[dict[str, Any], ...]:
|
||||
args = job_definition.job_submitter
|
||||
cmdline = f"{job_definition.lava_nfs_args}{job_definition.extra_nfsroot_args}"
|
||||
fastboot_deploy_nfs = {
|
||||
"timeout": {"minutes": 10},
|
||||
"to": "nfs",
|
||||
@@ -40,7 +39,7 @@ def fastboot_deploy_actions(
|
||||
"steps": [
|
||||
f"cat Image.gz {args.dtb_filename}.dtb > Image.gz+dtb",
|
||||
"mkbootimg --kernel Image.gz+dtb"
|
||||
+ f' --cmdline "{cmdline}"'
|
||||
+ ' --cmdline "root=/dev/nfs rw nfsroot=$NFS_SERVER_IP:$NFS_ROOTFS,tcp,hard rootwait ip=dhcp init=/init"'
|
||||
+ " --pagesize 4096 --base 0x80000000 -o boot.img",
|
||||
],
|
||||
}
|
||||
@@ -83,24 +82,6 @@ def tftp_deploy_actions(job_definition: "LAVAJobDefinition", nfsrootfs) -> tuple
|
||||
return (tftp_deploy,)
|
||||
|
||||
|
||||
def qemu_deploy_actions(job_definition: "LAVAJobDefinition", nfsrootfs) -> tuple[dict[str, Any]]:
|
||||
args = job_definition.job_submitter
|
||||
qemu_deploy = {
|
||||
"timeout": {"minutes": 5},
|
||||
"to": "nfs",
|
||||
"images": {
|
||||
"kernel": {
|
||||
"image_arg": "-kernel {kernel}",
|
||||
"url": f"{args.kernel_url_prefix}/{args.kernel_image_name}",
|
||||
},
|
||||
"nfsrootfs": nfsrootfs,
|
||||
},
|
||||
}
|
||||
job_definition.attach_external_modules(qemu_deploy)
|
||||
|
||||
return (qemu_deploy,)
|
||||
|
||||
|
||||
def uart_test_actions(
|
||||
args: "LAVAJobSubmitter", init_stage1_steps: list[str], artifact_download_steps: list[str]
|
||||
) -> tuple[dict[str, Any]]:
|
||||
@@ -159,16 +140,6 @@ def tftp_boot_action(args: "LAVAJobSubmitter") -> dict[str, Any]:
|
||||
return tftp_boot
|
||||
|
||||
|
||||
def qemu_boot_action(args: "LAVAJobSubmitter") -> dict[str, Any]:
|
||||
qemu_boot = {
|
||||
"failure_retry": NUMBER_OF_ATTEMPTS_LAVA_BOOT,
|
||||
"method": args.boot_method,
|
||||
"prompts": ["lava-shell:"],
|
||||
}
|
||||
|
||||
return qemu_boot
|
||||
|
||||
|
||||
def fastboot_boot_action(args: "LAVAJobSubmitter") -> dict[str, Any]:
|
||||
fastboot_boot = {
|
||||
"timeout": {"minutes": 2},
|
||||
|
@@ -104,7 +104,7 @@ rm -rf _build
|
||||
meson setup _build \
|
||||
--native-file=native.file \
|
||||
--wrap-mode=nofallback \
|
||||
--force-fallback-for perfetto,syn,paste,pest,pest_derive,pest_generator,pest_meta,roxmltree,indexmap \
|
||||
--force-fallback-for perfetto,syn \
|
||||
${CROSS+--cross "$CROSS_FILE"} \
|
||||
-D prefix=$PWD/install \
|
||||
-D libdir=lib \
|
||||
|
@@ -13,8 +13,7 @@ INSTALL="$PWD/install"
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
||||
export EGL_PLATFORM=surfaceless
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.${VK_CPU:-$(uname -m)}.json"
|
||||
|
||||
RESULTS=$PWD/${PIGLIT_RESULTS_DIR:-results}
|
||||
mkdir -p $RESULTS
|
||||
|
@@ -8,7 +8,7 @@ set -ex
|
||||
export PAGER=cat # FIXME: export everywhere
|
||||
|
||||
INSTALL=$(realpath -s "$PWD"/install)
|
||||
S3_ARGS="--token-file ${S3_JWT_FILE}"
|
||||
S3_ARGS="--token-file ${CI_JOB_JWT_FILE}"
|
||||
|
||||
RESULTS=$(realpath -s "$PWD"/results)
|
||||
mkdir -p "$RESULTS"
|
||||
@@ -54,8 +54,7 @@ if [ -n "${VK_DRIVER}" ]; then
|
||||
export DXVK_LOG="$RESULTS/dxvk"
|
||||
[ -d "$DXVK_LOG" ] || mkdir -pv "$DXVK_LOG"
|
||||
export DXVK_STATE_CACHE=0
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.${VK_CPU:-$(uname -m)}.json"
|
||||
fi
|
||||
|
||||
# Sanity check to ensure that our environment is sufficient to make our tests
|
||||
@@ -118,7 +117,8 @@ else
|
||||
mkdir -p /tmp/.X11-unix
|
||||
|
||||
env \
|
||||
weston -Bheadless-backend.so --use-gl -Swayland-0 --xwayland --idle-time=0 &
|
||||
VK_ICD_FILENAMES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$(uname -m).json" \
|
||||
weston -Bheadless-backend.so --use-gl -Swayland-0 --xwayland --idle-time=0 &
|
||||
|
||||
while [ ! -S "$WESTON_X11_SOCK" ]; do sleep 1; done
|
||||
}
|
||||
@@ -189,15 +189,6 @@ RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $SANITY_MESA_VERSION_CMD &&
|
||||
# run.
|
||||
rm -rf replayer-db
|
||||
|
||||
# ANGLE: download compiled ANGLE runtime and the compiled restricted traces (all-in-one package)
|
||||
if [ -n "$PIGLIT_REPLAY_ANGLE_TAG" ]; then
|
||||
ARCH="amd64"
|
||||
FILE="angle-bin-${ARCH}-${PIGLIT_REPLAY_ANGLE_TAG}.tar.zst"
|
||||
ci-fairy s3cp $S3_ARGS "https://s3.freedesktop.org/mesa-tracie-private/${FILE}" "${FILE}"
|
||||
mkdir -p replayer-db/angle
|
||||
tar --zstd -xf ${FILE} -C replayer-db/angle/
|
||||
fi
|
||||
|
||||
if ! eval $RUN_CMD;
|
||||
then
|
||||
printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
|
||||
|
@@ -38,6 +38,7 @@ cp -Rp .gitlab-ci/fossilize-runner.sh install/
|
||||
cp -Rp .gitlab-ci/crosvm-init.sh install/
|
||||
cp -Rp .gitlab-ci/*.txt install/
|
||||
cp -Rp .gitlab-ci/report-flakes.py install/
|
||||
cp -Rp .gitlab-ci/valve install/
|
||||
cp -Rp .gitlab-ci/vkd3d-proton install/
|
||||
cp -Rp .gitlab-ci/setup-test-env.sh install/
|
||||
cp -Rp .gitlab-ci/*-runner.sh install/
|
||||
@@ -60,7 +61,7 @@ if [ -n "$S3_ARTIFACT_NAME" ]; then
|
||||
# Pass needed files to the test stage
|
||||
S3_ARTIFACT_NAME="$S3_ARTIFACT_NAME.tar.zst"
|
||||
zstd artifacts/install.tar -o ${S3_ARTIFACT_NAME}
|
||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}
|
||||
ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}
|
||||
fi
|
||||
|
||||
section_end prepare-artifacts
|
||||
|
@@ -10,7 +10,7 @@ export LD_LIBRARY_PATH=$LIBDIR
|
||||
|
||||
cd /usr/local/shader-db
|
||||
|
||||
for driver in freedreno intel lima v3d vc4; do
|
||||
for driver in freedreno intel v3d vc4; do
|
||||
section_start shader-db-${driver} "Running shader-db for $driver"
|
||||
env LD_PRELOAD="$LIBDIR/lib${driver}_noop_drm_shim.so" \
|
||||
./run -j"${FDO_CI_CONCURRENT:-4}" ./shaders \
|
||||
@@ -19,14 +19,14 @@ for driver in freedreno intel lima v3d vc4; do
|
||||
done
|
||||
|
||||
# Run shader-db over a number of supported chipsets for nouveau
|
||||
for chipset in 40 a3 c0 e4 f0 134 162; do
|
||||
section_start shader-db-nouveau-${chipset} "Running shader-db for nouveau - ${chipset}"
|
||||
env LD_PRELOAD="$LIBDIR/libnouveau_noop_drm_shim.so" \
|
||||
NOUVEAU_CHIPSET=${chipset} \
|
||||
./run -j"${FDO_CI_CONCURRENT:-4}" ./shaders \
|
||||
> "$ARTIFACTSDIR/nouveau-${chipset}-shader-db.txt"
|
||||
section_end shader-db-nouveau-${chipset}
|
||||
done
|
||||
#for chipset in 40 a3 c0 e4 f0 134 162; do
|
||||
# section_start shader-db-nouveau-${chipset} "Running shader-db for nouveau - ${chipset}"
|
||||
# env LD_PRELOAD="$LIBDIR/libnouveau_noop_drm_shim.so" \
|
||||
# NOUVEAU_CHIPSET=${chipset} \
|
||||
# ./run -j"${FDO_CI_CONCURRENT:-4}" ./shaders \
|
||||
# > "$ARTIFACTSDIR/nouveau-${chipset}-shader-db.txt"
|
||||
# section_end shader-db-nouveau-${chipset}
|
||||
#done
|
||||
|
||||
# Run shader-db for r300 (RV370 and RV515)
|
||||
for chipset in 0x5460 0x7140; do
|
||||
|
@@ -14,14 +14,6 @@ function x_off {
|
||||
|
||||
# TODO: implement x_on !
|
||||
|
||||
export JOB_START_S=$(date -u +"%s" -d "${CI_JOB_STARTED_AT:?}")
|
||||
|
||||
function get_current_minsec {
|
||||
DATE_S=$(date -u +"%s")
|
||||
CURR_TIME=$((DATE_S-JOB_START_S))
|
||||
printf "%02d:%02d" $((CURR_TIME/60)) $((CURR_TIME%60))
|
||||
}
|
||||
|
||||
function error {
|
||||
x_off 2>/dev/null
|
||||
RED="\e[0;31m"
|
||||
@@ -29,7 +21,10 @@ function error {
|
||||
# we force the following to be not in a section
|
||||
section_end $CURRENT_SECTION
|
||||
|
||||
CURR_MINSEC=$(get_current_minsec)
|
||||
DATE_S=$(date -u +"%s")
|
||||
JOB_START_S=$(date -u +"%s" -d "${CI_JOB_STARTED_AT:?}")
|
||||
CURR_TIME=$((DATE_S-JOB_START_S))
|
||||
CURR_MINSEC="$(printf "%02d" $((CURR_TIME/60))):$(printf "%02d" $((CURR_TIME%60)))"
|
||||
echo -e "\n${RED}[${CURR_MINSEC}] ERROR: $*${ENDCOLOR}\n"
|
||||
[ "$state_x" -eq 0 ] || set -x
|
||||
}
|
||||
@@ -47,7 +42,10 @@ function build_section_start {
|
||||
CYAN="\e[0;36m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
CURR_MINSEC=$(get_current_minsec)
|
||||
DATE_S=$(date -u +"%s")
|
||||
JOB_START_S=$(date -u +"%s" -d "${CI_JOB_STARTED_AT:?}")
|
||||
CURR_TIME=$((DATE_S-JOB_START_S))
|
||||
CURR_MINSEC="$(printf "%02d" $((CURR_TIME/60))):$(printf "%02d" $((CURR_TIME%60)))"
|
||||
echo -e "\n\e[0Ksection_start:$(date +%s):$section_name$section_params\r\e[0K${CYAN}[${CURR_MINSEC}] $*${ENDCOLOR}\n"
|
||||
}
|
||||
|
||||
@@ -89,7 +87,6 @@ function uncollapsed_section_switch {
|
||||
}
|
||||
|
||||
export -f x_off
|
||||
export -f get_current_minsec
|
||||
export -f error
|
||||
export -f trap_err
|
||||
export -f build_section_start
|
||||
|
@@ -6,11 +6,6 @@
|
||||
rules:
|
||||
- if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
|
||||
when: on_success
|
||||
|
||||
# Override of the `default: retry:` settings, which automatically retries jobs
|
||||
# if one of the tests result didn't match its expectation; this override
|
||||
# disables that, but keeps the auto-retry for infrastructure failures.
|
||||
.no-auto-retry:
|
||||
retry:
|
||||
max: 1
|
||||
# Don't retry on script_failure, job_execution_timeout, runner_unsupported,
|
||||
@@ -40,7 +35,7 @@
|
||||
.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|llanderwelin|zmike|vigneshraman)$/") &&
|
||||
- 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
|
||||
|
||||
@@ -72,7 +67,7 @@
|
||||
|
||||
# Same core dependencies for doing manual runs.
|
||||
.core-manual-rules:
|
||||
extends: .no-auto-retry
|
||||
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
|
||||
@@ -130,7 +125,7 @@
|
||||
extends:
|
||||
- .piglit-performance-base
|
||||
needs:
|
||||
- debian/baremetal_arm64_test
|
||||
- debian/arm64_test
|
||||
- debian-arm64-release
|
||||
|
||||
.piglit-performance:x86_64:
|
||||
@@ -179,7 +174,7 @@
|
||||
- !reference [.gallium-core-rules, rules]
|
||||
|
||||
.gl-manual-rules:
|
||||
extends: .no-auto-retry
|
||||
retry: !reference [.scheduled_pipeline-rules, retry]
|
||||
rules:
|
||||
- !reference [.core-manual-rules, rules]
|
||||
- changes:
|
||||
@@ -198,7 +193,7 @@
|
||||
when: on_success
|
||||
|
||||
.vulkan-manual-rules:
|
||||
extends: .no-auto-retry
|
||||
retry: !reference [.scheduled_pipeline-rules, retry]
|
||||
rules:
|
||||
- !reference [.core-manual-rules, rules]
|
||||
- changes:
|
||||
@@ -232,10 +227,7 @@
|
||||
.lint-rustfmt-rules:
|
||||
rules:
|
||||
- !reference [.never-post-merge-rules, rules]
|
||||
- !reference [.no_scheduled_pipelines-rules, rules]
|
||||
- changes:
|
||||
- .gitlab-ci.yml
|
||||
- .gitlab-ci/**/*
|
||||
- !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
|
||||
@@ -246,13 +238,3 @@
|
||||
- changes: *rust_file_list
|
||||
when: on_success
|
||||
allow_failure: true
|
||||
|
||||
# Rules for .mr-label-maker.yml
|
||||
.mr-label-maker-rules:
|
||||
rules:
|
||||
- !reference [.never-post-merge-rules, rules]
|
||||
- !reference [.no_scheduled_pipelines-rules, rules]
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
changes:
|
||||
- .mr-label-maker.yml
|
||||
when: on_success
|
||||
|
@@ -43,7 +43,7 @@ rustfmt:
|
||||
- rustfmt --verbose src/**/lib.rs
|
||||
- rustfmt --verbose src/**/main.rs
|
||||
|
||||
python-test:
|
||||
.test-check:
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
stage: code-validation
|
||||
@@ -52,6 +52,10 @@ python-test:
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
timeout: 10m
|
||||
|
||||
python-test:
|
||||
extends:
|
||||
- .test-check
|
||||
script:
|
||||
- cd bin/ci
|
||||
- pip install --break-system-packages -r test/requirements.txt
|
||||
@@ -59,18 +63,8 @@ python-test:
|
||||
rules:
|
||||
- !reference [.disable-farm-mr-rules, rules]
|
||||
- !reference [.never-post-merge-rules, rules]
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
when: on_success
|
||||
- if: $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot"
|
||||
when: on_success
|
||||
- if: $GITLAB_USER_LOGIN == "marge-bot"
|
||||
changes: &bin_ci_files
|
||||
- .gitlab-ci.yml
|
||||
- .gitlab-ci/**/*
|
||||
- changes:
|
||||
- bin/ci/**/*
|
||||
when: on_success
|
||||
- changes: *bin_ci_files
|
||||
when: manual
|
||||
|
||||
.test-gl:
|
||||
extends:
|
||||
@@ -123,11 +117,31 @@ python-test:
|
||||
paths:
|
||||
- results/
|
||||
|
||||
.b2c-vkd3d-proton-test:
|
||||
.vkd3d-proton-test:
|
||||
artifacts:
|
||||
when: on_failure
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results/vkd3d-proton.log
|
||||
script:
|
||||
- ./install/vkd3d-proton/run.sh
|
||||
|
||||
.piglit-test:
|
||||
artifacts:
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
variables:
|
||||
HWCI_TEST_SCRIPT: ./install/vkd3d-proton/run.sh
|
||||
PIGLIT_NO_WINDOW: 1
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh"
|
||||
script:
|
||||
- install/piglit/piglit-runner.sh
|
||||
|
||||
.piglit-traces-test:
|
||||
extends:
|
||||
- .piglit-test
|
||||
artifacts:
|
||||
when: on_failure
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
@@ -138,11 +152,9 @@ python-test:
|
||||
exclude:
|
||||
- results/*.shader_cache
|
||||
variables:
|
||||
PIGLIT_REPLAY_EXTRA_ARGS: --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_bucket=mesa-tracie-public --jwt-file=${CI_JOB_JWT_FILE}
|
||||
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
||||
DEVICE_HANGING_TIMEOUT_SEC: 600
|
||||
PIGLIT_REPLAY_EXTRA_ARGS: --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_bucket=${S3_TRACIE_PUBLIC_BUCKET} --jwt-file=${S3_JWT_FILE}
|
||||
PIGLIT_NO_WINDOW: 1
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh"
|
||||
script:
|
||||
- section_start variables "Variables passed through:"
|
||||
- install/common/generate-env.sh
|
||||
@@ -168,7 +180,11 @@ python-test:
|
||||
paths:
|
||||
- results/
|
||||
|
||||
.download_s3:
|
||||
.baremetal-test:
|
||||
extends:
|
||||
- .test
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
before_script:
|
||||
- !reference [default, before_script]
|
||||
# Use this instead of gitlab's artifacts download because it hits packet.net
|
||||
@@ -180,14 +196,6 @@ python-test:
|
||||
- rm -rf install
|
||||
- (set -x; curl -L --retry 4 -f --retry-all-errors --retry-delay 60 ${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}.tar.zst | tar --zstd -x)
|
||||
- section_end artifacts_download
|
||||
|
||||
.baremetal-test:
|
||||
extends:
|
||||
- .test
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
before_script:
|
||||
- !reference [.download_s3, before_script]
|
||||
variables:
|
||||
BM_ROOTFS: /rootfs-${DEBIAN_ARCH}
|
||||
artifacts:
|
||||
@@ -205,12 +213,12 @@ python-test:
|
||||
.baremetal-test-arm32:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
- .use-debian/baremetal_arm32_test
|
||||
- .use-debian/arm32_test
|
||||
variables:
|
||||
DEBIAN_ARCH: armhf
|
||||
S3_ARTIFACT_NAME: mesa-arm32-default-debugoptimized
|
||||
needs:
|
||||
- debian/baremetal_arm32_test
|
||||
- debian/arm32_test
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
@@ -219,12 +227,12 @@ python-test:
|
||||
.baremetal-test-arm64:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
- .use-debian/baremetal_arm64_test
|
||||
- .use-debian/arm64_test
|
||||
variables:
|
||||
DEBIAN_ARCH: arm64
|
||||
S3_ARTIFACT_NAME: mesa-arm64-default-debugoptimized
|
||||
needs:
|
||||
- debian/baremetal_arm64_test
|
||||
- debian/arm64_test
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
@@ -233,12 +241,12 @@ python-test:
|
||||
.baremetal-arm32-asan-test:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
- .use-debian/baremetal_arm32_test
|
||||
- .use-debian/arm32_test
|
||||
variables:
|
||||
DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.8:/install/lib/libdlclose-skip.so"
|
||||
S3_ARTIFACT_NAME: mesa-arm32-asan-debugoptimized
|
||||
needs:
|
||||
- debian/baremetal_arm32_test
|
||||
- debian/arm32_test
|
||||
- job: debian-arm32-asan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
@@ -246,12 +254,12 @@ python-test:
|
||||
.baremetal-arm64-asan-test:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
- .use-debian/baremetal_arm64_test
|
||||
- .use-debian/arm64_test
|
||||
variables:
|
||||
DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.8:/install/lib/libdlclose-skip.so"
|
||||
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
||||
needs:
|
||||
- debian/baremetal_arm64_test
|
||||
- debian/arm64_test
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
@@ -275,24 +283,28 @@ python-test:
|
||||
# built as part of the CI in the boot2container project.
|
||||
image: registry.freedesktop.org/gfx-ci/ci-tron/mesa-trigger:2024-01-05.1
|
||||
timeout: 1h 40m
|
||||
rules:
|
||||
- if: $FORCE_KERNEL_TAG != null
|
||||
when: never
|
||||
variables:
|
||||
# No need by default to pull the whole repo
|
||||
GIT_STRATEGY: none
|
||||
# boot2container initrd configuration parameters.
|
||||
B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/gfx-ci/ci-tron/-/package_files/519/download' # Linux 6.1
|
||||
B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/mupuf/boot2container/-/releases/v0.9.10/downloads/initramfs.linux_amd64.cpio.xz'
|
||||
B2C_JOB_SUCCESS_REGEX: 'hwci: mesa: pass\r$'
|
||||
B2C_JOB_SUCCESS_REGEX: '\[.*\]: Execution is over, pipeline status: 0\r$'
|
||||
B2C_JOB_WARN_REGEX: '\*ERROR\* ring .* timeout'
|
||||
B2C_LOG_LEVEL: 6
|
||||
B2C_POWEROFF_DELAY: 15
|
||||
B2C_SESSION_END_REGEX: '^.*It''s now safe to turn off your computer\r$'
|
||||
B2C_SESSION_REBOOT_REGEX: ''
|
||||
B2C_TIMEOUT_BOOT_MINUTES: 45
|
||||
B2C_TIMEOUT_BOOT_RETRIES: 0
|
||||
B2C_TIMEOUT_FIRST_CONSOLE_ACTIVITY_MINUTES: 2
|
||||
B2C_TIMEOUT_FIRST_CONSOLE_ACTIVITY_RETRIES: 3
|
||||
B2C_TIMEOUT_CONSOLE_ACTIVITY_MINUTES: 5
|
||||
B2C_TIMEOUT_FIRST_MINUTES: 2
|
||||
B2C_TIMEOUT_FIRST_RETRIES: 3
|
||||
B2C_TIMEOUT_MINUTES: 5
|
||||
B2C_TIMEOUT_OVERALL_MINUTES: 90
|
||||
B2C_TIMEOUT_CONSOLE_ACTIVITY_RETRIES: 0
|
||||
B2C_TIMEOUT_RETRIES: 0
|
||||
B2C_JOB_VOLUME_EXCLUSIONS: "*.shader_cache,install/*,*/install/*,*/vkd3d-proton.cache*,vkd3d-proton.cache*,*.qpa"
|
||||
|
||||
# As noted in the top description, we make a distinction between the
|
||||
@@ -385,7 +397,7 @@ python-test:
|
||||
reports:
|
||||
junit: results/**/junit.xml
|
||||
|
||||
.b2c-x86_64-test-vk:
|
||||
.b2c-test-vk:
|
||||
extends:
|
||||
- .use-debian/x86_64_test-vk
|
||||
- .b2c-test
|
||||
@@ -394,7 +406,7 @@ python-test:
|
||||
- debian-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-x86_64-test-gl:
|
||||
.b2c-test-gl:
|
||||
extends:
|
||||
- .use-debian/x86_64_test-gl
|
||||
- .b2c-test
|
||||
@@ -402,21 +414,3 @@ python-test:
|
||||
- debian/x86_64_test-gl
|
||||
- debian-testing
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-arm64-test-vk:
|
||||
extends:
|
||||
- .use-debian/arm64_test-vk
|
||||
- .b2c-test
|
||||
needs:
|
||||
- debian/arm64_test-vk
|
||||
- debian-arm64
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.b2c-arm64-test-gl:
|
||||
extends:
|
||||
- .use-debian/arm64_test-gl
|
||||
- .b2c-test
|
||||
needs:
|
||||
- debian/arm64_test-gl
|
||||
- debian-arm64
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
@@ -15,7 +15,7 @@ from typing import Generator
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from lava.exceptions import MesaCIException, MesaCIRetryError, MesaCIFatalException
|
||||
from lava.exceptions import MesaCIException, MesaCIRetryError
|
||||
from lava.lava_job_submitter import (
|
||||
DEVICE_HANGING_TIMEOUT_SEC,
|
||||
NUMBER_OF_RETRIES_TIMEOUT_DETECTION,
|
||||
@@ -24,7 +24,6 @@ from lava.lava_job_submitter import (
|
||||
bootstrap_log_follower,
|
||||
follow_job_execution,
|
||||
retriable_follow_job,
|
||||
wait_for_job_get_started,
|
||||
)
|
||||
from lava.utils import LogSectionType
|
||||
|
||||
@@ -84,7 +83,7 @@ def lava_job_submitter(
|
||||
def test_submit_and_follow_respects_exceptions(mock_sleep, mock_proxy, exception):
|
||||
with pytest.raises(MesaCIException):
|
||||
proxy = mock_proxy(side_effect=exception)
|
||||
job = LAVAJob(proxy, "")
|
||||
job = LAVAJob(proxy, '')
|
||||
log_follower = bootstrap_log_follower()
|
||||
follow_job_execution(job, log_follower)
|
||||
|
||||
@@ -166,13 +165,21 @@ PROXY_SCENARIOS = {
|
||||
mock_logs(result="pass"),
|
||||
does_not_raise(),
|
||||
"pass",
|
||||
{"testsuite_results": [generate_testsuite_result(result="pass")]},
|
||||
{
|
||||
"testsuite_results": [
|
||||
generate_testsuite_result(result="pass")
|
||||
]
|
||||
},
|
||||
),
|
||||
"no retries, but testsuite fails": (
|
||||
mock_logs(result="fail"),
|
||||
does_not_raise(),
|
||||
"fail",
|
||||
{"testsuite_results": [generate_testsuite_result(result="fail")]},
|
||||
{
|
||||
"testsuite_results": [
|
||||
generate_testsuite_result(result="fail")
|
||||
]
|
||||
},
|
||||
),
|
||||
"no retries, one testsuite fails": (
|
||||
generate_n_logs(n=1, tick_fn=0, result="fail"),
|
||||
@@ -181,7 +188,7 @@ PROXY_SCENARIOS = {
|
||||
{
|
||||
"testsuite_results": [
|
||||
generate_testsuite_result(result="fail"),
|
||||
generate_testsuite_result(result="pass"),
|
||||
generate_testsuite_result(result="pass")
|
||||
]
|
||||
},
|
||||
),
|
||||
@@ -258,27 +265,6 @@ def test_simulate_a_long_wait_to_start_a_job(
|
||||
assert delta_time.total_seconds() >= wait_time
|
||||
|
||||
|
||||
LONG_LAVA_QUEUE_SCENARIOS = {
|
||||
"no_time_to_run": (0, pytest.raises(MesaCIFatalException)),
|
||||
"enough_time_to_run": (9999999999, does_not_raise()),
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"job_timeout, expectation",
|
||||
LONG_LAVA_QUEUE_SCENARIOS.values(),
|
||||
ids=LONG_LAVA_QUEUE_SCENARIOS.keys(),
|
||||
)
|
||||
def test_wait_for_job_get_started_no_time_to_run(monkeypatch, job_timeout, expectation):
|
||||
monkeypatch.setattr("lava.lava_job_submitter.CI_JOB_TIMEOUT_SEC", job_timeout)
|
||||
job = MagicMock()
|
||||
# Make it escape the loop
|
||||
job.is_started.side_effect = (False, False, True)
|
||||
with expectation as e:
|
||||
wait_for_job_get_started(job, 1)
|
||||
if e:
|
||||
job.cancel.assert_called_with()
|
||||
|
||||
|
||||
CORRUPTED_LOG_SCENARIOS = {
|
||||
"too much subsequent corrupted data": (
|
||||
@@ -452,7 +438,9 @@ def test_job_combined_status(
|
||||
"lava.lava_job_submitter.retriable_follow_job"
|
||||
) as mock_retriable_follow_job, patch(
|
||||
"lava.lava_job_submitter.LAVAJobSubmitter._LAVAJobSubmitter__prepare_submission"
|
||||
) as mock_prepare_submission, patch("sys.exit"):
|
||||
) as mock_prepare_submission, patch(
|
||||
"sys.exit"
|
||||
):
|
||||
from lava.lava_job_submitter import STRUCTURAL_LOG
|
||||
|
||||
mock_retriable_follow_job.return_value = MagicMock(status=finished_job_status)
|
||||
|
@@ -16,13 +16,7 @@ from lava.utils import (
|
||||
fix_lava_gitlab_section_log,
|
||||
hide_sensitive_data,
|
||||
)
|
||||
from lava.utils.constants import (
|
||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER,
|
||||
A6XX_GPU_RECOVERY_WATCH_PERIOD_MIN,
|
||||
A6XX_GPU_RECOVERY_FAILURE_MESSAGE,
|
||||
A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT,
|
||||
)
|
||||
from lava.utils.lava_log_hints import LAVALogHints
|
||||
from lava.utils.constants import KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER
|
||||
|
||||
from ..lava.helpers import (
|
||||
create_lava_yaml_msg,
|
||||
@@ -396,44 +390,3 @@ def test_detect_failure(messages, expectation):
|
||||
lf = LogFollower(starting_section=boot_section)
|
||||
with expectation:
|
||||
lf.feed(messages)
|
||||
|
||||
def test_detect_a6xx_gpu_recovery_failure(frozen_time):
|
||||
log_follower = LogFollower()
|
||||
lava_log_hints = LAVALogHints(log_follower=log_follower)
|
||||
failure_message = {
|
||||
"dt": datetime.now().isoformat(),
|
||||
"msg": A6XX_GPU_RECOVERY_FAILURE_MESSAGE[0],
|
||||
"lvl": "feedback",
|
||||
}
|
||||
with pytest.raises(MesaCIKnownIssueException):
|
||||
for _ in range(A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT):
|
||||
lava_log_hints.detect_a6xx_gpu_recovery_failure(failure_message)
|
||||
# Simulate the passage of time within the watch period
|
||||
frozen_time.tick(1)
|
||||
failure_message["dt"] = datetime.now().isoformat()
|
||||
|
||||
def test_detect_a6xx_gpu_recovery_success(frozen_time):
|
||||
log_follower = LogFollower()
|
||||
lava_log_hints = LAVALogHints(log_follower=log_follower)
|
||||
failure_message = {
|
||||
"dt": datetime.now().isoformat(),
|
||||
"msg": A6XX_GPU_RECOVERY_FAILURE_MESSAGE[0],
|
||||
"lvl": "feedback",
|
||||
}
|
||||
# Simulate sending a tolerable number of failure messages
|
||||
for _ in range(A6XX_GPU_RECOVERY_FAILURE_MAX_COUNT - 1):
|
||||
lava_log_hints.detect_a6xx_gpu_recovery_failure(failure_message)
|
||||
frozen_time.tick(1)
|
||||
failure_message["dt"] = datetime.now().isoformat()
|
||||
|
||||
# Simulate the passage of time outside of the watch period
|
||||
frozen_time.tick(60 * A6XX_GPU_RECOVERY_WATCH_PERIOD_MIN + 1)
|
||||
failure_message = {
|
||||
"dt": datetime.now().isoformat(),
|
||||
"msg": A6XX_GPU_RECOVERY_FAILURE_MESSAGE[1],
|
||||
"lvl": "feedback",
|
||||
}
|
||||
with does_not_raise():
|
||||
lava_log_hints.detect_a6xx_gpu_recovery_failure(failure_message)
|
||||
assert lava_log_hints.a6xx_gpu_first_fail_time is None, "a6xx_gpu_first_fail_time is not None"
|
||||
assert lava_log_hints.a6xx_gpu_recovery_fail_counter == 0, "a6xx_gpu_recovery_fail_counter is not 0"
|
||||
|
87
.gitlab-ci/valve/traces-runner.sh
Executable file
87
.gitlab-ci/valve/traces-runner.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ -z "$VK_DRIVER" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Useful debug output, you rarely know what envirnoment you'll be
|
||||
# running in within container-land, this can be a landmark.
|
||||
ls -l
|
||||
|
||||
INSTALL=$(realpath -s "$PWD"/install)
|
||||
RESULTS=$(realpath -s "$PWD"/results)
|
||||
|
||||
# Set up the driver environment.
|
||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||
# using a command wrapper. Hence, we will just set it when running the
|
||||
# command.
|
||||
export __LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/"
|
||||
|
||||
# Sanity check to ensure that our environment is sufficient to make our tests
|
||||
# run against the Mesa built by CI, rather than any installed distro version.
|
||||
MESA_VERSION=$(sed 's/\./\\./g' "$INSTALL/VERSION")
|
||||
|
||||
# Force the stdout and stderr streams to be unbuffered in python.
|
||||
export PYTHONUNBUFFERED=1
|
||||
|
||||
# Set the Vulkan driver to use.
|
||||
export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||
if [ "${VK_DRIVER}" = "radeon" ]; then
|
||||
# Disable vsync
|
||||
export MESA_VK_WSI_PRESENT_MODE=mailbox
|
||||
export vblank_mode=0
|
||||
fi
|
||||
|
||||
# Set environment for Wine.
|
||||
export WINEDEBUG="-all"
|
||||
export WINEPREFIX="/dxvk-wine64"
|
||||
export WINEESYNC=1
|
||||
|
||||
# Wait for amdgpu to be fully loaded
|
||||
sleep 1
|
||||
|
||||
# Avoid having to perform nasty command pre-processing to insert the
|
||||
# wine executable in front of the test executables. Instead, use the
|
||||
# kernel's binfmt support to automatically use Wine as an interpreter
|
||||
# when asked to load PE executables.
|
||||
# TODO: Have boot2container mount this filesystem for all jobs?
|
||||
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
|
||||
echo ':DOSWin:M::MZ::/usr/bin/wine64:' > /proc/sys/fs/binfmt_misc/register
|
||||
|
||||
# Set environment for DXVK.
|
||||
export DXVK_LOG_LEVEL="info"
|
||||
export DXVK_LOG="$RESULTS/dxvk"
|
||||
[ -d "$DXVK_LOG" ] || mkdir -pv "$DXVK_LOG"
|
||||
export DXVK_STATE_CACHE=0
|
||||
|
||||
# Set environment for replaying traces.
|
||||
export PATH="/apitrace-msvc-win64/bin:/gfxreconstruct/build/bin:$PATH"
|
||||
|
||||
SANITY_MESA_VERSION_CMD="vulkaninfo"
|
||||
|
||||
# Set up the Window System Interface (WSI)
|
||||
# TODO: Can we get away with GBM?
|
||||
if [ "${TEST_START_XORG:-0}" -eq 1 ]; then
|
||||
"$INSTALL"/common/start-x.sh "$INSTALL"
|
||||
export DISPLAY=:0
|
||||
fi
|
||||
|
||||
wine64 --version
|
||||
|
||||
SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD | tee /tmp/version.txt | grep \"Mesa $MESA_VERSION\(\s\|$\)\""
|
||||
|
||||
RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $SANITY_MESA_VERSION_CMD"
|
||||
|
||||
set +e
|
||||
if ! eval $RUN_CMD;
|
||||
then
|
||||
printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
|
||||
fi
|
||||
set -e
|
||||
|
||||
# Just to be sure...
|
||||
chmod +x ./valvetraces-run.sh
|
||||
./valvetraces-run.sh
|
@@ -1,4 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2035 # FIXME glob
|
||||
|
||||
set -ex
|
||||
|
||||
@@ -10,9 +11,6 @@ INSTALL=$(realpath -s "$PWD"/install)
|
||||
|
||||
RESULTS=$(realpath -s "$PWD"/results)
|
||||
|
||||
# Make sure the results folder exists
|
||||
mkdir -p "$RESULTS"
|
||||
|
||||
# Set up the driver environment.
|
||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||
# using a command wrapper. Hence, we will just set it when running the
|
||||
@@ -20,54 +18,71 @@ mkdir -p "$RESULTS"
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/:/vkd3d-proton-tests/x64/"
|
||||
|
||||
|
||||
# Sanity check to ensure that our environment is sufficient to make our tests
|
||||
# run against the Mesa built by CI, rather than any installed distro version.
|
||||
MESA_VERSION=$(sed 's/\./\\./g' "$INSTALL/VERSION")
|
||||
|
||||
# Set the Vulkan driver to use.
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||
|
||||
# Set environment for Wine.
|
||||
export WINEDEBUG="-all"
|
||||
export WINEPREFIX="/vkd3d-proton-wine64"
|
||||
export WINEESYNC=1
|
||||
|
||||
# Sanity check to ensure that our environment is sufficient to make our tests
|
||||
# run against the Mesa built by CI, rather than any installed distro version.
|
||||
MESA_VERSION=$(cat "$INSTALL/VERSION")
|
||||
if ! vulkaninfo | grep driverInfo | tee /tmp/version.txt | grep -F "Mesa $MESA_VERSION"; then
|
||||
# wrapper to supress +x to avoid spamming the log
|
||||
quiet() {
|
||||
set +x
|
||||
"$@"
|
||||
set -x
|
||||
}
|
||||
|
||||
set +e
|
||||
if ! vulkaninfo | tee /tmp/version.txt | grep "\"Mesa $MESA_VERSION\(\s\|$\)\"";
|
||||
then
|
||||
printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
if [ -d "$RESULTS" ]; then
|
||||
cd "$RESULTS" && rm -rf ..?* .[!.]* * && cd -
|
||||
else
|
||||
mkdir "$RESULTS"
|
||||
fi
|
||||
|
||||
printf "%s\n" "Running vkd3d-proton testsuite..."
|
||||
quiet printf "%s\n" "Running vkd3d-proton testsuite..."
|
||||
|
||||
if ! /vkd3d-proton-tests/x64/bin/d3d12 > "$RESULTS/vkd3d-proton-log.txt"; then
|
||||
set +e
|
||||
if ! /vkd3d-proton-tests/x64/bin/d3d12 > "$RESULTS/vkd3d-proton.log";
|
||||
then
|
||||
# Check if the executable finished (ie. no segfault).
|
||||
if ! grep "tests executed" "$RESULTS/vkd3d-proton-log.txt" > /dev/null; then
|
||||
error "Failed, see ${ARTIFACTS_BASE_URL}/results/vkd3d-proton-log.txt"
|
||||
if ! grep "tests executed" "$RESULTS/vkd3d-proton.log" > /dev/null; then
|
||||
error printf "%s\n" "Failed, see vkd3d-proton.log!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Collect all the failures
|
||||
VKD3D_PROTON_RESULTS="${VKD3D_PROTON_RESULTS:-vkd3d-proton-results}"
|
||||
RESULTSFILE="$RESULTS/$VKD3D_PROTON_RESULTS.txt"
|
||||
mkdir -p .gitlab-ci/vkd3d-proton
|
||||
if ! grep "Test failed" "$RESULTS"/vkd3d-proton-log.txt > "$RESULTSFILE"; then
|
||||
error "Failed to get the list of failing tests, see ${ARTIFACTS_BASE_URL}/results/vkd3d-proton-log.txt"
|
||||
exit 1
|
||||
fi
|
||||
grep "Test failed" "$RESULTS"/vkd3d-proton.log > "$RESULTSFILE"
|
||||
|
||||
# Gather the list expected failures
|
||||
if [ -f "$INSTALL/$VKD3D_PROTON_RESULTS-vkd3d.txt" ]; then
|
||||
cp "$INSTALL/$VKD3D_PROTON_RESULTS-vkd3d.txt" \
|
||||
if [ -f "$INSTALL/$VKD3D_PROTON_RESULTS.txt" ]; then
|
||||
cp "$INSTALL/$VKD3D_PROTON_RESULTS.txt" \
|
||||
".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline"
|
||||
else
|
||||
printf "%s\n" "$VKD3D_PROTON_RESULTS-vkd3d.txt not found, assuming a \"no failures\" baseline."
|
||||
touch ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline"
|
||||
fi
|
||||
|
||||
# Make sure that the failures found in this run match the current expectation
|
||||
if ! diff --color=always -u ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" "$RESULTSFILE"; then
|
||||
error "Changes found, see ${ARTIFACTS_BASE_URL}/results/vkd3d-proton-log.txt"
|
||||
if ! diff -q ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" "$RESULTSFILE"; then
|
||||
error printf "%s\n" "Changes found, see vkd3d-proton.log!"
|
||||
quiet diff --color=always -u ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" "$RESULTSFILE"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
printf "%s\n" "vkd3d-proton execution: SUCCESS"
|
||||
|
||||
exit 0
|
||||
|
@@ -7,10 +7,6 @@ COPY mesa_deps_vulkan_sdk.ps1 C:\
|
||||
RUN C:\mesa_deps_vulkan_sdk.ps1
|
||||
|
||||
COPY mesa_init_msvc.ps1 C:\
|
||||
|
||||
COPY mesa_deps_libva.ps1 C:\
|
||||
RUN C:\mesa_deps_libva.ps1
|
||||
|
||||
COPY mesa_deps_build.ps1 C:\
|
||||
RUN C:\mesa_deps_build.ps1
|
||||
|
||||
|
@@ -14,9 +14,6 @@ RUN C:\mesa_deps_rust.ps1
|
||||
|
||||
COPY mesa_init_msvc.ps1 C:\
|
||||
|
||||
COPY mesa_deps_libva.ps1 C:\
|
||||
RUN C:\mesa_deps_libva.ps1
|
||||
|
||||
COPY mesa_deps_test_piglit.ps1 C:\
|
||||
RUN C:\mesa_deps_test_piglit.ps1
|
||||
COPY mesa_deps_test_deqp.ps1 c:\
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# VK_DRIVER_FILES environment variable is not used when running with
|
||||
# VK_ICD_FILENAMES environment variable is not used when running with
|
||||
# elevated privileges. Add a key to the registry instead.
|
||||
$hkey_path = "HKLM:\SOFTWARE\Khronos\Vulkan\Drivers\"
|
||||
$hkey_name = Join-Path -Path $pwd -ChildPath "_install\share\vulkan\icd.d\dzn_icd.x86_64.json"
|
||||
|
@@ -84,6 +84,4 @@ Copy-Item ".\.gitlab-ci\windows\spirv2dxil_run.ps1" -Destination $installdir
|
||||
|
||||
Copy-Item ".\.gitlab-ci\windows\deqp_runner_run.ps1" -Destination $installdir
|
||||
|
||||
Copy-Item ".\.gitlab-ci\windows\vainfo_run.ps1" -Destination $installdir
|
||||
|
||||
Get-ChildItem -Recurse -Filter "ci" | Get-ChildItem -Include "*.txt","*.toml" | Copy-Item -Destination $installdir
|
||||
|
@@ -12,7 +12,7 @@ $depsInstallPath="C:\mesa-deps"
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning DirectX-Headers"
|
||||
git clone -b v1.613.1 --depth=1 https://github.com/microsoft/DirectX-Headers deps/DirectX-Headers
|
||||
git clone -b v1.611.0 --depth=1 https://github.com/microsoft/DirectX-Headers deps/DirectX-Headers
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone DirectX-Headers repository"
|
||||
Exit 1
|
||||
@@ -32,17 +32,16 @@ if (!$buildstatus) {
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning zlib"
|
||||
git clone -b v1.3.1 --depth=1 https://github.com/madler/zlib deps/zlib
|
||||
git clone -b v1.2.13 --depth=1 https://github.com/madler/zlib deps/zlib
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone zlib repository"
|
||||
Exit 1
|
||||
}
|
||||
Write-Host "Downloading zlib meson build files"
|
||||
Invoke-WebRequest -Uri "https://wrapdb.mesonbuild.com/v2/zlib_1.3.1-1/get_patch" -OutFile deps/zlib.zip
|
||||
Invoke-WebRequest -Uri "https://wrapdb.mesonbuild.com/v2/zlib_1.2.13-1/get_patch" -OutFile deps/zlib.zip
|
||||
Expand-Archive -Path deps/zlib.zip -Destination deps/zlib
|
||||
# Wrap archive puts build files in a version subdir
|
||||
robocopy deps/zlib/zlib-1.3.1 deps/zlib /E
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path deps/zlib/zlib-1.3.1
|
||||
Move-Item deps/zlib/zlib-1.2.13/* deps/zlib
|
||||
$zlib_build = New-Item -ItemType Directory -Path ".\deps\zlib" -Name "build"
|
||||
Push-Location -Path $zlib_build.FullName
|
||||
meson .. --backend=ninja -Dprefix="$depsInstallPath" --default-library=static --buildtype=release -Db_vscrt=mt && `
|
||||
@@ -55,6 +54,35 @@ if (!$buildstatus) {
|
||||
Exit 1
|
||||
}
|
||||
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning libva"
|
||||
git clone https://github.com/intel/libva.git deps/libva
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone libva repository"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Push-Location -Path ".\deps\libva"
|
||||
Write-Host "Checking out libva df3c584bb79d1a1e521372d62fa62e8b1c52ce6c"
|
||||
# libva-win32 is released with libva version 2.17 (see https://github.com/intel/libva/releases/tag/2.17.0)
|
||||
git checkout 2.17.0
|
||||
Pop-Location
|
||||
|
||||
Write-Host "Building libva"
|
||||
# libva already has a build dir in their repo, use builddir instead
|
||||
$libva_build = New-Item -ItemType Directory -Path ".\deps\libva" -Name "builddir"
|
||||
Push-Location -Path $libva_build.FullName
|
||||
meson .. -Dprefix="$depsInstallPath"
|
||||
ninja -j32 install
|
||||
$buildstatus = $?
|
||||
Pop-Location
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path $libva_build
|
||||
if (!$buildstatus) {
|
||||
Write-Host "Failed to compile libva"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning LLVM release/15.x"
|
||||
git clone -b release/15.x --depth=1 https://github.com/llvm/llvm-project deps/llvm-project
|
||||
@@ -96,7 +124,6 @@ cmake ../llvm `
|
||||
-DLLVM_ENABLE_DIA_SDK=OFF `
|
||||
-DCLANG_BUILD_TOOLS=ON `
|
||||
-DLLVM_SPIRV_INCLUDE_TESTS=OFF `
|
||||
-DLLVM_ENABLE_ZLIB=OFF `
|
||||
-Wno-dev && `
|
||||
ninja -j32 install
|
||||
$buildstatus = $?
|
||||
|
@@ -68,7 +68,7 @@ Get-Date
|
||||
python -m pip install --upgrade pip --progress-bar off
|
||||
Write-Host "Installing python packages at:"
|
||||
Get-Date
|
||||
pip3 install packaging meson mako "numpy < 2.0" pyyaml --progress-bar off
|
||||
pip3 install packaging meson mako numpy --progress-bar off
|
||||
if (!$?) {
|
||||
Write-Host "Failed to install dependencies from pip"
|
||||
Exit 1
|
||||
|
@@ -8,7 +8,7 @@ $depsInstallPath="C:\mesa-deps"
|
||||
|
||||
Write-Host "Downloading DirectX 12 Agility SDK at:"
|
||||
Get-Date
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/1.613.2 -OutFile 'agility.zip'
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/1.610.2 -OutFile 'agility.zip'
|
||||
Expand-Archive -Path 'agility.zip' -DestinationPath 'C:\agility'
|
||||
# Copy Agility SDK into mesa-deps\bin\D3D12
|
||||
New-Item -ErrorAction SilentlyContinue -ItemType Directory -Path $depsInstallPath\bin -Name 'D3D12'
|
||||
@@ -18,7 +18,7 @@ Remove-Item -Recurse 'C:\agility'
|
||||
|
||||
Write-Host "Downloading Updated WARP at:"
|
||||
Get-Date
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.11 -OutFile 'warp.zip'
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.9 -OutFile 'warp.zip'
|
||||
Expand-Archive -Path 'warp.zip' -DestinationPath 'C:\warp'
|
||||
# Copy WARP into mesa-deps\bin
|
||||
Copy-Item 'C:\warp\build\native\amd64\d3d10warp.dll' -Destination $depsInstallPath\bin
|
||||
@@ -27,7 +27,7 @@ Remove-Item -Recurse 'C:\warp'
|
||||
|
||||
Write-Host "Downloading DirectXShaderCompiler release at:"
|
||||
Get-Date
|
||||
Invoke-WebRequest -Uri https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.8.2403/dxc_2024_03_07.zip -OutFile 'DXC.zip'
|
||||
Invoke-WebRequest -Uri https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.7.2207/dxc_2022_07_18.zip -OutFile 'DXC.zip'
|
||||
Expand-Archive -Path 'DXC.zip' -DestinationPath 'C:\DXC'
|
||||
# No more need to get dxil.dll from the VS install
|
||||
Copy-Item 'C:\DXC\bin\x64\*.dll' -Destination 'C:\Windows\System32'
|
||||
|
@@ -1,79 +0,0 @@
|
||||
# Compiling libva/libva-utils deps
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
$MyPath = $MyInvocation.MyCommand.Path | Split-Path -Parent
|
||||
. "$MyPath\mesa_init_msvc.ps1"
|
||||
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "deps" | Out-Null
|
||||
$depsInstallPath="C:\mesa-deps"
|
||||
|
||||
Write-Host "Cloning libva at:"
|
||||
Get-Date
|
||||
git clone https://github.com/intel/libva.git deps/libva
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone libva repository"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Write-Host "Cloning libva finished at:"
|
||||
Get-Date
|
||||
|
||||
Write-Host "Building libva at:"
|
||||
Get-Date
|
||||
|
||||
Push-Location -Path ".\deps\libva"
|
||||
Write-Host "Checking out libva..."
|
||||
git checkout 2.21.0
|
||||
Pop-Location
|
||||
|
||||
# libva already has a build dir in their repo, use builddir instead
|
||||
$libva_build = New-Item -ItemType Directory -Path ".\deps\libva" -Name "builddir"
|
||||
Push-Location -Path $libva_build.FullName
|
||||
meson .. -Dprefix="$depsInstallPath"
|
||||
ninja -j32 install
|
||||
$buildstatus = $?
|
||||
Pop-Location
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path $libva_build
|
||||
if (!$buildstatus) {
|
||||
Write-Host "Failed to compile libva"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Write-Host "Building libva finished at:"
|
||||
Get-Date
|
||||
|
||||
Write-Host "Cloning libva-utils at:"
|
||||
Get-Date
|
||||
git clone https://github.com/intel/libva-utils.git deps/libva-utils
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone libva-utils repository"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Write-Host "Cloning libva-utils finished at:"
|
||||
Get-Date
|
||||
|
||||
Write-Host "Building libva-utils at:"
|
||||
Get-Date
|
||||
|
||||
Push-Location -Path ".\deps\libva-utils"
|
||||
Write-Host "Checking out libva-utils..."
|
||||
git checkout 2.21.0
|
||||
Pop-Location
|
||||
|
||||
Write-Host "Building libva-utils"
|
||||
# libva-utils already has a build dir in their repo, use builddir instead
|
||||
$libva_utils_build = New-Item -ItemType Directory -Path ".\deps\libva-utils" -Name "builddir"
|
||||
Push-Location -Path $libva_utils_build.FullName
|
||||
meson .. -Dprefix="$depsInstallPath" --pkg-config-path="$depsInstallPath\lib\pkgconfig;$depsInstallPath\share\pkgconfig"
|
||||
ninja -j32 install
|
||||
$buildstatus = $?
|
||||
Pop-Location
|
||||
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path $libva_utils_build
|
||||
if (!$buildstatus) {
|
||||
Write-Host "Failed to compile libva-utils"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Write-Host "Building libva-utils finished at:"
|
||||
Get-Date
|
@@ -1,99 +0,0 @@
|
||||
|
||||
function Deploy-Dependencies {
|
||||
param (
|
||||
[string] $deploy_directory
|
||||
)
|
||||
|
||||
Write-Host "Copying libva runtime and driver at:"
|
||||
Get-Date
|
||||
|
||||
# Copy the VA runtime binaries from the mesa built dependencies so the versions match with the built mesa VA driver binary
|
||||
$depsInstallPath="C:\mesa-deps"
|
||||
Copy-Item "$depsInstallPath\bin\vainfo.exe" -Destination "$deploy_directory\vainfo.exe"
|
||||
Copy-Item "$depsInstallPath\bin\va_win32.dll" -Destination "$deploy_directory\va_win32.dll"
|
||||
Copy-Item "$depsInstallPath\bin\va.dll" -Destination "$deploy_directory\va.dll"
|
||||
|
||||
# Copy Agility SDK into D3D12 subfolder of vainfo
|
||||
New-Item -ItemType Directory -Force -Path "$deploy_directory\D3D12" | Out-Null
|
||||
Copy-Item "$depsInstallPath\bin\D3D12\D3D12Core.dll" -Destination "$deploy_directory\D3D12\D3D12Core.dll"
|
||||
Copy-Item "$depsInstallPath\bin\D3D12\d3d12SDKLayers.dll" -Destination "$deploy_directory\D3D12\d3d12SDKLayers.dll"
|
||||
|
||||
# Copy WARP next to vainfo
|
||||
Copy-Item "$depsInstallPath\bin\d3d10warp.dll" -Destination "$deploy_directory\d3d10warp.dll"
|
||||
|
||||
Write-Host "Copying libva runtime and driver finished at:"
|
||||
Get-Date
|
||||
}
|
||||
|
||||
function Check-VAInfo-Entrypoint {
|
||||
param (
|
||||
[string] $vainfo_app_path,
|
||||
[string] $entrypoint
|
||||
)
|
||||
|
||||
$vainfo_run_cmd = "$vainfo_app_path --display win32 --device 0 2>&1 | Select-String $entrypoint -Quiet"
|
||||
Write-Host "Running: $vainfo_run_cmd"
|
||||
$vainfo_ret_code= Invoke-Expression $vainfo_run_cmd
|
||||
if (-not($vainfo_ret_code)) {
|
||||
return 0
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
# Set testing environment variables
|
||||
$successful_run=1
|
||||
$testing_dir="$PWD\_install\bin" # vaon12_drv_video.dll is placed on this directory by the build
|
||||
$vainfo_app_path = "$testing_dir\vainfo.exe"
|
||||
|
||||
# Deploy vainfo and dependencies
|
||||
Deploy-Dependencies -deploy_directory $testing_dir
|
||||
|
||||
# Set VA runtime environment variables
|
||||
$env:LIBVA_DRIVER_NAME="vaon12"
|
||||
$env:LIBVA_DRIVERS_PATH="$testing_dir"
|
||||
|
||||
Write-Host "LIBVA_DRIVER_NAME: $env:LIBVA_DRIVER_NAME"
|
||||
Write-Host "LIBVA_DRIVERS_PATH: $env:LIBVA_DRIVERS_PATH"
|
||||
|
||||
# Check video processing entrypoint is supported
|
||||
# Inbox WARP/D3D12 supports this entrypoint with VA frontend shaders support (e.g no video APIs support required)
|
||||
$entrypoint = "VAEntrypointVideoProc"
|
||||
|
||||
# First run without app verifier
|
||||
Write-Host "Disabling appverifier for $vainfo_app_path and checking for the presence of $entrypoint supported..."
|
||||
appverif.exe /disable * -for "$vainfo_app_path"
|
||||
$result_without_appverifier = Check-VAInfo-Entrypoint -vainfo_app_path $vainfo_app_path -entrypoint $entrypoint
|
||||
if ($result_without_appverifier -eq 1) {
|
||||
Write-Host "Process exited successfully."
|
||||
} else {
|
||||
$successful_run=0
|
||||
Write-Error "Process exit not successful for $vainfo_run_cmd. Please see vainfo verbose output below for diagnostics..."
|
||||
# verbose run to print more info on error (helpful to investigate issues from the CI output)
|
||||
Invoke-Expression "$vainfo_app_path -a --display win32 --device help"
|
||||
Invoke-Expression "$vainfo_app_path -a --display win32 --device 0"
|
||||
}
|
||||
|
||||
# Enable appverif and run again
|
||||
Write-Host "Enabling appverifier for $vainfo_app_path and checking for the presence of $entrypoint supported..."
|
||||
appverif.exe /logtofile enable
|
||||
appverif.exe /verify "$vainfo_app_path"
|
||||
appverif.exe /enable "Leak" -for "$vainfo_app_path"
|
||||
$verifier_log_path="$testing_dir\vainfo_appverif_log.xml"
|
||||
$result_with_appverifier = Check-VAInfo-Entrypoint -vainfo_app_path $vainfo_app_path -entrypoint $entrypoint
|
||||
if ($result_with_appverifier -eq 1) {
|
||||
Write-Host "Process exited successfully."
|
||||
appverif.exe /logtofile disable
|
||||
} else {
|
||||
Write-Host "Process failed. Please see Application Verifier log contents below."
|
||||
# Need to wait for appverif to exit before gathering log
|
||||
Start-Process -Wait -FilePath "appverif.exe" -ArgumentList "-export", "log", "-for", "$vainfo_app_path", "-with", "to=$verifier_log_path"
|
||||
Get-Content $verifier_log_path
|
||||
Write-Error "Process exit not successful for $vainfo_run_cmd."
|
||||
appverif.exe /logtofile disable
|
||||
$successful_run=0
|
||||
}
|
||||
|
||||
if ($successful_run -ne 1) {
|
||||
Exit 1
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@ For rendering errors, attach screenshots of the problem and (if possible) of how
|
||||
|
||||
- Backtrace (for crashes)
|
||||
- Output of `dmesg`
|
||||
- Hang reports: Follow the steps described [here](https://docs.mesa3d.org/drivers/amd/hang-debugging.html#radv-debug-hang) and attach the files created in `$HOME/radv_dumps_*/`.
|
||||
- Hang reports: Run with `RADV_DEBUG=hang` and attach the files created in `$HOME/radv_dumps_*/`
|
||||
|
||||
### Steps to reproduce
|
||||
|
||||
|
26
.mailmap
26
.mailmap
@@ -84,8 +84,6 @@ Ben Widawsky <benjamin.widawsky@intel.com> Ben Widawsky <ben@bwidawsk.net>
|
||||
|
||||
Blair Sadewitz <blair.sadewitz@gmail.com> Blair Sadewitz <blair.sadewitz.gmail.com>
|
||||
|
||||
Bob Beckett <bob.beckett@collabora.com>
|
||||
|
||||
Boris Brezillon <boris.brezillon@collabora.com> <boris.brezillon@free-electrons.com>
|
||||
|
||||
Boris Peterbarg <reist@users.sourceforge.net> reist <reist>
|
||||
@@ -159,8 +157,6 @@ Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> Christop
|
||||
Christopher Li <chrisl@vmware.com> Chris Li <chrisl@vmware.com>
|
||||
Christopher Li <chrisl@vmware.com> Qicheng Christopher Li <chrisl@vmware.com>
|
||||
|
||||
Christopher Michael <cmichael@igalia.com> <devilhorns@comcast.net>
|
||||
|
||||
Claudio Ciccani <klan@directfb.org> <klan@users.sf.net>
|
||||
Claudio Ciccani <klan@directfb.org> <klan@users.sourceforge.net>
|
||||
|
||||
@@ -172,7 +168,7 @@ Colin McDonald <cjmmail10-bz@yahoo.co.uk> <cjmcdonald@qinetiq.com>
|
||||
Connor Abbott <cwabbott0@gmail.com> <connor.w.abbott@intel.com>
|
||||
Connor Abbott <cwabbott0@gmail.com> <connor.abbott@intel.com>
|
||||
|
||||
Constantine Shablia <constantine.shablya@collabora.com>
|
||||
Konstantin Kharlamov <Hi-Angel@yandex.ru>
|
||||
|
||||
Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomed...@gmail.com>
|
||||
Corbin Simpson <MostAwesomeDude@gmail.com> <mostawesomedude@gmail.com>
|
||||
@@ -196,7 +192,6 @@ David Miller <davem@davemloft.net> davem69 <davem69>
|
||||
|
||||
David Heidelberg <david@ixit.cz> David Heidelberger <david.heidelberger@ixit.cz>
|
||||
David Heidelberg <david@ixit.cz> <d.okias@gmail.com>
|
||||
David Heidelberg <david@ixit.cz> <david.heidelberg@collabora.com>
|
||||
|
||||
David Reveman <reveman@chromium.org> <c99drn@cs.umu.se>
|
||||
|
||||
@@ -236,7 +231,7 @@ Eric Engestrom <eric@igalia.com> <eric@engestrom.ch>
|
||||
Eric Engestrom <eric@igalia.com> <eric.engestrom@imgtec.com>
|
||||
Eric Engestrom <eric@igalia.com> <eric.engestrom@intel.com>
|
||||
|
||||
Erik Faye-Lund <erik.faye-lund@collabora.com> <kusmabite@gmail.com>
|
||||
Erik Faye-Lund <kusmabite@gmail.com> <erik.faye-lund@collabora.com>
|
||||
|
||||
Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com>
|
||||
|
||||
@@ -251,12 +246,9 @@ Frank Binns <frank.binns@imgtec.com> <francisbinns@gmail.com>
|
||||
|
||||
Frank Henigman <fjhenigman@google.com> <fjhenigman@chromium.org>
|
||||
|
||||
Freya Gentz <zegentzy@protonmail.com>
|
||||
|
||||
George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr>
|
||||
|
||||
Gert Wollny <gert.wollny@collabora.com> <gw.fossdev@gmail.com>
|
||||
Gert Wollny <gert.wollny@collabora.com> <gert.wollny@collabora.co.uk>
|
||||
|
||||
Gurchetan Singh <gurchetansingh@chromium.org>
|
||||
|
||||
@@ -378,9 +370,6 @@ Karl Schultz <karl.w.schultz@gmail.com> <k.w.schultz@comcast.net>
|
||||
Karl Schultz <karl.w.schultz@gmail.com> <Karl.W.Schultz@gmail.com>
|
||||
Karl Schultz <karl.w.schultz@gmail.com> <kschultz@freedesktop.org>
|
||||
|
||||
Karmjit Mahil <karmjit.mahil@igalia.com>
|
||||
Karmjit Mahil <karmjit.mahil@igalia.com> <karmjit.mahil@imgtec.com>
|
||||
|
||||
Karol Herbst <kherbst@redhat.com> <git@karolherbst.de>
|
||||
Karol Herbst <kherbst@redhat.com> <karolherbst@gmail.com>
|
||||
Karol Herbst <kherbst@redhat.com> <nouveau@karolherbst.de>
|
||||
@@ -395,8 +384,6 @@ Keith Whitwell <keithw@vmware.com> keithw <keithw@keithw-laptop.(none)>
|
||||
|
||||
Kevin Rogovin <kevin.rogovin@intel.com> <kevin.rogovin@gmail.com>
|
||||
|
||||
Konstantin Kharlamov <Hi-Angel@yandex.ru>
|
||||
|
||||
Kristian Høgsberg <krh@bitplanet.net> <krh@redhat.com>
|
||||
Kristian Høgsberg <krh@bitplanet.net> <krh@hinata.boston.redhat.com>
|
||||
Kristian Høgsberg <krh@bitplanet.net> <krh@sasori.boston.redhat.com>
|
||||
@@ -586,16 +573,9 @@ Robert Hooker <sarvatt@ubuntu.com> <robert.hooker@canonical.com>
|
||||
|
||||
Rodrigo Vivi <rodrigo.vivi@intel.com> <rodrigo.vivi@gmail.com>
|
||||
|
||||
Rohan Garg <rohan.garg@intel.com> <rohan.garg@collabora.com>
|
||||
Rohan Garg <rohan.garg@intel.com> <rohan@garg.io>
|
||||
|
||||
Roland Scheidegger <sroland@vmware.com> <rscheidegger@gmx.ch>
|
||||
Roland Scheidegger <sroland@vmware.com> <sroland@tungstengraphics.com>
|
||||
|
||||
Roman Stratiienko <r.stratiienko@gmail.com> <roman.stratiienko@globallogic.com>
|
||||
Roman Stratiienko <r.stratiienko@gmail.com> <roman.o.stratiienko@globallogic.com>
|
||||
Roman Stratiienko <r.stratiienko@gmail.com> <roman.stratiienko@nure.ua>
|
||||
|
||||
Roy Spliet <rspliet@eclipso.eu> <r.spliet@student.tudelft.nl>
|
||||
|
||||
Rune Petersen <rune@megahurts.dk> Rune Peterson <rune@megahurts.dk>
|
||||
@@ -672,7 +652,7 @@ Tom Stellard <thomas.stellard@amd.com> <tstellar@redhat.com>
|
||||
|
||||
Tomasz Figa <tfiga@chromium.org> <tomasz.figa@gmail.com>
|
||||
|
||||
Tomeu Vizoso <tomeu@tomeuvizoso.net> <tomeu.vizoso@collabora.com>
|
||||
Tomeu Vizoso <tomeu.vizoso@collabora.com> <tomeu@tomeuvizoso.net>
|
||||
|
||||
Topi Pohjolainen <topi.pohjolainen@intel.com> <topi.pohjolainen@gmail.com>
|
||||
|
||||
|
@@ -22,7 +22,6 @@ issues:
|
||||
'dzn': 'dozen'
|
||||
'egl': 'EGL'
|
||||
'etnaviv': 'etnaviv'
|
||||
'etnaviv/nn': ['etnaviv', 'teflon']
|
||||
'freedreno': 'freedreno'
|
||||
'freedreno/ir3': ['freedreno', 'ir3']
|
||||
'gallium': 'gallium'
|
||||
@@ -41,48 +40,47 @@ issues:
|
||||
'iris': 'iris'
|
||||
'isl': 'ISL'
|
||||
'lima': 'lima'
|
||||
'lima/ppir': 'lima'
|
||||
'lima/ppir' : 'lima'
|
||||
'llvmpipe': 'llvmpipe'
|
||||
'mesa': 'mesa'
|
||||
'meson': 'meson'
|
||||
'mesa' : 'mesa'
|
||||
'meson' : 'meson'
|
||||
'microsoft/compiler': 'd3d12'
|
||||
'nak': 'NAK'
|
||||
'nine': 'nine'
|
||||
'nak' : 'NAK'
|
||||
'nine' : 'nine'
|
||||
'nir': 'NIR'
|
||||
'nir2dxil': 'd3d12'
|
||||
'nouveau': 'nouveau'
|
||||
'nv30': ['nouveau', 'nv30']
|
||||
'nv50': ['nouveau', 'nv50']
|
||||
'nv50/ir': 'nouveau'
|
||||
'nvc0': ['nouveau', 'nvc0']
|
||||
'nvk': 'NVK'
|
||||
'panfrost': 'panfrost'
|
||||
'pan/midgard': 'panfrost'
|
||||
'pvr': 'powervr'
|
||||
'r100': 'r100'
|
||||
'r200': 'r200'
|
||||
'r300': 'r300'
|
||||
'r600': 'r600'
|
||||
'radeonsi': 'radeonsi'
|
||||
'nouveau' : 'nouveau'
|
||||
'nv30' : ['nouveau', 'nv30']
|
||||
'nv50' : ['nouveau', 'nv50']
|
||||
'nv50/ir' : 'nouveau'
|
||||
'nvc0' : ['nouveau', 'nvc0']
|
||||
'nvk' : 'NVK'
|
||||
'panfrost' : 'panfrost'
|
||||
'pan/midgard' : 'panfrost'
|
||||
'pvr' : 'powervr'
|
||||
'r100' : 'r100'
|
||||
'r200' : 'r200'
|
||||
'r300' : 'r300'
|
||||
'r600' : 'r600'
|
||||
'radeonsi' : 'radeonsi'
|
||||
'radv': 'RADV'
|
||||
'radv/aco': ['RADV', 'ACO']
|
||||
'rusticl': 'Rusticl'
|
||||
'softpipe': 'softpipe'
|
||||
'spirv': 'SPIR-V'
|
||||
'swr': 'swr'
|
||||
'swrast': 'swrast'
|
||||
'teflon': 'teflon'
|
||||
'tegra': 'tegra'
|
||||
'tgsi': 'TGSI'
|
||||
'softpipe' : 'softpipe'
|
||||
'spirv' : 'SPIR-V'
|
||||
'swr' : 'swr'
|
||||
'swrast' : 'swrast'
|
||||
'tegra' : 'tegra'
|
||||
'tgsi' : 'TGSI'
|
||||
'turnip': 'turnip'
|
||||
'util': 'util'
|
||||
'util' : 'util'
|
||||
'v3d': 'v3d'
|
||||
'vaapi': 'VA-API'
|
||||
'vc4': 'vc4'
|
||||
'vdpau': 'VDPAU'
|
||||
'vieux': 'vieux'
|
||||
'virgl': 'virgl'
|
||||
'vmwgfx': 'vmwgfx'
|
||||
'vaapi' : 'VA-API'
|
||||
'vc4' : 'vc4'
|
||||
'vdpau' : 'VDPAU'
|
||||
'vieux' : 'vieux'
|
||||
'virgl' : 'virgl'
|
||||
'vmwgfx' : 'vmwgfx'
|
||||
'zink': 'zink'
|
||||
|
||||
titles: &titles
|
||||
@@ -90,21 +88,21 @@ issues:
|
||||
'bisected': 'bisected'
|
||||
'coverity': 'coverity'
|
||||
'deqp': 'deqp'
|
||||
'feature request': 'feature request'
|
||||
'haiku': 'haiku'
|
||||
'feature request': 'feature_request'
|
||||
'haiku' : 'haiku'
|
||||
'regression': 'regression'
|
||||
|
||||
'i915_dri.so': 'i915'
|
||||
'i965_dri.so': 'i965'
|
||||
'iris_dri.so': 'iris'
|
||||
'nouveau_dri.so': 'nouveau'
|
||||
'nouveau_vieux_dri.so': 'vieux'
|
||||
'r200_dri.so': 'r200'
|
||||
'r300_dri.so': 'r300'
|
||||
'r600_dri.so': 'r600'
|
||||
'radeonsi_dri.so': 'radeonsi'
|
||||
'swrast_dri.so': 'swrast'
|
||||
'vmwgfx_dri.so': 'vmwgfx'
|
||||
'i915_dri.so' : 'i915'
|
||||
'i965_dri.so' : 'i965'
|
||||
'iris_dri.so' : 'iris'
|
||||
'nouveau_dri.so' : 'nouveau'
|
||||
'nouveau_vieux_dri.so' : 'vieux'
|
||||
'r200_dri.so' : 'r200'
|
||||
'r300_dri.so' : 'r300'
|
||||
'r600_dri.so' : 'r600'
|
||||
'radeonsi_dri.so' : 'radeonsi'
|
||||
'swrast_dri.so' : 'swrast'
|
||||
'vmwgfx_dri.so' : 'vmwgfx'
|
||||
|
||||
merge_requests:
|
||||
topics:
|
||||
@@ -113,189 +111,169 @@ merge_requests:
|
||||
*titles
|
||||
|
||||
paths:
|
||||
'^.gitlab/issue_templates/': ['docs']
|
||||
'^.gitlab-ci': ['CI']
|
||||
'^.*/gitlab-ci(-inc)?.yml': ['CI']
|
||||
'^.*/ci/deqp-.*\.toml': ['CI']
|
||||
'^.*/ci/.*-(fails|flakes|skips)\.txt': ['CI-Expectations']
|
||||
'^.*/ci/(restricted-)?traces-.*\.yml': ['CI-Expectations', 'trace']
|
||||
'^.*/ci/.*-validation-settings\.txt': ['CI-Expectations']
|
||||
'^.*/ci/.*-vkd3d\.txt': ['CI-Expectations']
|
||||
'^.gitlab-ci/windows/': ['Windows']
|
||||
'^bin/__init__.py$': ['maintainer-scripts']
|
||||
'^bin/gen_release_notes': ['maintainer-scripts']
|
||||
'^bin/git_sha1_gen.py$': ['meson', 'android']
|
||||
'^bin/install_megadrivers.py$': ['meson']
|
||||
'^bin/meson-cmd-extract.py$': ['meson']
|
||||
'^bin/meson.build$': ['meson']
|
||||
'^bin/pick-ui': ['maintainer-scripts']
|
||||
'^bin/pick/': ['maintainer-scripts']
|
||||
'^bin/post_version': ['maintainer-scripts']
|
||||
'^bin/symbols-check.py$': ['meson']
|
||||
'^docs/': ['docs']
|
||||
'^include/drm-uapi/i915_drm.h': ['intel']
|
||||
'^include/drm-uapi/xe_drm.h': ['intel']
|
||||
'^include/vulkan/': ['vulkan']
|
||||
'^meson_options.txt': ['meson']
|
||||
'^README.rst': ['docs']
|
||||
'^src/amd/addrlib/': ['AMD common']
|
||||
'^src/amd/common/': ['AMD common']
|
||||
'^src/amd/compiler/': ['ACO']
|
||||
'^src/amd/llvm/': ['AMD common']
|
||||
'^src/amd/registers/': ['AMD common']
|
||||
'^src/amd/vulkan/': ['RADV']
|
||||
'^src/asahi/': ['asahi']
|
||||
'^src/broadcom/drm-shim/v3d': ['v3d']
|
||||
'^src/broadcom/vulkan/': ['v3dv']
|
||||
'^src/compiler/clc': ['OpenCL']
|
||||
'^src/compiler/glsl': ['GLSL']
|
||||
'^src/compiler/nir': ['NIR']
|
||||
'^src/compiler/spirv/': ['SPIR-V']
|
||||
'^src/egl/': ['EGL']
|
||||
'^src/egl/drivers/wgl/': ['wgl']
|
||||
'^src/etnaviv/': ['etnaviv']
|
||||
'^src/freedreno/afuc/': ['freedreno']
|
||||
'^src/freedreno/common/': ['freedreno']
|
||||
'^src/freedreno/computerator/': ['freedreno']
|
||||
'^src/freedreno/decode/': ['freedreno']
|
||||
'^src/freedreno/drm-shim/': ['freedreno']
|
||||
'^src/freedreno/drm/': ['freedreno']
|
||||
'^src/freedreno/ds/': ['freedreno']
|
||||
'^src/freedreno/fdl/': ['freedreno']
|
||||
'^src/freedreno/ir2/': ['freedreno']
|
||||
'^src/freedreno/ir3/': ['ir3']
|
||||
'^src/freedreno/isa/': ['freedreno']
|
||||
'^src/freedreno/perfcntrs/': ['freedreno']
|
||||
'^src/freedreno/registers/': ['freedreno']
|
||||
'^src/freedreno/rnn/': ['freedreno']
|
||||
'^src/freedreno/vulkan/': ['turnip']
|
||||
'^src/gallium/auxiliary/': ['gallium']
|
||||
'^src/gallium/auxiliary/nir/': ['NIR']
|
||||
'^src/gallium/auxiliary/nir/.*tgsi.*': ['TGSI']
|
||||
'^src/gallium/auxiliary/tgsi/': ['TGSI']
|
||||
'^src/gallium/docs/': ['gallium']
|
||||
'^src/gallium/drivers/asahi/': ['asahi']
|
||||
'^src/gallium/drivers/crocus/': ['crocus']
|
||||
'^src/gallium/drivers/d3d12/': ['d3d12']
|
||||
'^src/gallium/drivers/etnaviv/': ['etnaviv']
|
||||
'^src/gallium/drivers/etnaviv/etnaviv_ml_.*': ['teflon']
|
||||
'^src/gallium/drivers/freedreno/': ['freedreno']
|
||||
'^src/gallium/drivers/grate/': ['tegra']
|
||||
'^src/gallium/drivers/i915/': ['i915g']
|
||||
'^src/gallium/drivers/iris/': ['iris']
|
||||
'^src/gallium/drivers/lima/': ['lima']
|
||||
'^src/gallium/drivers/llvmpipe/': ['llvmpipe']
|
||||
'^src/gallium/drivers/nouveau/': ['nouveau']
|
||||
'^src/gallium/drivers/nouveau/nv30': ['nv30']
|
||||
'^src/gallium/drivers/nouveau/nv50': ['nv50']
|
||||
'^src/gallium/drivers/nouveau/nvc0': ['nvc0']
|
||||
'^src/gallium/drivers/panfrost/': ['panfrost']
|
||||
'^src/gallium/drivers/r300/': ['r300']
|
||||
'^src/gallium/drivers/r600/': ['r600']
|
||||
'^src/gallium/drivers/radeonsi': ['radeonsi']
|
||||
'^src/gallium/drivers/softpipe': ['softpipe']
|
||||
'^src/gallium/drivers/svga/': ['svga']
|
||||
'^src/gallium/drivers/swr/': ['swr']
|
||||
'^src/gallium/drivers/tegra/': ['tegra']
|
||||
'^src/gallium/drivers/v3d/': ['v3d']
|
||||
'^src/gallium/drivers/vc4/': ['vc4']
|
||||
'^src/gallium/drivers/virgl/': ['virgl']
|
||||
'^src/gallium/drivers/zink/': ['zink']
|
||||
'^src/gallium/frontends/clover/': ['clover']
|
||||
'^src/gallium/frontends/dri/': ['gallium']
|
||||
'^src/gallium/frontends/glx/': ['GLX']
|
||||
'^src/gallium/frontends/hgl/': ['haiku']
|
||||
'^src/gallium/frontends/lavapipe/': ['lavapipe']
|
||||
'^src/gallium/frontends/nine/': ['nine']
|
||||
'^src/gallium/frontends/omx/': ['omx']
|
||||
'^src/gallium/frontends/osmesa/': ['osmesa']
|
||||
'^src/gallium/frontends/rusticl/': ['Rusticl']
|
||||
'^src/gallium/frontends/teflon/': ['teflon']
|
||||
'^src/gallium/frontends/va/': ['VA-API']
|
||||
'^src/gallium/frontends/vdpau/': ['VDPAU']
|
||||
'^src/gallium/frontends/wgl/': ['wgl']
|
||||
# '^src/gallium/frontends/xa/': ['']
|
||||
'^src/gallium/include/': ['gallium']
|
||||
'^src/gallium/targets/': ['gallium']
|
||||
'^src/gallium/targets/opencl/': ['clover']
|
||||
'^src/gallium/targets/osmesa/': ['osmesa']
|
||||
'^src/gallium/targets/rusticl/': ['Rusticl']
|
||||
'^src/gallium/tests/': ['gallium']
|
||||
'^src/gallium/tools/': ['gallium']
|
||||
# '^src/gallium/winsys/amdgpu/': ['']
|
||||
'^src/gallium/winsys/crocus/': ['crocus']
|
||||
'^src/gallium/winsys/d3d12/': ['d3d12']
|
||||
'^src/gallium/winsys/etnaviv/': ['etnaviv']
|
||||
'^src/gallium/winsys/freedreno/': ['freedreno']
|
||||
'^src/gallium/winsys/grate/': ['tegra']
|
||||
'^src/gallium/winsys/i915/': ['i915g']
|
||||
'^src/gallium/winsys/iris/': ['iris']
|
||||
# '^src/gallium/winsys/kmsro/': ['']
|
||||
'^src/gallium/winsys/lima/': ['lima']
|
||||
'^src/gallium/winsys/nouveau/': ['nouveau']
|
||||
'^src/gallium/winsys/panfrost/': ['panfrost']
|
||||
# '^src/gallium/winsys/radeon/': ['radeon']
|
||||
'^src/gallium/winsys/svga/': ['svga']
|
||||
# '^src/gallium/winsys/sw/': ['']
|
||||
'^src/gallium/winsys/sw/gdi/': ['wgl']
|
||||
'^src/gallium/winsys/tegra/': ['tegra']
|
||||
'^src/gallium/winsys/v3d/': ['v3d']
|
||||
'^src/gallium/winsys/vc4/': ['vc4']
|
||||
'^src/gallium/winsys/virgl/': ['virgl']
|
||||
'^src/gbm/': ['gbm']
|
||||
'^src/glx/': ['GLX']
|
||||
'^src/imagination/': ['powervr']
|
||||
'^src/intel/blorp/': ['blorp']
|
||||
'^src/intel/common/': ['intel']
|
||||
'^src/intel/compiler/': ['intel-compiler']
|
||||
'^src/intel/compiler/brw': ['intel-brw']
|
||||
'^src/intel/compiler/elk': ['intel-elk']
|
||||
'^src/intel/dev/': ['intel']
|
||||
'^src/intel/ds/': ['intel']
|
||||
'^src/intel/genxml/': ['intel']
|
||||
'^src/intel/isl/': ['ISL']
|
||||
'^src/intel/nullhw-layer/': ['intel']
|
||||
'^src/intel/perf/': ['intel']
|
||||
'^src/intel/tools/': ['intel-tools']
|
||||
'^src/intel/vulkan/': ['ANV']
|
||||
'^src/intel/vulkan_hasvk/': ['hasvk']
|
||||
'^src/loader/': ['loader']
|
||||
'^src/mapi/': ['mapi']
|
||||
'^src/mesa/drivers/dri/i915/': ['i915']
|
||||
'^src/mesa/drivers/dri/i965/': ['i965']
|
||||
'^src/mesa/drivers/dri/nouveau/': ['vieux']
|
||||
'^src/mesa/drivers/dri/r200/': ['r200']
|
||||
'^src/mesa/drivers/dri/radeon/': ['radeon']
|
||||
'^src/mesa/drivers/dri/swrast/': ['swrast']
|
||||
'^src/mesa/drivers/osmesa': ['osmesa']
|
||||
'^src/mesa/main/': ['mesa']
|
||||
'^src/mesa/state_tracker/.*glsl.*': ['GLSL']
|
||||
'^src/mesa/state_tracker/.*tgsi.*': ['TGSI']
|
||||
'^src/mesa/state_tracker/.*nir.*': ['NIR']
|
||||
'^src/microsoft/clc/': ['d3d12']
|
||||
'^src/microsoft/compiler/': ['d3d12']
|
||||
'^src/microsoft/spirv_to_dxil/': ['dozen']
|
||||
'^src/microsoft/vulkan/': ['dozen']
|
||||
'^src/nouveau/codegen/': ['nouveau']
|
||||
'^src/nouveau/compiler/': ['NAK']
|
||||
'^src/nouveau/drm-shim/': ['nouveau']
|
||||
'^src/nouveau/drm/': ['nouveau']
|
||||
'^src/nouveau/headers/': ['NVK']
|
||||
'^src/nouveau/mme/': ['NVK']
|
||||
'^src/nouveau/nil/': ['NVK']
|
||||
'^src/nouveau/vulkan/': ['NVK']
|
||||
'^src/nouveau/winsys/': ['NVK']
|
||||
'^src/panfrost/': ['panfrost']
|
||||
'^src/virtio/vulkan/': ['venus']
|
||||
'^src/virtio/venus-protocol/': ['venus']
|
||||
'^src/virtio/ci/': ['venus']
|
||||
'^src/util/': ['util']
|
||||
'^src/util/00-mesa-defaults.conf': ['drirc']
|
||||
'^src/vulkan/': ['vulkan']
|
||||
'^src/vulkan/wsi/': ['wsi']
|
||||
'^VERSION$': ['maintainer-scripts']
|
||||
'^.gitlab/issue_templates/' : ['docs']
|
||||
'^.gitlab-ci' : ['CI']
|
||||
'^.*/gitlab-ci.yml' : ['CI']
|
||||
'^.*/ci/' : ['CI']
|
||||
'^.gitlab-ci/windows/' : ['Windows']
|
||||
'^bin/__init__.py$' : ['maintainer-scripts']
|
||||
'^bin/gen_release_notes' : ['maintainer-scripts']
|
||||
'^bin/git_sha1_gen.py$' : ['meson', 'android']
|
||||
'^bin/install_megadrivers.py$' : ['meson']
|
||||
'^bin/meson-cmd-extract.py$' : ['meson']
|
||||
'^bin/meson.build$' : ['meson']
|
||||
'^bin/pick-ui' : ['maintainer-scripts']
|
||||
'^bin/pick/' : ['maintainer-scripts']
|
||||
'^bin/post_version' : ['maintainer-scripts']
|
||||
'^bin/symbols-check.py$' : ['meson']
|
||||
'^docs/' : ['docs']
|
||||
'^include/drm-uapi/i915_drm.h' : ['intel']
|
||||
'^include/drm-uapi/xe_drm.h' : ['intel']
|
||||
'^include/vulkan/' : ['vulkan']
|
||||
'^meson_options.txt' : ['meson']
|
||||
'^README.rst' : ['docs']
|
||||
'^src/amd/addrlib/' : ['AMD common']
|
||||
'^src/amd/common/' : ['AMD common']
|
||||
'^src/amd/compiler/' : ['ACO']
|
||||
'^src/amd/llvm/' : ['AMD common']
|
||||
'^src/amd/registers/' : ['AMD common']
|
||||
'^src/amd/vulkan/' : ['RADV']
|
||||
'^src/asahi/' : ['asahi']
|
||||
'^src/broadcom/drm-shim/v3d' : ['v3d']
|
||||
'^src/broadcom/vulkan/' : ['v3dv']
|
||||
'^src/compiler/clc' : ['OpenCL']
|
||||
'^src/compiler/glsl' : ['GLSL']
|
||||
'^src/compiler/nir' : ['NIR']
|
||||
'^src/compiler/spirv/' : ['SPIR-V']
|
||||
'^src/egl/' : ['EGL']
|
||||
'^src/egl/drivers/wgl/' : ['wgl']
|
||||
'^src/etnaviv/' : ['etnaviv']
|
||||
'^src/freedreno/' : ['freedreno']
|
||||
'^src/freedreno/ir3/' : ['ir3']
|
||||
'^src/freedreno/vulkan/' : ['turnip']
|
||||
'^src/gallium/auxiliary/' : ['gallium']
|
||||
'^src/gallium/auxiliary/nir/' : ['NIR']
|
||||
'^src/gallium/auxiliary/nir/.*tgsi.*' : ['TGSI']
|
||||
'^src/gallium/auxiliary/tgsi/' : ['TGSI']
|
||||
'^src/gallium/docs/' : ['gallium']
|
||||
'^src/gallium/drivers/asahi/' : ['asahi']
|
||||
'^src/gallium/drivers/crocus/' : ['crocus']
|
||||
'^src/gallium/drivers/d3d12/' : ['d3d12']
|
||||
'^src/gallium/drivers/etnaviv/' : ['etnaviv']
|
||||
'^src/gallium/drivers/freedreno/' : ['freedreno']
|
||||
'^src/gallium/drivers/grate/' : ['tegra']
|
||||
'^src/gallium/drivers/i915/' : ['i915g']
|
||||
'^src/gallium/drivers/iris/' : ['iris']
|
||||
'^src/gallium/drivers/lima/' : ['lima']
|
||||
'^src/gallium/drivers/llvmpipe/' : ['llvmpipe']
|
||||
'^src/gallium/drivers/nouveau/' : ['nouveau']
|
||||
'^src/gallium/drivers/nouveau/nv30' : ['nv30']
|
||||
'^src/gallium/drivers/nouveau/nv50' : ['nv50']
|
||||
'^src/gallium/drivers/nouveau/nvc0' : ['nvc0']
|
||||
'^src/gallium/drivers/panfrost/' : ['panfrost']
|
||||
'^src/gallium/drivers/r300/' : ['r300']
|
||||
'^src/gallium/drivers/r600/' : ['r600']
|
||||
'^src/gallium/drivers/radeonsi' : ['radeonsi']
|
||||
'^src/gallium/drivers/softpipe' : ['softpipe']
|
||||
'^src/gallium/drivers/svga/' : ['svga']
|
||||
'^src/gallium/drivers/swr/' : ['swr']
|
||||
'^src/gallium/drivers/tegra/' : ['tegra']
|
||||
'^src/gallium/drivers/v3d/' : ['v3d']
|
||||
'^src/gallium/drivers/vc4/' : ['vc4']
|
||||
'^src/gallium/drivers/virgl/' : ['virgl']
|
||||
'^src/gallium/drivers/zink/' : ['zink']
|
||||
'^src/gallium/frontends/clover/' : ['clover']
|
||||
'^src/gallium/frontends/dri/' : ['gallium']
|
||||
'^src/gallium/frontends/glx/' : ['GLX']
|
||||
'^src/gallium/frontends/hgl/' : ['haiku']
|
||||
'^src/gallium/frontends/lavapipe/' : ['lavapipe']
|
||||
'^src/gallium/frontends/nine/' : ['nine']
|
||||
'^src/gallium/frontends/omx/' : ['omx']
|
||||
'^src/gallium/frontends/osmesa/' : ['osmesa']
|
||||
'^src/gallium/frontends/rusticl/' : ['Rusticl']
|
||||
'^src/gallium/frontends/va/' : ['VA-API']
|
||||
'^src/gallium/frontends/vdpau/' : ['VDPAU']
|
||||
'^src/gallium/frontends/wgl/' : ['wgl']
|
||||
# '^src/gallium/frontends/xa/' : ['']
|
||||
'^src/gallium/include/' : ['gallium']
|
||||
'^src/gallium/targets/' : ['gallium']
|
||||
'^src/gallium/targets/opencl/' : ['clover']
|
||||
'^src/gallium/targets/osmesa/' : ['osmesa']
|
||||
'^src/gallium/targets/rusticl/' : ['Rusticl']
|
||||
'^src/gallium/tests/' : ['gallium']
|
||||
'^src/gallium/tools/' : ['gallium']
|
||||
# '^src/gallium/winsys/amdgpu/' : ['']
|
||||
'^src/gallium/winsys/crocus/' : ['crocus']
|
||||
'^src/gallium/winsys/d3d12/' : ['d3d12']
|
||||
'^src/gallium/winsys/etnaviv/' : ['etnaviv']
|
||||
'^src/gallium/winsys/freedreno/' : ['freedreno']
|
||||
'^src/gallium/winsys/grate/' : ['tegra']
|
||||
'^src/gallium/winsys/i915/' : ['i915g']
|
||||
'^src/gallium/winsys/iris/' : ['iris']
|
||||
# '^src/gallium/winsys/kmsro/' : ['']
|
||||
'^src/gallium/winsys/lima/' : ['lima']
|
||||
'^src/gallium/winsys/nouveau/' : ['nouveau']
|
||||
'^src/gallium/winsys/panfrost/' : ['panfrost']
|
||||
# '^src/gallium/winsys/radeon/' : ['radeon']
|
||||
'^src/gallium/winsys/svga/' : ['svga']
|
||||
# '^src/gallium/winsys/sw/' : ['']
|
||||
'^src/gallium/winsys/sw/gdi/' : ['wgl']
|
||||
'^src/gallium/winsys/tegra/' : ['tegra']
|
||||
'^src/gallium/winsys/v3d/' : ['v3d']
|
||||
'^src/gallium/winsys/vc4/' : ['vc4']
|
||||
'^src/gallium/winsys/virgl/' : ['virgl']
|
||||
'^src/gbm/' : ['gbm']
|
||||
'^src/glx/' : ['GLX']
|
||||
'^src/imagination/' : ['powervr']
|
||||
'^src/intel/blorp/' : ['blorp']
|
||||
'^src/intel/common/' : ['intel']
|
||||
'^src/intel/compiler/' : ['intel-compiler']
|
||||
'^src/intel/compiler/brw' : ['intel-brw']
|
||||
'^src/intel/compiler/elk' : ['intel-elk']
|
||||
'^src/intel/dev/' : ['intel']
|
||||
'^src/intel/ds/' : ['intel']
|
||||
'^src/intel/genxml/' : ['intel']
|
||||
'^src/intel/isl/' : ['ISL']
|
||||
'^src/intel/nullhw-layer/' : ['intel']
|
||||
'^src/intel/perf/' : ['intel']
|
||||
'^src/intel/tools/' : ['intel-tools']
|
||||
'^src/intel/vulkan/' : ['ANV']
|
||||
'^src/intel/vulkan_hasvk/' : ['hasvk']
|
||||
'^src/loader/' : ['loader']
|
||||
'^src/mapi/' : ['mapi']
|
||||
'^src/mesa/drivers/dri/i915/' : ['i915']
|
||||
'^src/mesa/drivers/dri/i965/' : ['i965']
|
||||
'^src/mesa/drivers/dri/nouveau/' : ['vieux']
|
||||
'^src/mesa/drivers/dri/r200/' : ['r200']
|
||||
'^src/mesa/drivers/dri/radeon/' : ['radeon']
|
||||
'^src/mesa/drivers/dri/swrast/' : ['swrast']
|
||||
'^src/mesa/drivers/osmesa' : ['osmesa']
|
||||
'^src/mesa/main/' : ['mesa']
|
||||
'^src/mesa/state_tracker/.*glsl.*' : ['GLSL']
|
||||
'^src/mesa/state_tracker/.*tgsi.*' : ['TGSI']
|
||||
'^src/mesa/state_tracker/.*nir.*' : ['NIR']
|
||||
'^src/microsoft/clc/' : ['d3d12']
|
||||
'^src/microsoft/compiler/' : ['d3d12']
|
||||
'^src/microsoft/spirv_to_dxil/' : ['dozen']
|
||||
'^src/microsoft/vulkan/' : ['dozen']
|
||||
'^src/nouveau/codegen/' : ['nouveau']
|
||||
'^src/nouveau/compiler/' : ['NAK']
|
||||
'^src/nouveau/drm-shim/' : ['nouveau']
|
||||
'^src/nouveau/mme/' : ['NVK']
|
||||
'^src/nouveau/nil/' : ['NVK']
|
||||
'^src/nouveau/nvidia-headers/' : ['NVK']
|
||||
'^src/nouveau/vulkan/' : ['NVK']
|
||||
'^src/nouveau/winsys/' : ['NVK']
|
||||
'^src/panfrost/' : ['panfrost']
|
||||
'^src/virtio/vulkan/' : ['venus']
|
||||
'^src/virtio/venus-protocol/' : ['venus']
|
||||
'^src/virtio/ci/' : ['venus']
|
||||
'^src/util/' : ['util']
|
||||
'^src/util/00-mesa-defaults.conf' : ['drirc']
|
||||
'^src/vulkan/' : ['vulkan']
|
||||
'^VERSION$' : ['maintainer-scripts']
|
||||
|
||||
'Android': ['android']
|
||||
'EGL': ['EGL']
|
||||
'meson.build': ['meson']
|
||||
'wayland': ['wayland']
|
||||
'Android' : ['android']
|
||||
'EGL' : ['EGL']
|
||||
'meson.build' : ['meson']
|
||||
'wayland' : ['wayland']
|
||||
|
53512
.pick_status.json
53512
.pick_status.json
File diff suppressed because it is too large
Load Diff
@@ -13,8 +13,8 @@ Build & install
|
||||
---------------
|
||||
|
||||
You can find more information in our documentation (`docs/install.rst
|
||||
<https://docs.mesa3d.org/install.html>`_), but the recommended way is to use
|
||||
Meson (`docs/meson.rst <https://docs.mesa3d.org/meson.html>`_):
|
||||
<https://mesa3d.org/install.html>`_), but the recommended way is to use
|
||||
Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_):
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
@@ -46,7 +46,7 @@ Bug reports
|
||||
-----------
|
||||
|
||||
If you think something isn't working properly, please file a bug report
|
||||
(`docs/bugs.rst <https://docs.mesa3d.org/bugs.html>`_).
|
||||
(`docs/bugs.rst <https://mesa3d.org/bugs.html>`_).
|
||||
|
||||
|
||||
Contributing
|
||||
@@ -54,6 +54,6 @@ Contributing
|
||||
|
||||
Contributions are welcome, and step-by-step instructions can be found in our
|
||||
documentation (`docs/submittingpatches.rst
|
||||
<https://docs.mesa3d.org/submittingpatches.html>`_).
|
||||
<https://mesa3d.org/submittingpatches.html>`_).
|
||||
|
||||
Note that Mesa uses gitlab for patches submission, review and discussions.
|
||||
|
@@ -27,12 +27,6 @@ LOCAL_PATH := $(call my-dir)
|
||||
MESA3D_TOP := $(dir $(LOCAL_PATH))
|
||||
|
||||
LIBDRM_VERSION = $(shell cat external/libdrm/meson.build | grep -o "\<version\>\s*:\s*'\w*\.\w*\.\w*'" | grep -o "\w*\.\w*\.\w*" | head -1)
|
||||
LLVM_VERSION_MAJOR = $(shell \
|
||||
if [ -f external/llvm-project/cmake/Modules/LLVMVersion.cmake ]; then \
|
||||
grep 'set.LLVM_VERSION_MAJOR ' external/llvm-project/cmake/Modules/LLVMVersion.cmake | grep -o '[0-9]\+'; \
|
||||
else \
|
||||
grep 'set.LLVM_VERSION_MAJOR ' external/llvm-project/llvm/CMakeLists.txt | grep -o '[0-9]\+'; \
|
||||
fi)
|
||||
|
||||
MESA_VK_LIB_SUFFIX_amd := radeon
|
||||
MESA_VK_LIB_SUFFIX_intel := intel
|
||||
@@ -92,8 +86,8 @@ MESON_GEN_PKGCONFIGS += DirectX-Headers
|
||||
endif
|
||||
|
||||
ifneq ($(MESON_GEN_LLVM_STUB),)
|
||||
MESON_LLVM_VERSION := $(LLVM_VERSION_MAJOR).0.0
|
||||
LOCAL_SHARED_LIBRARIES += libLLVM$(LLVM_VERSION_MAJOR)
|
||||
MESON_LLVM_VERSION := 12.0.0
|
||||
LOCAL_SHARED_LIBRARIES += libLLVM12
|
||||
endif
|
||||
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 30; echo $$?), 0)
|
||||
@@ -163,9 +157,9 @@ endif
|
||||
endef
|
||||
|
||||
ifneq ($(strip $(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||
# Module 'libgallium_dri', produces '/vendor/lib{64}/libgallium_dri.so'
|
||||
# Module 'libgallium_dri', produces '/vendor/lib{64}/dri/libgallium_dri.so'
|
||||
# This module also trigger DRI symlinks creation process
|
||||
$(eval $(call mesa3d-lib,libgallium_dri,,MESA3D_GALLIUM_BIN))
|
||||
$(eval $(call mesa3d-lib,libgallium_dri,dri,MESA3D_GALLIUM_DRI_BIN))
|
||||
# Module 'libglapi', produces '/vendor/lib{64}/libglapi.so'
|
||||
$(eval $(call mesa3d-lib,libglapi,,MESA3D_LIBGLAPI_BIN))
|
||||
|
||||
|
@@ -63,8 +63,8 @@ MESON_OUT_DIR := $($(M_TARGET_PREFIX)TARGET_OUT_INTER
|
||||
MESON_GEN_DIR := $(MESON_OUT_DIR)_GEN
|
||||
MESON_GEN_FILES_TARGET := $(MESON_GEN_DIR)/.timestamp
|
||||
|
||||
MESA3D_GALLIUM_DIR := $(MESON_OUT_DIR)/install/usr/local/lib
|
||||
$(M_TARGET_PREFIX)MESA3D_GALLIUM_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libgallium_dri.so
|
||||
MESA3D_GALLIUM_DRI_DIR := $(MESON_OUT_DIR)/install/usr/local/lib/dri
|
||||
$(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libgallium_dri.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libEGL.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv1_CM.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv2.so
|
||||
@@ -73,7 +73,6 @@ $(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN := $(MESON_OUT_DIR)/install/usr/local/l
|
||||
|
||||
|
||||
MESA3D_GLES_BINS := \
|
||||
$($(M_TARGET_PREFIX)MESA3D_GALLIUM_BIN) \
|
||||
$($(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN) \
|
||||
$($(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN) \
|
||||
$($(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN) \
|
||||
@@ -285,11 +284,16 @@ endif
|
||||
$(MESON_BUILD)
|
||||
touch $@
|
||||
|
||||
MESON_COPY_LIBGALLIUM := \
|
||||
cp `ls -1 $(MESA3D_GALLIUM_DRI_DIR)/* | head -1` $($(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN)
|
||||
|
||||
$(MESON_OUT_DIR)/install/.install.timestamp: MESON_COPY_LIBGALLIUM:=$(MESON_COPY_LIBGALLIUM)
|
||||
$(MESON_OUT_DIR)/install/.install.timestamp: MESON_BUILD:=$(MESON_BUILD)
|
||||
$(MESON_OUT_DIR)/install/.install.timestamp: $(MESON_OUT_DIR)/.build.timestamp
|
||||
rm -rf $(dir $@)
|
||||
mkdir -p $(dir $@)
|
||||
DESTDIR=$(call relative-to-absolute,$(dir $@)) $(MESON_BUILD) install
|
||||
$(if $(BOARD_MESA3D_GALLIUM_DRIVERS),$(MESON_COPY_LIBGALLIUM))
|
||||
touch $@
|
||||
|
||||
$($(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN) $(MESA3D_GLES_BINS): $(MESON_OUT_DIR)/install/.install.timestamp
|
||||
@@ -304,3 +308,14 @@ $(MESON_OUT_DIR)/install/usr/local/lib/libvulkan_$(MESA_VK_LIB_SUFFIX_$1).so: $(
|
||||
endef
|
||||
|
||||
$(foreach driver,$(BOARD_MESA3D_VULKAN_DRIVERS), $(eval $(call vulkan_target,$(driver))))
|
||||
|
||||
$($(M_TARGET_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES)/dri/.symlinks.timestamp: MESA3D_GALLIUM_DRI_DIR:=$(MESA3D_GALLIUM_DRI_DIR)
|
||||
$($(M_TARGET_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES)/dri/.symlinks.timestamp: $(MESON_OUT_DIR)/install/.install.timestamp
|
||||
# Create Symlinks
|
||||
mkdir -p $(dir $@)
|
||||
ls -1 $(MESA3D_GALLIUM_DRI_DIR)/ | PATH=/usr/bin:$$PATH xargs -I{} ln -s -f libgallium_dri.so $(dir $@)/{}
|
||||
touch $@
|
||||
|
||||
$($(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN): $(TARGET_OUT_VENDOR)/$(MESA3D_LIB_DIR)/dri/.symlinks.timestamp
|
||||
echo "Build $@"
|
||||
touch $@
|
||||
|
@@ -21,7 +21,7 @@ from concurrent.futures import ThreadPoolExecutor
|
||||
from functools import partial
|
||||
from itertools import chain
|
||||
from subprocess import check_output, CalledProcessError
|
||||
from typing import Dict, TYPE_CHECKING, Iterable, Literal, Optional, Tuple
|
||||
from typing import TYPE_CHECKING, Iterable, Literal, Optional
|
||||
|
||||
import gitlab
|
||||
import gitlab.v4.objects
|
||||
@@ -53,119 +53,90 @@ STATUS_COLORS = {
|
||||
"success": Fore.GREEN,
|
||||
"failed": Fore.RED,
|
||||
"canceled": Fore.MAGENTA,
|
||||
"canceling": Fore.MAGENTA,
|
||||
"manual": "",
|
||||
"pending": "",
|
||||
"skipped": "",
|
||||
}
|
||||
|
||||
COMPLETED_STATUSES = {"success", "failed"}
|
||||
RUNNING_STATUSES = {"created", "pending", "running"}
|
||||
COMPLETED_STATUSES = ["success", "failed"]
|
||||
|
||||
|
||||
def print_job_status(
|
||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
||||
new_status: bool = False,
|
||||
job_name_field_pad: int = 0,
|
||||
) -> None:
|
||||
def print_job_status(job, new_status=False) -> None:
|
||||
"""It prints a nice, colored job status with a link to the job."""
|
||||
if job.status in {"canceled", "canceling"}:
|
||||
if job.status == "canceled":
|
||||
return
|
||||
|
||||
if new_status and job.status == "created":
|
||||
return
|
||||
|
||||
job_name_field_pad = len(job.name) if job_name_field_pad < 1 else job_name_field_pad
|
||||
|
||||
duration = job_duration(job)
|
||||
if job.duration:
|
||||
duration = job.duration
|
||||
elif job.started_at:
|
||||
duration = time.perf_counter() - time.mktime(job.started_at.timetuple())
|
||||
|
||||
print(
|
||||
STATUS_COLORS[job.status]
|
||||
+ "🞋 target job " # U+1F78B Round target
|
||||
+ link2print(job.web_url, job.name, job_name_field_pad)
|
||||
+ (f"has new status: {job.status}" if new_status else f"{job.status}")
|
||||
+ "🞋 job "
|
||||
+ URL_START
|
||||
+ f"{job.web_url}\a{job.name}"
|
||||
+ URL_END
|
||||
+ (f" has new status: {job.status}" if new_status else f" :: {job.status}")
|
||||
+ (f" ({pretty_duration(duration)})" if job.started_at else "")
|
||||
+ Style.RESET_ALL
|
||||
)
|
||||
|
||||
|
||||
def job_duration(job: gitlab.v4.objects.ProjectPipelineJob) -> float:
|
||||
"""
|
||||
Given a job, report the time lapsed in execution.
|
||||
:param job: Pipeline job
|
||||
:return: Current time in execution
|
||||
"""
|
||||
if job.duration:
|
||||
return job.duration
|
||||
elif job.started_at:
|
||||
return time.perf_counter() - time.mktime(job.started_at.timetuple())
|
||||
return 0.0
|
||||
|
||||
|
||||
def pretty_wait(sec: int) -> None:
|
||||
"""shows progressbar in dots"""
|
||||
for val in range(sec, 0, -1):
|
||||
print(f"⏲ {val} seconds", end="\r") # U+23F2 Timer clock
|
||||
print(f"⏲ {val} seconds", end="\r")
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def monitor_pipeline(
|
||||
project: gitlab.v4.objects.Project,
|
||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||
project,
|
||||
pipeline,
|
||||
target_jobs_regex: re.Pattern,
|
||||
dependencies: set[str],
|
||||
dependencies,
|
||||
force_manual: bool,
|
||||
stress: int,
|
||||
) -> tuple[Optional[int], Optional[int], Dict[str, Dict[int, Tuple[float, str, str]]]]:
|
||||
) -> tuple[Optional[int], Optional[int]]:
|
||||
"""Monitors pipeline and delegate canceling jobs"""
|
||||
statuses: dict[str, str] = defaultdict(str)
|
||||
target_statuses: dict[str, str] = defaultdict(str)
|
||||
stress_status_counter: dict[str, dict[str, int]] = defaultdict(lambda: defaultdict(int))
|
||||
execution_times = defaultdict(lambda: defaultdict(tuple))
|
||||
target_id: int = -1
|
||||
name_field_pad: int = len(max(dependencies, key=len))+2
|
||||
|
||||
# Pre-populate the stress status counter for already completed target jobs.
|
||||
if stress:
|
||||
# When stress test, it is necessary to collect this information before start.
|
||||
for job in pipeline.jobs.list(all=True, include_retried=True):
|
||||
if target_jobs_regex.fullmatch(job.name) and job.status in COMPLETED_STATUSES:
|
||||
stress_status_counter[job.name][job.status] += 1
|
||||
execution_times[job.name][job.id] = (job_duration(job), job.status, job.web_url)
|
||||
stress_status_counter = defaultdict(lambda: defaultdict(int))
|
||||
target_id = None
|
||||
|
||||
while True:
|
||||
deps_failed = []
|
||||
to_cancel = []
|
||||
for job in sorted(pipeline.jobs.list(all=True), key=lambda j: j.name):
|
||||
for job in pipeline.jobs.list(all=True, sort="desc"):
|
||||
# target jobs
|
||||
if target_jobs_regex.fullmatch(job.name):
|
||||
target_id = job.id
|
||||
target_status = job.status
|
||||
|
||||
if stress and target_status in COMPLETED_STATUSES:
|
||||
if stress and job.status in ["success", "failed"]:
|
||||
if (
|
||||
stress < 0
|
||||
or sum(stress_status_counter[job.name].values()) < stress
|
||||
):
|
||||
stress_status_counter[job.name][target_status] += 1
|
||||
execution_times[job.name][job.id] = (job_duration(job), target_status, job.web_url)
|
||||
job = enable_job(project, pipeline, job, "retry", force_manual, name_field_pad)
|
||||
job = enable_job(project, pipeline, job, "retry", force_manual)
|
||||
stress_status_counter[job.name][job.status] += 1
|
||||
else:
|
||||
execution_times[job.name][job.id] = (job_duration(job), target_status, job.web_url)
|
||||
job = enable_job(project, pipeline, job, "target", force_manual, name_field_pad)
|
||||
job = enable_job(project, pipeline, job, "target", force_manual)
|
||||
|
||||
print_job_status(job, target_status not in target_statuses[job.name], name_field_pad)
|
||||
target_statuses[job.name] = target_status
|
||||
print_job_status(job, job.status not in target_statuses[job.name])
|
||||
target_statuses[job.name] = job.status
|
||||
continue
|
||||
|
||||
# all other non-target jobs
|
||||
# all jobs
|
||||
if job.status != statuses[job.name]:
|
||||
print_job_status(job, True, name_field_pad)
|
||||
print_job_status(job, True)
|
||||
statuses[job.name] = job.status
|
||||
|
||||
# run dependencies and cancel the rest
|
||||
if job.name in dependencies:
|
||||
job = enable_job(project, pipeline, job, "dep", True, name_field_pad)
|
||||
job = enable_job(project, pipeline, job, "dep", True)
|
||||
if job.status == "failed":
|
||||
deps_failed.append(job.name)
|
||||
else:
|
||||
@@ -175,9 +146,9 @@ def monitor_pipeline(
|
||||
|
||||
if stress:
|
||||
enough = True
|
||||
for job_name, status in sorted(stress_status_counter.items()):
|
||||
for job_name, status in stress_status_counter.items():
|
||||
print(
|
||||
f"* {job_name:{name_field_pad}}succ: {status['success']}; "
|
||||
f"{job_name}\tsucc: {status['success']}; "
|
||||
f"fail: {status['failed']}; "
|
||||
f"total: {sum(status.values())} of {stress}",
|
||||
flush=False,
|
||||
@@ -191,20 +162,20 @@ def monitor_pipeline(
|
||||
|
||||
print("---------------------------------", flush=False)
|
||||
|
||||
if len(target_statuses) == 1 and RUNNING_STATUSES.intersection(
|
||||
if len(target_statuses) == 1 and {"running"}.intersection(
|
||||
target_statuses.values()
|
||||
):
|
||||
return target_id, None, execution_times
|
||||
return target_id, None
|
||||
|
||||
if (
|
||||
{"failed"}.intersection(target_statuses.values())
|
||||
and not RUNNING_STATUSES.intersection(target_statuses.values())
|
||||
and not set(["running", "pending"]).intersection(target_statuses.values())
|
||||
):
|
||||
return None, 1, execution_times
|
||||
return None, 1
|
||||
|
||||
if (
|
||||
{"skipped"}.intersection(target_statuses.values())
|
||||
and not RUNNING_STATUSES.intersection(target_statuses.values())
|
||||
and not {"running", "pending"}.intersection(target_statuses.values())
|
||||
):
|
||||
print(
|
||||
Fore.RED,
|
||||
@@ -212,20 +183,20 @@ def monitor_pipeline(
|
||||
deps_failed,
|
||||
Fore.RESET,
|
||||
)
|
||||
return None, 1, execution_times
|
||||
return None, 1
|
||||
|
||||
if {"success", "manual"}.issuperset(target_statuses.values()):
|
||||
return None, 0, execution_times
|
||||
return None, 0
|
||||
|
||||
pretty_wait(REFRESH_WAIT_JOBS)
|
||||
|
||||
|
||||
def get_pipeline_job(
|
||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||
job_id: int,
|
||||
id: int,
|
||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
||||
pipeline_jobs = pipeline.jobs.list(all=True)
|
||||
return [j for j in pipeline_jobs if j.id == job_id][0]
|
||||
return [j for j in pipeline_jobs if j.id == id][0]
|
||||
|
||||
|
||||
def enable_job(
|
||||
@@ -234,19 +205,18 @@ def enable_job(
|
||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
||||
action_type: Literal["target", "dep", "retry"],
|
||||
force_manual: bool,
|
||||
job_name_field_pad: int = 0,
|
||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
||||
"""enable job"""
|
||||
if (
|
||||
(job.status in COMPLETED_STATUSES and action_type != "retry")
|
||||
(job.status in ["success", "failed"] and action_type != "retry")
|
||||
or (job.status == "manual" and not force_manual)
|
||||
or job.status in {"skipped"} | RUNNING_STATUSES
|
||||
or job.status in ["skipped", "running", "created", "pending"]
|
||||
):
|
||||
return job
|
||||
|
||||
pjob = project.jobs.get(job.id, lazy=True)
|
||||
|
||||
if job.status in {"success", "failed", "canceled", "canceling"}:
|
||||
if job.status in ["success", "failed", "canceled"]:
|
||||
new_job = pjob.retry()
|
||||
job = get_pipeline_job(pipeline, new_job["id"])
|
||||
else:
|
||||
@@ -254,34 +224,32 @@ def enable_job(
|
||||
job = get_pipeline_job(pipeline, pjob.id)
|
||||
|
||||
if action_type == "target":
|
||||
jtype = "🞋 target" # U+1F78B Round target
|
||||
jtype = "🞋 "
|
||||
elif action_type == "retry":
|
||||
jtype = "↻ retrying" # U+21BB Clockwise open circle arrow
|
||||
jtype = "↻"
|
||||
else:
|
||||
jtype = "↪ dependency" # U+21AA Left Arrow Curving Right
|
||||
jtype = "(dependency)"
|
||||
|
||||
job_name_field_pad = len(job.name) if job_name_field_pad < 1 else job_name_field_pad
|
||||
print(Fore.MAGENTA + f"{jtype} job {job.name:{job_name_field_pad}}manually enabled" + Style.RESET_ALL)
|
||||
print(Fore.MAGENTA + f"{jtype} job {job.name} manually enabled" + Style.RESET_ALL)
|
||||
|
||||
return job
|
||||
|
||||
|
||||
def cancel_job(
|
||||
project: gitlab.v4.objects.Project,
|
||||
job: gitlab.v4.objects.ProjectPipelineJob
|
||||
) -> None:
|
||||
def cancel_job(project, job) -> None:
|
||||
"""Cancel GitLab job"""
|
||||
if job.status not in RUNNING_STATUSES:
|
||||
if job.status in [
|
||||
"canceled",
|
||||
"success",
|
||||
"failed",
|
||||
"skipped",
|
||||
]:
|
||||
return
|
||||
pjob = project.jobs.get(job.id, lazy=True)
|
||||
pjob.cancel()
|
||||
print(f"🗙 {job.name}", end=" ") # U+1F5D9 Cancellation X
|
||||
print(f"♲ {job.name}", end=" ")
|
||||
|
||||
|
||||
def cancel_jobs(
|
||||
project: gitlab.v4.objects.Project,
|
||||
to_cancel: list
|
||||
) -> None:
|
||||
def cancel_jobs(project, to_cancel) -> None:
|
||||
"""Cancel unwanted GitLab jobs"""
|
||||
if not to_cancel:
|
||||
return
|
||||
@@ -292,10 +260,7 @@ def cancel_jobs(
|
||||
print()
|
||||
|
||||
|
||||
def print_log(
|
||||
project: gitlab.v4.objects.Project,
|
||||
job_id: int
|
||||
) -> None:
|
||||
def print_log(project, job_id) -> None:
|
||||
"""Print job log into output"""
|
||||
printed_lines = 0
|
||||
while True:
|
||||
@@ -313,7 +278,7 @@ def print_log(
|
||||
pretty_wait(REFRESH_WAIT_LOG)
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
def parse_args() -> None:
|
||||
"""Parse args"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Tool to trigger a subset of container jobs "
|
||||
@@ -324,8 +289,7 @@ def parse_args() -> argparse.Namespace:
|
||||
parser.add_argument(
|
||||
"--target",
|
||||
metavar="target-job",
|
||||
help="Target job regex. For multiple targets, pass multiple values, "
|
||||
"eg. `--target foo bar`.",
|
||||
help="Target job regex. For multiple targets, separate with pipe | character",
|
||||
required=True,
|
||||
nargs=argparse.ONE_OR_MORE,
|
||||
)
|
||||
@@ -344,9 +308,7 @@ def parse_args() -> argparse.Namespace:
|
||||
"--stress",
|
||||
default=0,
|
||||
type=int,
|
||||
help="Stresstest job(s). Specify the number of times to rerun the selected jobs, "
|
||||
"or use -1 for indefinite. Defaults to 0. If jobs have already been executed, "
|
||||
"this will ensure the total run count respects the specified number.",
|
||||
help="Stresstest job(s). Number or repetitions or -1 for infinite.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--project",
|
||||
@@ -381,14 +343,12 @@ def parse_args() -> argparse.Namespace:
|
||||
|
||||
|
||||
def print_detected_jobs(
|
||||
target_dep_dag: "Dag",
|
||||
dependency_jobs: Iterable[str],
|
||||
target_jobs: Iterable[str],
|
||||
target_dep_dag: "Dag", dependency_jobs: Iterable[str], target_jobs: Iterable[str]
|
||||
) -> None:
|
||||
def print_job_set(color: str, kind: str, job_set: Iterable[str]):
|
||||
print(
|
||||
color + f"Running {len(job_set)} {kind} jobs: ",
|
||||
"\n\t",
|
||||
"\n",
|
||||
", ".join(sorted(job_set)),
|
||||
Fore.RESET,
|
||||
"\n",
|
||||
@@ -400,12 +360,10 @@ def print_detected_jobs(
|
||||
print_job_set(Fore.BLUE, "target", target_jobs)
|
||||
|
||||
|
||||
def find_dependencies(
|
||||
token: str | None,
|
||||
target_jobs_regex: re.Pattern,
|
||||
project_path: str,
|
||||
iid: int
|
||||
) -> set[str]:
|
||||
def find_dependencies(token: str | None,
|
||||
target_jobs_regex: re.Pattern,
|
||||
project_path: str,
|
||||
iid: int) -> set[str]:
|
||||
"""
|
||||
Find the dependencies of the target jobs in a GitLab pipeline.
|
||||
|
||||
@@ -442,45 +400,7 @@ def find_dependencies(
|
||||
return target_jobs.union(dependency_jobs)
|
||||
|
||||
|
||||
def print_monitor_summary(
|
||||
execution_collection: Dict[str, Dict[int, Tuple[float, str, str]]],
|
||||
t_start: float,
|
||||
) -> None:
|
||||
"""Summary of the test execution"""
|
||||
t_end = time.perf_counter()
|
||||
spend_minutes = (t_end - t_start) / 60
|
||||
print(f"⏲ Duration of script execution: {spend_minutes:0.1f} minutes") # U+23F2 Timer clock
|
||||
if len(execution_collection) == 0:
|
||||
return
|
||||
print(f"⏲ Jobs execution times:") # U+23F2 Timer clock
|
||||
job_names = list(execution_collection.keys())
|
||||
job_names.sort()
|
||||
name_field_pad = len(max(job_names, key=len)) + 2
|
||||
for name in job_names:
|
||||
job_executions = execution_collection[name]
|
||||
job_times = ', '.join([__job_duration_record(job_execution)
|
||||
for job_execution in sorted(job_executions.items())])
|
||||
print(f"* {name:{name_field_pad}}: ({len(job_executions)}) {job_times}")
|
||||
|
||||
|
||||
def __job_duration_record(dict_item: tuple) -> str:
|
||||
"""
|
||||
Format each pair of job and its duration.
|
||||
:param job_execution: item of execution_collection[name][idn]: Dict[int, Tuple[float, str, str]]
|
||||
"""
|
||||
job_id = f"{dict_item[0]}" # dictionary key
|
||||
job_duration, job_status, job_url = dict_item[1] # dictionary value, the tuple
|
||||
return (f"{STATUS_COLORS[job_status]}"
|
||||
f"{link2print(job_url, job_id)}: {pretty_duration(job_duration):>8}"
|
||||
f"{Style.RESET_ALL}")
|
||||
|
||||
|
||||
def link2print(url: str, text: str, text_pad: int = 0) -> str:
|
||||
text_pad = len(text) if text_pad < 1 else text_pad
|
||||
return f"{URL_START}{url}\a{text:{text_pad}}{URL_END}"
|
||||
|
||||
|
||||
def main() -> None:
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
t_start = time.perf_counter()
|
||||
|
||||
@@ -542,7 +462,8 @@ def main() -> None:
|
||||
target = '|'.join(args.target)
|
||||
target = target.strip()
|
||||
|
||||
print("🞋 target job: " + Fore.BLUE + target + Style.RESET_ALL) # U+1F78B Round target
|
||||
deps = set()
|
||||
print("🞋 job: " + Fore.BLUE + target + Style.RESET_ALL)
|
||||
|
||||
# Implicitly include `parallel:` jobs
|
||||
target = f'({target})' + r'( \d+/\d+)?'
|
||||
@@ -555,19 +476,17 @@ def main() -> None:
|
||||
iid=pipe.iid,
|
||||
project_path=cur_project
|
||||
)
|
||||
target_job_id, ret, exec_t = monitor_pipeline(
|
||||
target_job_id, ret = monitor_pipeline(
|
||||
cur_project, pipe, target_jobs_regex, deps, args.force_manual, args.stress
|
||||
)
|
||||
|
||||
if target_job_id:
|
||||
print_log(cur_project, target_job_id)
|
||||
|
||||
print_monitor_summary(exec_t, t_start)
|
||||
t_end = time.perf_counter()
|
||||
spend_minutes = (t_end - t_start) / 60
|
||||
print(f"⏲ Duration of script execution: {spend_minutes:0.1f} minutes")
|
||||
|
||||
sys.exit(ret)
|
||||
except KeyboardInterrupt:
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@@ -37,25 +37,21 @@ def pretty_duration(seconds):
|
||||
hours, rem = divmod(seconds, 3600)
|
||||
minutes, seconds = divmod(rem, 60)
|
||||
if hours:
|
||||
return f"{hours:0.0f}h{minutes:02.0f}m{seconds:02.0f}s"
|
||||
return f"{hours:0.0f}h{minutes:0.0f}m{seconds:0.0f}s"
|
||||
if minutes:
|
||||
return f"{minutes:0.0f}m{seconds:02.0f}s"
|
||||
return f"{minutes:0.0f}m{seconds:0.0f}s"
|
||||
return f"{seconds:0.0f}s"
|
||||
|
||||
|
||||
def get_gitlab_pipeline_from_url(gl, pipeline_url) -> tuple:
|
||||
"""
|
||||
Extract the project and pipeline object from the url string
|
||||
:param gl: Gitlab object
|
||||
:param pipeline_url: string with a url to a pipeline
|
||||
:return: ProjectPipeline, Project objects
|
||||
"""
|
||||
pattern = rf"^{re.escape(GITLAB_URL)}/(.*)/-/pipelines/([0-9]+)$"
|
||||
match = re.match(pattern, pipeline_url)
|
||||
if not match:
|
||||
raise AssertionError(f"url {pipeline_url} doesn't follow the pattern {pattern}")
|
||||
namespace_with_project, pipeline_id = match.groups()
|
||||
cur_project = gl.projects.get(namespace_with_project)
|
||||
def get_gitlab_pipeline_from_url(gl, pipeline_url):
|
||||
assert pipeline_url.startswith(GITLAB_URL)
|
||||
url_path = pipeline_url[len(GITLAB_URL) :]
|
||||
url_path_components = url_path.split("/")
|
||||
project_name = "/".join(url_path_components[1:3])
|
||||
assert url_path_components[3] == "-"
|
||||
assert url_path_components[4] == "pipelines"
|
||||
pipeline_id = int(url_path_components[5])
|
||||
cur_project = gl.projects.get(project_name)
|
||||
pipe = cur_project.pipelines.get(pipeline_id)
|
||||
return pipe, cur_project
|
||||
|
||||
|
@@ -331,8 +331,10 @@ def filter_dag(dag: Dag, regex: Pattern) -> Dag:
|
||||
|
||||
|
||||
def print_dag(dag: Dag) -> None:
|
||||
for job, data in sorted(dag.items()):
|
||||
print(f"{job}:\n\t{' '.join(data['needs'])}\n")
|
||||
for job, data in dag.items():
|
||||
print(f"{job}:")
|
||||
print(f"\t{' '.join(data['needs'])}")
|
||||
print()
|
||||
|
||||
|
||||
def fetch_merged_yaml(gl_gql: GitlabGQL, params) -> dict[str, Any]:
|
||||
|
@@ -1,175 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright © 2020 - 2024 Collabora Ltd.
|
||||
# Authors:
|
||||
# David Heidelberg <david.heidelberg@collabora.com>
|
||||
# Sergi Blanch Torne <sergi.blanch.torne@collabora.com>
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
"""
|
||||
Compare the two latest scheduled pipelines and provide information
|
||||
about the jobs you're interested in.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import re
|
||||
import requests
|
||||
import io
|
||||
from tabulate import tabulate
|
||||
|
||||
import gitlab
|
||||
from colorama import Fore, Style
|
||||
from gitlab_common import read_token
|
||||
|
||||
|
||||
MARGE_BOT_USER_ID = 9716
|
||||
|
||||
def print_failures_csv(id):
|
||||
url = 'https://gitlab.freedesktop.org/mesa/mesa/-/jobs/' + str(id) + '/artifacts/raw/results/failures.csv'
|
||||
missing: int = 0
|
||||
MAX_MISS: int = 20
|
||||
try:
|
||||
response = requests.get(url)
|
||||
response.raise_for_status()
|
||||
csv_content = io.StringIO(response.text)
|
||||
csv_reader = csv.reader(csv_content)
|
||||
data = list(csv_reader)
|
||||
|
||||
for line in data[:]:
|
||||
if line[1] == "UnexpectedImprovement(Pass)":
|
||||
line[1] = Fore.GREEN + line[1] + Style.RESET_ALL
|
||||
elif line[1] == "UnexpectedImprovement(Fail)":
|
||||
line[1] = Fore.YELLOW + line[1] + Style.RESET_ALL
|
||||
elif line[1] == "Crash" or line[1] == "Fail":
|
||||
line[1] = Fore.RED + line[1] + Style.RESET_ALL
|
||||
elif line[1] == "Missing":
|
||||
if missing > MAX_MISS:
|
||||
data.remove(line)
|
||||
continue
|
||||
missing += 1
|
||||
line[1] = Fore.YELLOW + line[1] + Style.RESET_ALL
|
||||
elif line[1] == "Fail":
|
||||
line[1] = Fore.RED + line[1] + Style.RESET_ALL
|
||||
else:
|
||||
line[1] = Fore.WHITE + line[1] + Style.RESET_ALL
|
||||
|
||||
if missing > MAX_MISS:
|
||||
data.append([Fore.RED + f"... more than {MAX_MISS} missing tests, something crashed?", "Missing" + Style.RESET_ALL])
|
||||
headers = ["Test ", "Result"]
|
||||
print(tabulate(data, headers, tablefmt="plain"))
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def job_failed_before(old_jobs, job):
|
||||
for old_job in old_jobs:
|
||||
if job.name == old_job.name:
|
||||
return old_job
|
||||
|
||||
|
||||
def parse_args() -> None:
|
||||
"""Parse args"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Tool to show merge requests assigned to the marge-bot",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--target",
|
||||
metavar="target-job",
|
||||
help="Target job regex. For multiple targets, pass multiple values, "
|
||||
"eg. `--target foo bar`.",
|
||||
required=False,
|
||||
nargs=argparse.ONE_OR_MORE,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--token",
|
||||
metavar="token",
|
||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = parse_args()
|
||||
token = read_token(args.token)
|
||||
gl = gitlab.Gitlab(url="https://gitlab.freedesktop.org", private_token=token)
|
||||
|
||||
project = gl.projects.get("mesa/mesa")
|
||||
|
||||
print(
|
||||
"\u001b]8;;https://gitlab.freedesktop.org/mesa/mesa/-/pipelines?page=1&scope=all&source=schedule\u001b\\Scheduled pipelines overview\u001b]8;;\u001b\\"
|
||||
)
|
||||
pipelines = project.pipelines.list(
|
||||
source="schedule", ordered_by="created_at", sort="desc", page=1, per_page=2
|
||||
)
|
||||
print(
|
||||
f"Old pipeline: {pipelines[1].created_at}\t\u001b]8;;{pipelines[1].web_url}\u001b\\{pipelines[1].status}\u001b]8;;\u001b\\\t{pipelines[1].sha}"
|
||||
)
|
||||
print(
|
||||
f"New pipeline: {pipelines[0].created_at}\t\u001b]8;;{pipelines[0].web_url}\u001b\\{pipelines[0].status}\u001b]8;;\u001b\\\t{pipelines[0].sha}"
|
||||
)
|
||||
print(
|
||||
f"\nWebUI visual compare: https://gitlab.freedesktop.org/mesa/mesa/-/compare/{pipelines[1].sha}...{pipelines[0].sha}\n"
|
||||
)
|
||||
|
||||
# regex part
|
||||
if args.target:
|
||||
target = "|".join(args.target)
|
||||
target = target.strip()
|
||||
print("🞋 jobs: " + Fore.BLUE + target + Style.RESET_ALL)
|
||||
|
||||
target = f"({target})" + r"( \d+/\d+)?"
|
||||
else:
|
||||
target = ".*"
|
||||
|
||||
target_jobs_regex: re.Pattern = re.compile(target)
|
||||
|
||||
old_failed_jobs = []
|
||||
for job in pipelines[1].jobs.list(all=True):
|
||||
if (
|
||||
job.status != "failed"
|
||||
or target_jobs_regex
|
||||
and not target_jobs_regex.fullmatch(job.name)
|
||||
):
|
||||
continue
|
||||
old_failed_jobs.append(job)
|
||||
|
||||
job_failed = False
|
||||
for job in pipelines[0].jobs.list(all=True):
|
||||
if (
|
||||
job.status != "failed"
|
||||
or target_jobs_regex
|
||||
and not target_jobs_regex.fullmatch(job.name)
|
||||
):
|
||||
continue
|
||||
|
||||
job_failed = True
|
||||
|
||||
previously_failed_job = job_failed_before(old_failed_jobs, job)
|
||||
if previously_failed_job:
|
||||
print(
|
||||
Fore.YELLOW
|
||||
+ f":: \u001b]8;;{job.web_url}\u001b\\{job.name}\u001b]8;;\u001b\\"
|
||||
+ Fore.MAGENTA
|
||||
+ f" \u001b]8;;{previously_failed_job.web_url}\u001b\\(previous run)\u001b]8;;\u001b\\"
|
||||
+ Style.RESET_ALL
|
||||
)
|
||||
else:
|
||||
print(
|
||||
Fore.RED
|
||||
+ f":: \u001b]8;;{job.web_url}\u001b\\{job.name}\u001b]8;;\u001b\\"
|
||||
+ Style.RESET_ALL
|
||||
)
|
||||
print_failures_csv(job.id)
|
||||
|
||||
if not job_failed:
|
||||
exit(0)
|
||||
|
||||
print("Commits between nightly pipelines:")
|
||||
commit = project.commits.get(pipelines[0].sha)
|
||||
while True:
|
||||
print(
|
||||
f"{commit.id} \u001b]8;;{commit.web_url}\u001b\\{commit.title}\u001b]8;;\u001b\\"
|
||||
)
|
||||
if commit.id == pipelines[1].sha:
|
||||
break
|
||||
commit = project.commits.get(commit.parent_ids[0])
|
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
this_dir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
|
||||
readonly this_dir
|
||||
|
||||
exec \
|
||||
"$this_dir/../python-venv.sh" \
|
||||
"$this_dir/requirements.txt" \
|
||||
"$this_dir/nightly_compare.py" "$@"
|
||||
|
@@ -1,12 +1,11 @@
|
||||
colorama==0.4.*
|
||||
colorama==0.4.5
|
||||
filecache==0.81
|
||||
gql==3.*
|
||||
kaleido==0.2.*
|
||||
python-dateutil==2.*
|
||||
pandas==2.*
|
||||
plotly==5.*
|
||||
python-gitlab==3.*
|
||||
PyYAML==6.*
|
||||
ruamel.yaml.clib==0.2.*
|
||||
ruamel.yaml==0.17.*
|
||||
tabulate==0.9.*
|
||||
gql==3.4.0
|
||||
kaleido==0.2.1
|
||||
python-dateutil==2.8.2
|
||||
pandas==2.1.1
|
||||
plotly==5.17.0
|
||||
python-gitlab==3.5.0
|
||||
PyYAML==6.0.1
|
||||
ruamel.yaml.clib==0.2.8
|
||||
ruamel.yaml==0.17.21
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user