Compare commits
305 Commits
1ff7135691
...
mesa-25.1.
Author | SHA1 | Date | |
---|---|---|---|
|
02d708024f | ||
|
504560fe3c | ||
|
39603d3b9d | ||
|
260b5112f4 | ||
|
f29d2c921a | ||
|
994dd51b3b | ||
|
c706d8e03c | ||
|
0b073e18e3 | ||
|
666fd6bc51 | ||
|
2e9fca424f | ||
|
f4977849c0 | ||
|
99aa2c4ce5 | ||
|
30631106c4 | ||
|
cb058e4b63 | ||
|
ef0df70f62 | ||
|
250f423546 | ||
|
b4cdd0e929 | ||
|
6685e04d8c | ||
|
674726caa1 | ||
|
fe597d9e53 | ||
|
e8c614b88e | ||
|
658a1624a8 | ||
|
88e58951db | ||
|
6566894300 | ||
|
7e2e576c32 | ||
|
c85b640fdb | ||
|
3b3e051ba5 | ||
|
8537a314f6 | ||
|
f50f92716f | ||
|
516b00530d | ||
|
2ce5cd09e5 | ||
|
b843ba4bf1 | ||
|
eacca4b1ec | ||
|
a77ee5440a | ||
|
e6c03f1755 | ||
|
05f6b0f3bb | ||
|
a18027acec | ||
|
6676ae1a2d | ||
|
54caa53302 | ||
|
6eb10b69a4 | ||
|
af3a5a15d2 | ||
|
031c20e9d3 | ||
|
569459a804 | ||
|
43b914aef4 | ||
|
b4d4799ce9 | ||
|
ed16a3a87c | ||
|
ba15c7a660 | ||
|
b7472364c2 | ||
|
bfecaf4040 | ||
|
a1966159d9 | ||
|
6acc812477 | ||
|
6ce036e6c0 | ||
|
4fd8946062 | ||
|
39a8d4425a | ||
|
e35c5d643b | ||
|
a186710269 | ||
|
0ab0792c46 | ||
|
5ad7ae003f | ||
|
c29cacb77a | ||
|
7fb8044bcc | ||
|
7e0c8b8efd | ||
|
4483824a0a | ||
|
d0dd9ab2a8 | ||
|
fa98cf6af0 | ||
|
f8b061c99c | ||
|
4f2353e598 | ||
|
49bdf4669b | ||
|
41c8b9a461 | ||
|
48e9e7ba47 | ||
|
a4f5779bb1 | ||
|
c01db1fb7f | ||
|
cc2e341a14 | ||
|
6d1e51de04 | ||
|
de8423ef2a | ||
|
84e66ae44a | ||
|
80263066b9 | ||
|
25604929b1 | ||
|
d976a8fdf7 | ||
|
826fe18abd | ||
|
3dedf9bbc1 | ||
|
c9ff965c22 | ||
|
0311bc6d0e | ||
|
bb12110359 | ||
|
7e4f9ab45d | ||
|
e99910538e | ||
|
c37ca4cd68 | ||
|
6c8e78027a | ||
|
d1525e8c2b | ||
|
a26e7f4624 | ||
|
a88780114f | ||
|
0ddbd895e2 | ||
|
a85b4a7a64 | ||
|
4754594e87 | ||
|
d5d2e046e9 | ||
|
840325c2f7 | ||
|
bf3ba86cb8 | ||
|
a3293eb26c | ||
|
747b170d46 | ||
|
d18c33b1fe | ||
|
8aeafe5130 | ||
|
f712f30414 | ||
|
5dc2f6bdc8 | ||
|
128f4f06a0 | ||
|
7485541cc3 | ||
|
006b6be2d8 | ||
|
9e353682c9 | ||
|
f0f5af73d4 | ||
|
db7d38ccef | ||
|
9ff1596f67 | ||
|
ad159bbd93 | ||
|
4fa2dbdf55 | ||
|
4bd75f552c | ||
|
dda7d88800 | ||
|
66fc7554b3 | ||
|
50b5881450 | ||
|
bf62b98220 | ||
|
0b141f56a3 | ||
|
4e65cf4f40 | ||
|
b0b1820098 | ||
|
7e425861cf | ||
|
1aa0aad8ff | ||
|
6ff9f42c32 | ||
|
66c3193e4a | ||
|
984786396d | ||
|
7fc8c5e10f | ||
|
5d6a3c5862 | ||
|
9a36291900 | ||
|
12ddaa6b8b | ||
|
5064fad403 | ||
|
ef95ed1e2e | ||
|
dd47ebcc19 | ||
|
360d2958af | ||
|
912437c1a3 | ||
|
91898fbe37 | ||
|
0e15ea9546 | ||
|
05f249ca93 | ||
|
c966a7abe4 | ||
|
799685659d | ||
|
d0131a4041 | ||
|
39301bd70d | ||
|
d1610cb046 | ||
|
e81572403c | ||
|
1512a1cdd7 | ||
|
22826ec621 | ||
|
4cfaede767 | ||
|
11385075a2 | ||
|
42519ff23a | ||
|
9ec2dae6d3 | ||
|
6a1a256578 | ||
|
62c3ed9d35 | ||
|
dbb360f5d1 | ||
|
ae1d465543 | ||
|
55241615c6 | ||
|
98f96feda8 | ||
|
e11a494e27 | ||
|
e74e8b1828 | ||
|
b79911101e | ||
|
f3b0580d4d | ||
|
b55999c725 | ||
|
bdc7e7a786 | ||
|
8d907f8719 | ||
|
3d14a71b98 | ||
|
11b4ac1920 | ||
|
25c188a743 | ||
|
a06889bd0f | ||
|
ca91cef9f2 | ||
|
b1c7064a68 | ||
|
8a1e3f3b45 | ||
|
a4c042b67a | ||
|
c1bd710b0f | ||
|
36d45e2c5a | ||
|
50a5d6b025 | ||
|
e8011985b0 | ||
|
5c142e46f3 | ||
|
72b8389416 | ||
|
349c1e2cf4 | ||
|
e7c1f35024 | ||
|
8b8ca028a0 | ||
|
77e7fd0dee | ||
|
9c49a2e03f | ||
|
4c1447e89b | ||
|
81b877c9a0 | ||
|
0ce1adf683 | ||
|
8780fd7da5 | ||
|
de59c4b553 | ||
|
855bc8242a | ||
|
8d2520cf95 | ||
|
867fb6756b | ||
|
024ccb1c4b | ||
|
963b9fc2f3 | ||
|
49d96917d5 | ||
|
52d082981f | ||
|
d762b354c7 | ||
|
293aaa43b9 | ||
|
d8cf36fbb1 | ||
|
234d66a1e2 | ||
|
c42b829ac4 | ||
|
53adfa7182 | ||
|
28264fe953 | ||
|
8125b0def2 | ||
|
cdafaef206 | ||
|
746f2986ec | ||
|
385a56642b | ||
|
2a06a20a4a | ||
|
f6450df88f | ||
|
84f1dcdc2a | ||
|
6101b0ae4b | ||
|
e37333798c | ||
|
449a7f98c7 | ||
|
afe870756d | ||
|
a17da10518 | ||
|
ebf87ad70b | ||
|
695aca39c2 | ||
|
5838a36951 | ||
|
058922a3b8 | ||
|
b939de025d | ||
|
d0627d243d | ||
|
fd80d0027b | ||
|
bb56867a1b | ||
|
1f82af229d | ||
|
03dc23baa2 | ||
|
f2a54f5244 | ||
|
aa08dfbad4 | ||
|
d14c0562c6 | ||
|
1664381813 | ||
|
87902dca71 | ||
|
a900b3f39d | ||
|
d06fb6fb4b | ||
|
7926758a78 | ||
|
8d01b5577b | ||
|
a9b90aa1ce | ||
|
6bde6bfde7 | ||
|
3c85516be1 | ||
|
518f052e98 | ||
|
91cf9b4e43 | ||
|
e1f06788f5 | ||
|
5c9733618d | ||
|
d18a3d5f09 | ||
|
dfc807a303 | ||
|
148d66678e | ||
|
5973aa8505 | ||
|
c3c65d8b25 | ||
|
a7dae0fec8 | ||
|
3619611b31 | ||
|
631022841f | ||
|
1eba12fc5f | ||
|
72c2990b5c | ||
|
3d9ac270e2 | ||
|
4fb4880183 | ||
|
461f11239e | ||
|
c912c746c5 | ||
|
14a045df1c | ||
|
6fdcc55f6d | ||
|
ff40113ad5 | ||
|
f127f9ca88 | ||
|
41a2ccc117 | ||
|
c1a358d8ca | ||
|
6cf01adf6b | ||
|
559d33b2b6 | ||
|
a05f320447 | ||
|
d3285fe971 | ||
|
6f9e010794 | ||
|
0693f55fe3 | ||
|
e0ebea94db | ||
|
e38631ad0a | ||
|
b9ed912660 | ||
|
b1c0dc9259 | ||
|
9811e2b7d1 | ||
|
e52fac2e6d | ||
|
94628a8fbf | ||
|
b072a973ee | ||
|
066850bb3a | ||
|
5bae75e3a0 | ||
|
39e4fe7ab4 | ||
|
b47ada6635 | ||
|
da4de27515 | ||
|
6f12ae221c | ||
|
cba13b7c52 | ||
|
2be4fb62cf | ||
|
2099c23dab | ||
|
27b46ecfb8 | ||
|
1c5cd9ff7a | ||
|
3cc215b1cc | ||
|
5c048f7860 | ||
|
c196a64471 | ||
|
76db8496a9 | ||
|
614c26c634 | ||
|
53c8864428 | ||
|
fe3c767841 | ||
|
9967c83f0b | ||
|
e106478551 | ||
|
dd304bfd80 | ||
|
2f1fd84e4d | ||
|
d0b2f4830d | ||
|
e944636ff7 | ||
|
0702e54b55 | ||
|
9fa9cd870f | ||
|
6491da3220 | ||
|
da655b10ad | ||
|
2bfe468661 | ||
|
d588bebd75 | ||
|
5c0cd81232 | ||
|
4350f7e7db | ||
|
7a48ce1ed4 | ||
|
b2f79a5e1a |
@@ -47,10 +47,6 @@ workflow:
|
|||||||
DEQP_RUNNER_MAX_FAILS: 40
|
DEQP_RUNNER_MAX_FAILS: 40
|
||||||
# post-merge pipeline
|
# post-merge pipeline
|
||||||
- if: &is-post-merge $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "push"
|
- if: &is-post-merge $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "push"
|
||||||
variables:
|
|
||||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: priority:high
|
|
||||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: priority:high-kvm
|
|
||||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: priority:high-aarch64
|
|
||||||
# Pre-merge pipeline
|
# Pre-merge pipeline
|
||||||
- if: &is-pre-merge $CI_PIPELINE_SOURCE == "merge_request_event"
|
- if: &is-pre-merge $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||||
# Push to a branch on a fork
|
# Push to a branch on a fork
|
||||||
@@ -78,11 +74,12 @@ workflow:
|
|||||||
|
|
||||||
variables:
|
variables:
|
||||||
FDO_UPSTREAM_REPO: mesa/mesa
|
FDO_UPSTREAM_REPO: mesa/mesa
|
||||||
MESA_TEMPLATES_COMMIT: &ci-templates-commit c6aeb16f86e32525fa630fb99c66c4f3e62fc3cb
|
MESA_TEMPLATES_COMMIT: &ci-templates-commit 48e4b6c9a2015f969fbe648999d16d5fb3eef6c4
|
||||||
CI_PRE_CLONE_SCRIPT: |-
|
CI_PRE_CLONE_SCRIPT: |-
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
curl --silent --location --fail --retry-connrefused --retry 3 --retry-delay 10 \
|
wget -q -O download-git-cache.sh ${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh
|
||||||
${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh | bash
|
bash download-git-cache.sh
|
||||||
|
rm download-git-cache.sh
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
S3_JWT_FILE: /s3_jwt
|
S3_JWT_FILE: /s3_jwt
|
||||||
S3_JWT_FILE_SCRIPT: |-
|
S3_JWT_FILE_SCRIPT: |-
|
||||||
@@ -169,34 +166,37 @@ stages:
|
|||||||
- build-only
|
- build-only
|
||||||
- code-validation
|
- code-validation
|
||||||
- amd
|
- amd
|
||||||
- amd-nightly
|
- amd-postmerge
|
||||||
- intel
|
- intel
|
||||||
- intel-nightly
|
- intel-postmerge
|
||||||
- nouveau
|
- nouveau
|
||||||
- nouveau-nightly
|
- nouveau-postmerge
|
||||||
- arm
|
- arm
|
||||||
- arm-nightly
|
- arm-postmerge
|
||||||
- broadcom
|
- broadcom
|
||||||
- broadcom-nightly
|
- broadcom-postmerge
|
||||||
- freedreno
|
- freedreno
|
||||||
- freedreno-nightly
|
- freedreno-postmerge
|
||||||
- etnaviv
|
- etnaviv
|
||||||
- etnaviv-nightly
|
- etnaviv-postmerge
|
||||||
- software-renderer
|
- software-renderer
|
||||||
- software-renderer-nightly
|
- software-renderer-postmerge
|
||||||
- layered-backends
|
- layered-backends
|
||||||
- layered-backends-nightly
|
- layered-backends-postmerge
|
||||||
- performance
|
- performance
|
||||||
- deploy
|
- deploy
|
||||||
|
|
||||||
include:
|
include:
|
||||||
|
- project: 'freedesktop/ci-templates'
|
||||||
|
ref: 16bc29078de5e0a067ff84a1a199a3760d3b3811
|
||||||
|
file:
|
||||||
|
- '/templates/ci-fairy.yml'
|
||||||
- project: 'freedesktop/ci-templates'
|
- project: 'freedesktop/ci-templates'
|
||||||
ref: *ci-templates-commit
|
ref: *ci-templates-commit
|
||||||
file:
|
file:
|
||||||
- '/templates/alpine.yml'
|
- '/templates/alpine.yml'
|
||||||
- '/templates/debian.yml'
|
- '/templates/debian.yml'
|
||||||
- '/templates/fedora.yml'
|
- '/templates/fedora.yml'
|
||||||
- '/templates/ci-fairy.yml'
|
|
||||||
- local: '.gitlab-ci/image-tags.yml'
|
- local: '.gitlab-ci/image-tags.yml'
|
||||||
- local: '.gitlab-ci/lava/lava-gitlab-ci.yml'
|
- local: '.gitlab-ci/lava/lava-gitlab-ci.yml'
|
||||||
- local: '.gitlab-ci/container/gitlab-ci.yml'
|
- local: '.gitlab-ci/container/gitlab-ci.yml'
|
||||||
@@ -337,7 +337,7 @@ include:
|
|||||||
|
|
||||||
# Git archive
|
# Git archive
|
||||||
|
|
||||||
make-git-archive:
|
make git archive:
|
||||||
extends:
|
extends:
|
||||||
- .fdo.ci-fairy
|
- .fdo.ci-fairy
|
||||||
stage: git-archive
|
stage: git-archive
|
||||||
@@ -351,7 +351,7 @@ make-git-archive:
|
|||||||
# compress the current folder
|
# compress the current folder
|
||||||
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
|
- 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
|
- s3_upload ../$CI_PROJECT_NAME.tar.gz "https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/"
|
||||||
|
|
||||||
# Sanity checks of MR settings and commit logs
|
# Sanity checks of MR settings and commit logs
|
||||||
sanity:
|
sanity:
|
||||||
@@ -381,6 +381,7 @@ sanity:
|
|||||||
DEBIAN_TEST_GL_TAG
|
DEBIAN_TEST_GL_TAG
|
||||||
DEBIAN_TEST_VK_TAG
|
DEBIAN_TEST_VK_TAG
|
||||||
FEDORA_X86_64_BUILD_TAG
|
FEDORA_X86_64_BUILD_TAG
|
||||||
|
KERNEL_ROOTFS_TAG
|
||||||
KERNEL_TAG
|
KERNEL_TAG
|
||||||
PKG_REPO_REV
|
PKG_REPO_REV
|
||||||
WINDOWS_X64_BUILD_TAG
|
WINDOWS_X64_BUILD_TAG
|
||||||
|
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||||
|
|
||||||
export PATH=/android-cts/jdk/bin/:$PATH
|
export PATH=/android-tools/android-cts/jdk/bin/:/android-tools/build-tools:$PATH
|
||||||
export JAVA_HOME=/android-cts/jdk
|
export JAVA_HOME=/android-tools/android-cts/jdk
|
||||||
|
|
||||||
# Wait for the appops service to show up
|
# Wait for the appops service to show up
|
||||||
while [ "$($ADB shell dumpsys -l | grep appops)" = "" ] ; do sleep 1; done
|
while [ "$($ADB shell dumpsys -l | grep appops)" = "" ] ; do sleep 1; done
|
||||||
@@ -14,23 +14,23 @@ SKIP_FILE="$INSTALL/${GPU_VERSION}-android-cts-skips.txt"
|
|||||||
|
|
||||||
EXCLUDE_FILTERS=""
|
EXCLUDE_FILTERS=""
|
||||||
if [ -e "$SKIP_FILE" ]; then
|
if [ -e "$SKIP_FILE" ]; then
|
||||||
EXCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$SKIP_FILE" | sed -e 's/\s*$//g' -e 's/.*/--exclude-filter "\0" /g')"
|
EXCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$SKIP_FILE" | sed -s 's/.*/--exclude-filter "\0" /g')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
INCLUDE_FILE="$INSTALL/${GPU_VERSION}-android-cts-include.txt"
|
INCLUDE_FILE="$INSTALL/${GPU_VERSION}-android-cts-include.txt"
|
||||||
|
|
||||||
if [ -e "$INCLUDE_FILE" ]; then
|
if [ -e "$INCLUDE_FILE" ]; then
|
||||||
INCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$INCLUDE_FILE" | sed -e 's/\s*$//g' -e 's/.*/--include-filter "\0" /g')"
|
INCLUDE_FILTERS="$(grep -v -E "(^#|^[[:space:]]*$)" "$INCLUDE_FILE" | sed -s 's/.*/--include-filter "\0" /g')"
|
||||||
else
|
else
|
||||||
INCLUDE_FILTERS=$(printf -- "--include-filter %s " $ANDROID_CTS_MODULES | sed -e 's/ $//g')
|
INCLUDE_FILTERS=$(printf -- "--include-filter %s " $ANDROID_CTS_MODULES | sed -e 's/ $//g')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
eval "/android-cts/tools/cts-tradefed" run commandAndExit cts-dev \
|
eval "/android-tools/android-cts/tools/cts-tradefed" run commandAndExit cts-dev \
|
||||||
$INCLUDE_FILTERS \
|
$EXCLUDE_FILTERS \
|
||||||
$EXCLUDE_FILTERS
|
$INCLUDE_FILTERS
|
||||||
|
|
||||||
[ "$(grep "^FAILED" /android-cts/results/latest/invocation_summary.txt | tr -d ' ' | cut -d ':' -f 2)" = "0" ]
|
[ "$(grep "^FAILED" /android-tools/android-cts/results/latest/invocation_summary.txt | tr -d ' ' | cut -d ':' -f 2)" = "0" ]
|
||||||
|
|
||||||
# shellcheck disable=SC2034 # EXIT_CODE is used by the script that sources this one
|
# shellcheck disable=SC2034 # EXIT_CODE is used by the script that sources this one
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
@@ -38,7 +38,7 @@ set -e
|
|||||||
|
|
||||||
section_switch cuttlefish_results "cuttlefish: gathering the results"
|
section_switch cuttlefish_results "cuttlefish: gathering the results"
|
||||||
|
|
||||||
cp -r "/android-cts/results/latest"/* $RESULTS_DIR
|
cp -r "/android-tools/android-cts/results/latest"/* $RESULTS_DIR
|
||||||
cp -r "/android-cts/logs/latest"/* $RESULTS_DIR
|
cp -r "/android-tools/android-cts/logs/latest"/* $RESULTS_DIR
|
||||||
|
|
||||||
section_end cuttlefish_results
|
section_end cuttlefish_results
|
||||||
|
17
.gitlab-ci/bare-metal/cisco-2960-poe-off.sh
Executable file
17
.gitlab-ci/bare-metal/cisco-2960-poe-off.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
|
||||||
|
if [ -z "$BM_POE_INTERFACE" ]; then
|
||||||
|
echo "Must supply the PoE Interface to power down"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BM_POE_ADDRESS" ]; then
|
||||||
|
echo "Must supply the PoE Switch host"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SNMP_KEY="1.3.6.1.4.1.9.9.402.1.2.1.1.1.$BM_POE_INTERFACE"
|
||||||
|
SNMP_OFF="i 4"
|
||||||
|
|
||||||
|
snmpset -v2c -r 3 -t 30 -cmesaci "$BM_POE_ADDRESS" "$SNMP_KEY" $SNMP_OFF
|
22
.gitlab-ci/bare-metal/cisco-2960-poe-on.sh
Executable file
22
.gitlab-ci/bare-metal/cisco-2960-poe-on.sh
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
|
||||||
|
if [ -z "$BM_POE_INTERFACE" ]; then
|
||||||
|
echo "Must supply the PoE Interface to power up"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$BM_POE_ADDRESS" ]; then
|
||||||
|
echo "Must supply the PoE Switch host"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
SNMP_KEY="1.3.6.1.4.1.9.9.402.1.2.1.1.1.$BM_POE_INTERFACE"
|
||||||
|
SNMP_ON="i 1"
|
||||||
|
SNMP_OFF="i 4"
|
||||||
|
|
||||||
|
snmpset -v2c -r 3 -t 10 -cmesaci "$BM_POE_ADDRESS" "$SNMP_KEY" $SNMP_OFF
|
||||||
|
sleep 3s
|
||||||
|
snmpset -v2c -r 3 -t 10 -cmesaci "$BM_POE_ADDRESS" "$SNMP_KEY" $SNMP_ON
|
@@ -144,6 +144,33 @@ fi
|
|||||||
|
|
||||||
date +'%F %T'
|
date +'%F %T'
|
||||||
|
|
||||||
|
# Set up the pxelinux config for Jetson Nano
|
||||||
|
mkdir -p /tftp/pxelinux.cfg
|
||||||
|
cat <<EOF >/tftp/pxelinux.cfg/default-arm-tegra210-p3450-0000
|
||||||
|
PROMPT 0
|
||||||
|
TIMEOUT 30
|
||||||
|
DEFAULT primary
|
||||||
|
MENU TITLE jetson nano boot options
|
||||||
|
LABEL primary
|
||||||
|
MENU LABEL CI kernel on TFTP
|
||||||
|
LINUX Image
|
||||||
|
FDT tegra210-p3450-0000.dtb
|
||||||
|
APPEND \${cbootargs} $BM_CMDLINE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Set up the pxelinux config for Jetson TK1
|
||||||
|
cat <<EOF >/tftp/pxelinux.cfg/default-arm-tegra124-jetson-tk1
|
||||||
|
PROMPT 0
|
||||||
|
TIMEOUT 30
|
||||||
|
DEFAULT primary
|
||||||
|
MENU TITLE jetson TK1 boot options
|
||||||
|
LABEL primary
|
||||||
|
MENU LABEL CI kernel on TFTP
|
||||||
|
LINUX zImage
|
||||||
|
FDT tegra124-jetson-tk1.dtb
|
||||||
|
APPEND \${cbootargs} $BM_CMDLINE
|
||||||
|
EOF
|
||||||
|
|
||||||
# Create the rootfs in the NFS directory
|
# Create the rootfs in the NFS directory
|
||||||
. $BM/rootfs-setup.sh /nfs
|
. $BM/rootfs-setup.sh /nfs
|
||||||
|
|
||||||
|
41
.gitlab-ci/bare-metal/telnet-buffer.py
Executable file
41
.gitlab-ci/bare-metal/telnet-buffer.py
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# Copyright © 2020 Christian Gmeiner
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice (including the next
|
||||||
|
# paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
# Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Tiny script to read bytes from telnet, and write the output to stdout, with a
|
||||||
|
# buffer in between so we don't lose serial output from its buffer.
|
||||||
|
#
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import telnetlib
|
||||||
|
|
||||||
|
host = sys.argv[1]
|
||||||
|
port = sys.argv[2]
|
||||||
|
|
||||||
|
tn = telnetlib.Telnet(host, port, 1000000)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
bytes = tn.read_some()
|
||||||
|
sys.stdout.buffer.write(bytes)
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
tn.close()
|
@@ -130,7 +130,7 @@ debian-testing-asan:
|
|||||||
-D mesa-clc=system
|
-D mesa-clc=system
|
||||||
-D tools=dlclose-skip
|
-D tools=dlclose-skip
|
||||||
-D valgrind=disabled
|
-D valgrind=disabled
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-asan-${BUILDTYPE}
|
S3_ARTIFACT_NAME: ""
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
RUN_MESON_TESTS: "false" # just too slow
|
RUN_MESON_TESTS: "false" # just too slow
|
||||||
# Do a host build for mesa-clc (asan complains not being loaded as
|
# Do a host build for mesa-clc (asan complains not being loaded as
|
||||||
@@ -138,6 +138,7 @@ debian-testing-asan:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
|
-D gallium-opencl=disabled
|
||||||
-D gallium-rusticl=false
|
-D gallium-rusticl=false
|
||||||
-D gallium-nine=false
|
-D gallium-nine=false
|
||||||
-D gallium-drivers=
|
-D gallium-drivers=
|
||||||
@@ -176,7 +177,8 @@ debian-testing-msan:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
-D gallium-drivers=panfrost
|
-D gallium-opencl=disabled
|
||||||
|
-D gallium-drivers=
|
||||||
-D vulkan-drivers=
|
-D vulkan-drivers=
|
||||||
-D video-codecs=
|
-D video-codecs=
|
||||||
-D glx=disabled
|
-D glx=disabled
|
||||||
@@ -185,6 +187,7 @@ debian-testing-msan:
|
|||||||
-D install-mesa-clc=true
|
-D install-mesa-clc=true
|
||||||
-D precomp-compiler=enabled
|
-D precomp-compiler=enabled
|
||||||
-D install-precomp-compiler=true
|
-D install-precomp-compiler=true
|
||||||
|
-D tools=panfrost
|
||||||
|
|
||||||
debian-testing-ubsan:
|
debian-testing-ubsan:
|
||||||
extends:
|
extends:
|
||||||
@@ -211,6 +214,7 @@ debian-testing-ubsan:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
|
-D gallium-opencl=disabled
|
||||||
-D gallium-rusticl=false
|
-D gallium-rusticl=false
|
||||||
-D gallium-drivers=
|
-D gallium-drivers=
|
||||||
-D vulkan-drivers=
|
-D vulkan-drivers=
|
||||||
@@ -298,6 +302,7 @@ alpine-build-testing:
|
|||||||
-Wno-error=array-bounds
|
-Wno-error=array-bounds
|
||||||
-Wno-error=stringop-overflow
|
-Wno-error=stringop-overflow
|
||||||
-Wno-error=stringop-overread
|
-Wno-error=stringop-overread
|
||||||
|
-Wno-error=misleading-indentation
|
||||||
DRI_LOADERS: >
|
DRI_LOADERS: >
|
||||||
-D glx=disabled
|
-D glx=disabled
|
||||||
-D gbm=enabled
|
-D gbm=enabled
|
||||||
@@ -416,7 +421,8 @@ debian-android:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
-D gallium-drivers=panfrost
|
-D gallium-opencl=disabled
|
||||||
|
-D gallium-drivers=
|
||||||
-D vulkan-drivers=
|
-D vulkan-drivers=
|
||||||
-D video-codecs=
|
-D video-codecs=
|
||||||
-D glx=disabled
|
-D glx=disabled
|
||||||
@@ -425,6 +431,7 @@ debian-android:
|
|||||||
-D install-mesa-clc=true
|
-D install-mesa-clc=true
|
||||||
-D precomp-compiler=enabled
|
-D precomp-compiler=enabled
|
||||||
-D install-precomp-compiler=true
|
-D install-precomp-compiler=true
|
||||||
|
-D tools=panfrost
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||||
script:
|
script:
|
||||||
# x86_64 build:
|
# x86_64 build:
|
||||||
@@ -494,7 +501,8 @@ debian-arm32:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
-D gallium-drivers=panfrost
|
-D gallium-opencl=disabled
|
||||||
|
-D gallium-drivers=
|
||||||
-D vulkan-drivers=
|
-D vulkan-drivers=
|
||||||
-D video-codecs=
|
-D video-codecs=
|
||||||
-D glx=disabled
|
-D glx=disabled
|
||||||
@@ -503,6 +511,7 @@ debian-arm32:
|
|||||||
-D install-mesa-clc=true
|
-D install-mesa-clc=true
|
||||||
-D precomp-compiler=enabled
|
-D precomp-compiler=enabled
|
||||||
-D install-precomp-compiler=true
|
-D install-precomp-compiler=true
|
||||||
|
-D tools=panfrost
|
||||||
S3_ARTIFACT_NAME: mesa-arm32-default-${BUILDTYPE}
|
S3_ARTIFACT_NAME: mesa-arm32-default-${BUILDTYPE}
|
||||||
# The strip command segfaults, failing to strip the binary and leaving
|
# The strip command segfaults, failing to strip the binary and leaving
|
||||||
# tempfiles in our artifacts.
|
# tempfiles in our artifacts.
|
||||||
@@ -786,6 +795,7 @@ debian-x86_32:
|
|||||||
HOST_BUILD_OPTIONS: >
|
HOST_BUILD_OPTIONS: >
|
||||||
-D build-tests=false
|
-D build-tests=false
|
||||||
-D enable-glcpp-tests=false
|
-D enable-glcpp-tests=false
|
||||||
|
-D gallium-opencl=disabled
|
||||||
-D gallium-drivers=
|
-D gallium-drivers=
|
||||||
-D vulkan-drivers=
|
-D vulkan-drivers=
|
||||||
-D video-codecs=
|
-D video-codecs=
|
||||||
|
@@ -49,6 +49,7 @@ VARS=(
|
|||||||
FLAKES_CHANNEL
|
FLAKES_CHANNEL
|
||||||
FLUSTER_CODECS
|
FLUSTER_CODECS
|
||||||
FLUSTER_FRACTION
|
FLUSTER_FRACTION
|
||||||
|
FLUSTER_VECTORS_VERSION
|
||||||
FREEDRENO_HANGCHECK_MS
|
FREEDRENO_HANGCHECK_MS
|
||||||
GALLIUM_DRIVER
|
GALLIUM_DRIVER
|
||||||
GALLIVM_PERF
|
GALLIVM_PERF
|
||||||
@@ -107,7 +108,6 @@ VARS=(
|
|||||||
PIGLIT_REPLAY_SUBCOMMAND
|
PIGLIT_REPLAY_SUBCOMMAND
|
||||||
PIGLIT_RESULTS
|
PIGLIT_RESULTS
|
||||||
PIGLIT_RUNNER_OPTIONS
|
PIGLIT_RUNNER_OPTIONS
|
||||||
PIGLIT_TAG
|
|
||||||
PIGLIT_TESTS
|
PIGLIT_TESTS
|
||||||
PIGLIT_TRACES_FILE
|
PIGLIT_TRACES_FILE
|
||||||
PIPELINE_ARTIFACTS_BASE
|
PIPELINE_ARTIFACTS_BASE
|
||||||
@@ -120,6 +120,8 @@ VARS=(
|
|||||||
S3_RESULTS_UPLOAD
|
S3_RESULTS_UPLOAD
|
||||||
SKQP_ASSETS_DIR
|
SKQP_ASSETS_DIR
|
||||||
SKQP_BACKENDS
|
SKQP_BACKENDS
|
||||||
|
STORAGE_FORK_HOST_PATH
|
||||||
|
STORAGE_MAINLINE_HOST_PATH
|
||||||
TU_DEBUG
|
TU_DEBUG
|
||||||
VIRGL_HOST_API
|
VIRGL_HOST_API
|
||||||
VIRGL_RENDER_SERVER
|
VIRGL_RENDER_SERVER
|
||||||
|
@@ -109,9 +109,6 @@ export LIBGL_DRIVERS_PATH=/install/lib/dri
|
|||||||
# telling it to look in /usr/local/lib.
|
# telling it to look in /usr/local/lib.
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
|
||||||
|
|
||||||
# The Broadcom devices need /usr/local/bin unconditionally added to the path
|
|
||||||
export PATH=/usr/local/bin:$PATH
|
|
||||||
|
|
||||||
# Store Mesa's disk cache under /tmp, rather than sending it out over NFS.
|
# Store Mesa's disk cache under /tmp, rather than sending it out over NFS.
|
||||||
export XDG_CACHE_HOME=/tmp
|
export XDG_CACHE_HOME=/tmp
|
||||||
|
|
||||||
@@ -233,7 +230,7 @@ cleanup
|
|||||||
# upload artifacts (lava jobs)
|
# upload artifacts (lava jobs)
|
||||||
if [ -n "$S3_RESULTS_UPLOAD" ]; then
|
if [ -n "$S3_RESULTS_UPLOAD" ]; then
|
||||||
tar --zstd -cf results.tar.zst results/;
|
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
|
s3_upload results.tar.zst "https://${S3_RESULTS_UPLOAD}/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# We still need to echo the hwci: mesa message, as some scripts rely on it, such
|
# We still need to echo the hwci: mesa message, as some scripts rely on it, such
|
||||||
|
@@ -1,3 +1,2 @@
|
|||||||
variables:
|
variables:
|
||||||
CONDITIONAL_BUILD_ANGLE_TAG: be4f59328ef607bcbf5048a3f6f27410
|
CONDITIONAL_BUILD_ANGLE_TAG: ab19bccfd3858c539ba8cb8d9b52a003
|
||||||
CONDITIONAL_BUILD_PIGLIT_TAG: a19e424b8a3f020dbf1b9dd29f220a4f
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC2154 # arch is assigned in previous scripts
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
@@ -7,12 +6,11 @@ set -o xtrace
|
|||||||
# Fetch the arm-built rootfs image and unpack it in our x86_64 container (saves
|
# Fetch the arm-built rootfs image and unpack it in our x86_64 container (saves
|
||||||
# network transfer, disk usage, and runtime on test jobs)
|
# network transfer, disk usage, and runtime on test jobs)
|
||||||
|
|
||||||
S3_PATH="https://${S3_HOST}/${S3_KERNEL_BUCKET}"
|
# shellcheck disable=SC2154 # arch is assigned in previous scripts
|
||||||
|
if curl --fail -L -s "${ARTIFACTS_PREFIX}/${FDO_UPSTREAM_REPO}/${ARTIFACTS_SUFFIX}/${arch}/done"; then
|
||||||
if curl -L --retry 3 -f --retry-delay 10 -s --head "${S3_PATH}/${FDO_UPSTREAM_REPO}/${LAVA_DISTRIBUTION_TAG}"; then
|
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${FDO_UPSTREAM_REPO}/${ARTIFACTS_SUFFIX}/${arch}"
|
||||||
ARTIFACTS_URL="${S3_PATH}/${FDO_UPSTREAM_REPO}/${LAVA_DISTRIBUTION_TAG}"
|
|
||||||
else
|
else
|
||||||
ARTIFACTS_URL="${S3_PATH}/${CI_PROJECT_PATH}/${LAVA_DISTRIBUTION_TAG}"
|
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${CI_PROJECT_PATH}/${ARTIFACTS_SUFFIX}/${arch}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
@@ -35,11 +33,30 @@ if [[ $arch == "arm64" ]]; then
|
|||||||
DEVICE_TREES=""
|
DEVICE_TREES=""
|
||||||
DEVICE_TREES="$DEVICE_TREES apq8016-sbc-usb-host.dtb"
|
DEVICE_TREES="$DEVICE_TREES apq8016-sbc-usb-host.dtb"
|
||||||
DEVICE_TREES="$DEVICE_TREES apq8096-db820c.dtb"
|
DEVICE_TREES="$DEVICE_TREES apq8096-db820c.dtb"
|
||||||
|
DEVICE_TREES="$DEVICE_TREES tegra210-p3450-0000.dtb"
|
||||||
|
DEVICE_TREES="$DEVICE_TREES imx8mq-nitrogen.dtb"
|
||||||
|
|
||||||
for DTB in $DEVICE_TREES; do
|
for DTB in $DEVICE_TREES; do
|
||||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
-O "${KERNEL_IMAGE_BASE}/arm64/$DTB"
|
-O "${KERNEL_IMAGE_BASE}/arm64/$DTB"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
popd
|
||||||
|
elif [[ $arch == "armhf" ]]; then
|
||||||
|
mkdir -p /baremetal-files
|
||||||
|
pushd /baremetal-files
|
||||||
|
|
||||||
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
|
-O "${KERNEL_IMAGE_BASE}"/armhf/zImage
|
||||||
|
|
||||||
|
DEVICE_TREES=""
|
||||||
|
DEVICE_TREES="$DEVICE_TREES imx6q-cubox-i.dtb"
|
||||||
|
DEVICE_TREES="$DEVICE_TREES tegra124-jetson-tk1.dtb"
|
||||||
|
|
||||||
|
for DTB in $DEVICE_TREES; do
|
||||||
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
|
-O "${KERNEL_IMAGE_BASE}/armhf/$DTB"
|
||||||
|
done
|
||||||
|
|
||||||
popd
|
popd
|
||||||
fi
|
fi
|
||||||
|
@@ -114,7 +114,7 @@ tar --zstd -cf "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "$LLVM_INSTALL_PREFIX"
|
|||||||
# version does not change, and delete it.
|
# version does not change, and delete it.
|
||||||
# The file is not deleted for non-CI because it can be useful in local runs.
|
# The file is not deleted for non-CI because it can be useful in local runs.
|
||||||
if [ -n "$CI" ]; then
|
if [ -n "$CI" ]; then
|
||||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CI_PROJECT_PATH}/${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst"
|
s3_upload "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst" "https://${S3_HOST}/${S3_ANDROID_BUCKET}/${CI_PROJECT_PATH}/"
|
||||||
rm "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst"
|
rm "${ANDROID_LLVM_ARTIFACT_NAME}.tar.zst"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -3,17 +3,17 @@
|
|||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_ANDROID_TAG
|
# DEBIAN_TEST_ANDROID_TAG
|
||||||
# DEBIAN_TEST_GL_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
section_start angle "Building ANGLE"
|
uncollapsed_section_start angle "Building ANGLE"
|
||||||
|
|
||||||
# Do a very early check to make sure the tag is correct without the need of
|
# Do a very early check to make sure the tag is correct without the need of
|
||||||
# setting up the environment variables locally
|
# setting up the environment variables locally
|
||||||
ci_tag_build_time_check "ANGLE_TAG"
|
ci_tag_build_time_check "ANGLE_TAG"
|
||||||
|
|
||||||
ANGLE_REV="f355e2b37ed43939e2753fc7dacccf75abb4c1a3"
|
ANGLE_REV="a3f2545f6bb3e8d27827dceb2b4e901673995ad1"
|
||||||
|
|
||||||
# Set ANGLE_ARCH based on DEBIAN_ARCH if it hasn't been explicitly defined
|
# Set ANGLE_ARCH based on DEBIAN_ARCH if it hasn't been explicitly defined
|
||||||
if [[ -z "${ANGLE_ARCH:-}" ]]; then
|
if [[ -z "${ANGLE_ARCH:-}" ]]; then
|
||||||
|
@@ -3,13 +3,15 @@
|
|||||||
|
|
||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_BASE_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
uncollapsed_section_start apitrace "Building apitrace"
|
uncollapsed_section_start apitrace "Building apitrace"
|
||||||
|
|
||||||
APITRACE_VERSION="b6102d10960c9f43b1b473903fc67937dd19fb98"
|
APITRACE_VERSION="952bad1469ea747012bdc48c48993bd5f13eec04"
|
||||||
|
|
||||||
git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace
|
git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace
|
||||||
pushd /apitrace
|
pushd /apitrace
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
# DEBIAN_BASE_TAG
|
# DEBIAN_BASE_TAG
|
||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
|
@@ -5,10 +5,11 @@
|
|||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_ANDROID_TAG
|
# DEBIAN_TEST_ANDROID_TAG
|
||||||
# DEBIAN_BASE_TAG
|
# DEBIAN_BASE_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
section_start deqp-runner "Building deqp-runner"
|
uncollapsed_section_start deqp-runner "Building deqp-runner"
|
||||||
|
|
||||||
DEQP_RUNNER_VERSION=0.20.3
|
DEQP_RUNNER_VERSION=0.20.3
|
||||||
|
|
||||||
|
@@ -6,13 +6,14 @@
|
|||||||
# DEBIAN_TEST_ANDROID_TAG
|
# DEBIAN_TEST_ANDROID_TAG
|
||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -ue -o pipefail
|
set -ue -o pipefail
|
||||||
|
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
deqp_api=${DEQP_API,,}
|
deqp_api=${DEQP_API,,}
|
||||||
|
|
||||||
section_start deqp-$deqp_api "Building dEQP $DEQP_API"
|
uncollapsed_section_start deqp-$deqp_api "Building dEQP $DEQP_API"
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
@@ -288,7 +289,7 @@ if [ "$DEQP_API" != tools ]; then
|
|||||||
|
|
||||||
# Compress the caselists, since Vulkan's in particular are gigantic; higher
|
# Compress the caselists, since Vulkan's in particular are gigantic; higher
|
||||||
# compression levels provide no real measurable benefit.
|
# compression levels provide no real measurable benefit.
|
||||||
zstd -f -1 --rm mustpass/*.txt
|
zstd -1 --rm mustpass/*.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DEQP_API" = tools ]; then
|
if [ "$DEQP_API" = tools ]; then
|
||||||
|
@@ -4,61 +4,36 @@
|
|||||||
# shellcheck disable=SC2034 # Variables are used in scripts called from here
|
# shellcheck disable=SC2034 # Variables are used in scripts called from here
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
|
||||||
# When changing this file, you need to bump the following
|
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
|
||||||
|
|
||||||
# Install fluster in /usr/local.
|
# Install fluster in /usr/local.
|
||||||
|
|
||||||
set -uex
|
|
||||||
|
|
||||||
section_start fluster "Install fluster"
|
|
||||||
|
|
||||||
FLUSTER_REVISION="e997402978f62428fffc8e5a4a709690d9ca9bc5"
|
FLUSTER_REVISION="e997402978f62428fffc8e5a4a709690d9ca9bc5"
|
||||||
|
|
||||||
git clone https://github.com/fluendo/fluster.git --single-branch --no-checkout
|
git clone https://github.com/fluendo/fluster.git --single-branch --no-checkout
|
||||||
|
|
||||||
export SKIP_UPDATE_FLUSTER_VECTORS=false
|
|
||||||
|
|
||||||
check_fluster()
|
|
||||||
{
|
|
||||||
S3_PATH_FLUSTER="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DATA_STORAGE_PATH}/fluster/${FLUSTER_VECTORS_VERSION}/vectors.tar.zst"
|
|
||||||
if curl -L --retry 4 -f --retry-connrefused --retry-delay 30 -s --head \
|
|
||||||
"https://${S3_PATH_FLUSTER}"; then
|
|
||||||
echo "Fluster vectors are up-to-date, skip rebuilding them."
|
|
||||||
export SKIP_UPDATE_FLUSTER_VECTORS=true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_fluster "${FDO_UPSTREAM_REPO}"
|
|
||||||
if ! $SKIP_UPDATE_FLUSTER_VECTORS; then
|
|
||||||
check_fluster "${CI_PROJECT_PATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
pushd fluster || exit
|
pushd fluster || exit
|
||||||
git checkout "${FLUSTER_REVISION}"
|
git checkout ${FLUSTER_REVISION}
|
||||||
popd || exit
|
popd || exit
|
||||||
|
|
||||||
if ! $SKIP_UPDATE_FLUSTER_VECTORS; then
|
if [ "${SKIP_UPDATE_FLUSTER_VECTORS}" != 1 ]; then
|
||||||
# Download the necessary vectors: H264, H265 and VP9
|
# Download the necessary vectors: H264, H265 and VP9
|
||||||
# When updating FLUSTER_REVISION, make sure to update the vectors if necessary or
|
# When updating FLUSTER_REVISION, make sure to update the vectors if necessary or
|
||||||
# fluster-runner will report Missing results.
|
# fluster-runner will report Missing results.
|
||||||
fluster/fluster.py download -j ${FDO_CI_CONCURRENT:-4} \
|
fluster/fluster.py download \
|
||||||
JVT-AVC_V1 JVT-FR-EXT JVT-MVC JVT-SVC_V1 \
|
JVT-AVC_V1 JVT-FR-EXT JVT-MVC JVT-SVC_V1 \
|
||||||
JCT-VC-3D-HEVC JCT-VC-HEVC_V1 JCT-VC-MV-HEVC JCT-VC-RExt JCT-VC-SCC JCT-VC-SHVC \
|
JCT-VC-3D-HEVC JCT-VC-HEVC_V1 JCT-VC-MV-HEVC JCT-VC-RExt JCT-VC-SCC JCT-VC-SHVC \
|
||||||
VP9-TEST-VECTORS-HIGH VP9-TEST-VECTORS
|
VP9-TEST-VECTORS-HIGH VP9-TEST-VECTORS
|
||||||
|
|
||||||
# Build fluster vectors archive and upload it
|
# Build fluster vectors archive and upload it
|
||||||
tar --zstd -cf "vectors.tar.zst" fluster/resources/
|
tar --zstd -cf "vectors.tar.zst" fluster/resources/
|
||||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "vectors.tar.zst" \
|
s3_upload vectors.tar.zst "https://${S3_PATH_FLUSTER}/"
|
||||||
"https://${S3_PATH_FLUSTER}/vectors.tar.zst"
|
|
||||||
|
touch /lava-files/done
|
||||||
|
s3_upload /lava-files/done "https://${S3_PATH_FLUSTER}/"
|
||||||
|
|
||||||
|
# Don't include the vectors in the rootfs
|
||||||
|
rm -fr fluster/resources/*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mv fluster/ /usr/local/
|
mkdir -p "${ROOTFS}/usr/local/"
|
||||||
|
mv fluster "${ROOTFS}/usr/local/"
|
||||||
|
|
||||||
if $SKIP_UPDATE_FLUSTER_VECTORS; then
|
|
||||||
curl -L --retry 4 -f --retry-connrefused --retry-delay 30 \
|
|
||||||
"${FDO_HTTP_CACHE_URI:-}https://${S3_PATH_FLUSTER}" | tar --zstd -x -C /usr/local/
|
|
||||||
fi
|
|
||||||
|
|
||||||
section_end fluster
|
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@ set -ex
|
|||||||
# DEBIAN_BASE_TAG
|
# DEBIAN_BASE_TAG
|
||||||
# DEBIAN_BUILD_TAG
|
# DEBIAN_BUILD_TAG
|
||||||
# FEDORA_X86_64_BUILD_TAG
|
# FEDORA_X86_64_BUILD_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
uncollapsed_section_start mold "Building mold"
|
uncollapsed_section_start mold "Building mold"
|
||||||
|
|
||||||
|
@@ -8,12 +8,9 @@ uncollapsed_section_start piglit "Building piglit"
|
|||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
# Do a very early check to make sure the tag is correct without the need of
|
REV="0ecdebb0f5927728ddeeb851639a559b0f7d6590"
|
||||||
# setting up the environment variables locally
|
|
||||||
ci_tag_build_time_check "PIGLIT_TAG"
|
|
||||||
|
|
||||||
REV="c50d9aa54f85e0af9d72fab86c73f89356d96399"
|
|
||||||
|
|
||||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||||
pushd /piglit
|
pushd /piglit
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
section_start rust "Building Rust toolchain"
|
uncollapsed_section_start rust "Building Rust toolchain"
|
||||||
|
|
||||||
# Pick a specific snapshot from rustup so the compiler doesn't drift on us.
|
# Pick a specific snapshot from rustup so the compiler doesn't drift on us.
|
||||||
RUST_VERSION=1.78.0-2024-05-02
|
RUST_VERSION=1.78.0-2024-05-02
|
||||||
|
@@ -6,11 +6,11 @@
|
|||||||
#
|
#
|
||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_GL_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
uncollapsed_section_start skqp "Building SkQP"
|
uncollapsed_section_start skqp "Building skqp"
|
||||||
|
|
||||||
SKQP_BRANCH=android-cts-12.1_r5
|
SKQP_BRANCH=android-cts-12.1_r5
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ popd
|
|||||||
# Fetch some needed build tools needed to build skia/skqp.
|
# Fetch some needed build tools needed to build skia/skqp.
|
||||||
# Basically, it clones repositories with commits SHAs from ${SKIA_DIR}/DEPS
|
# Basically, it clones repositories with commits SHAs from ${SKIA_DIR}/DEPS
|
||||||
# directory.
|
# directory.
|
||||||
python3 tools/git-sync-deps
|
python tools/git-sync-deps
|
||||||
|
|
||||||
mkdir -p "${SKQP_OUT_DIR}"
|
mkdir -p "${SKQP_OUT_DIR}"
|
||||||
mkdir -p "${SKQP_INSTALL_DIR}"
|
mkdir -p "${SKQP_INSTALL_DIR}"
|
||||||
|
@@ -1,13 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
|
||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
section_start va-tools "Building va-tools"
|
uncollapsed_section_start va-tools "Building va-tools"
|
||||||
|
|
||||||
git config --global user.email "mesa@example.com"
|
git config --global user.email "mesa@example.com"
|
||||||
git config --global user.name "Mesa CI"
|
git config --global user.name "Mesa CI"
|
||||||
|
@@ -7,30 +7,36 @@ set -ex
|
|||||||
|
|
||||||
uncollapsed_section_start vkd3d-proton "Building vkd3d-proton"
|
uncollapsed_section_start vkd3d-proton "Building vkd3d-proton"
|
||||||
|
|
||||||
VKD3D_PROTON_COMMIT="7eef0a64e3fc107a6cb10e3abd1b56d21b575de8"
|
VKD3D_PROTON_COMMIT="078f07f588c849c52fa21c8cfdd1c201465b1932"
|
||||||
|
|
||||||
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
||||||
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
||||||
VKD3D_PROTON_BUILD_DIR="/vkd3d-proton-build"
|
VKD3D_PROTON_BUILD_DIR="/vkd3d-proton-build"
|
||||||
|
|
||||||
|
function build_arch {
|
||||||
|
local arch="$1"
|
||||||
|
|
||||||
|
meson setup \
|
||||||
|
-Denable_tests=true \
|
||||||
|
--buildtype release \
|
||||||
|
--prefix "$VKD3D_PROTON_DST_DIR" \
|
||||||
|
--strip \
|
||||||
|
--bindir "x${arch}" \
|
||||||
|
--libdir "x${arch}" \
|
||||||
|
"$VKD3D_PROTON_BUILD_DIR/build.${arch}"
|
||||||
|
|
||||||
|
ninja -C "$VKD3D_PROTON_BUILD_DIR/build.${arch}" install
|
||||||
|
|
||||||
|
install -D -m755 -t "${VKD3D_PROTON_DST_DIR}/x${arch}/bin" "$VKD3D_PROTON_BUILD_DIR/build.${arch}/tests/d3d12"
|
||||||
|
}
|
||||||
|
|
||||||
git clone https://github.com/HansKristian-Work/vkd3d-proton.git --single-branch -b master --no-checkout "$VKD3D_PROTON_SRC_DIR"
|
git clone https://github.com/HansKristian-Work/vkd3d-proton.git --single-branch -b master --no-checkout "$VKD3D_PROTON_SRC_DIR"
|
||||||
pushd "$VKD3D_PROTON_SRC_DIR"
|
pushd "$VKD3D_PROTON_SRC_DIR"
|
||||||
git checkout "$VKD3D_PROTON_COMMIT"
|
git checkout "$VKD3D_PROTON_COMMIT"
|
||||||
git submodule update --init --recursive
|
git submodule update --init --recursive
|
||||||
git submodule update --recursive
|
git submodule update --recursive
|
||||||
|
build_arch 64
|
||||||
meson setup \
|
build_arch 86
|
||||||
-D enable_tests=true \
|
|
||||||
--buildtype release \
|
|
||||||
--prefix "$VKD3D_PROTON_DST_DIR" \
|
|
||||||
--strip \
|
|
||||||
--libdir "lib" \
|
|
||||||
"$VKD3D_PROTON_BUILD_DIR/build"
|
|
||||||
|
|
||||||
ninja -C "$VKD3D_PROTON_BUILD_DIR/build" install
|
|
||||||
|
|
||||||
install -m755 -t "${VKD3D_PROTON_DST_DIR}/" "$VKD3D_PROTON_BUILD_DIR/build/tests/d3d12"
|
|
||||||
|
|
||||||
mkdir "$VKD3D_PROTON_DST_DIR/tests"
|
mkdir "$VKD3D_PROTON_DST_DIR/tests"
|
||||||
cp \
|
cp \
|
||||||
"tests/test-runner.sh" \
|
"tests/test-runner.sh" \
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -uex
|
set -uex
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@ uncollapsed_section_start wayland "Building Wayland"
|
|||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
# FEDORA_X86_64_BUILD_TAG
|
# FEDORA_X86_64_BUILD_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
export LIBWAYLAND_VERSION="1.21.0"
|
export LIBWAYLAND_VERSION="1.21.0"
|
||||||
export WAYLAND_PROTOCOLS_VERSION="1.41"
|
export WAYLAND_PROTOCOLS_VERSION="1.41"
|
||||||
|
@@ -38,6 +38,14 @@ chmod +x /usr/local/bin/ninja
|
|||||||
# flags (doesn't apply to non-container builds, but we don't run make there)
|
# flags (doesn't apply to non-container builds, but we don't run make there)
|
||||||
export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}"
|
export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}"
|
||||||
|
|
||||||
|
# make wget to try more than once, when download fails or timeout
|
||||||
|
echo -e "retry_connrefused = on\n" \
|
||||||
|
"read_timeout = 300\n" \
|
||||||
|
"tries = 4\n" \
|
||||||
|
"retry_on_host_error = on\n" \
|
||||||
|
"retry_on_http_error = 429,500,502,503,504\n" \
|
||||||
|
"wait_retry = 32" >> /etc/wgetrc
|
||||||
|
|
||||||
# Ensure that rust tools are in PATH if they exist
|
# Ensure that rust tools are in PATH if they exist
|
||||||
CARGO_ENV_FILE="$HOME/.cargo/env"
|
CARGO_ENV_FILE="$HOME/.cargo/env"
|
||||||
if [ -f "$CARGO_ENV_FILE" ]; then
|
if [ -f "$CARGO_ENV_FILE" ]; then
|
||||||
|
@@ -86,8 +86,7 @@ apt-get update
|
|||||||
|
|
||||||
apt-get -y install "${DEPS[@]}" "${EPHEMERAL[@]}"
|
apt-get -y install "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||||
|
|
||||||
# Needed for ci-fairy s3cp
|
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||||
pip3 install --break-system-packages "ci-fairy[s3] @ git+https://gitlab.freedesktop.org/freedesktop/ci-templates@$MESA_TEMPLATES_COMMIT"
|
|
||||||
|
|
||||||
arch=armhf
|
arch=armhf
|
||||||
. .gitlab-ci/container/cross_build.sh
|
. .gitlab-ci/container/cross_build.sh
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
arch=arm64 . .gitlab-ci/container/debian/baremetal_arm_test.sh
|
|
@@ -3,6 +3,7 @@
|
|||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_BASE_TAG
|
# DEBIAN_BASE_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -41,3 +42,15 @@ curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
|||||||
-o /usr/share/snmp/mibs/SNMPv2-SMI.txt
|
-o /usr/share/snmp/mibs/SNMPv2-SMI.txt
|
||||||
|
|
||||||
. .gitlab-ci/container/baremetal_build.sh
|
. .gitlab-ci/container/baremetal_build.sh
|
||||||
|
|
||||||
|
mkdir -p /baremetal-files/jetson-nano/boot/
|
||||||
|
ln -s \
|
||||||
|
/baremetal-files/Image \
|
||||||
|
/baremetal-files/tegra210-p3450-0000.dtb \
|
||||||
|
/baremetal-files/jetson-nano/boot/
|
||||||
|
|
||||||
|
mkdir -p /baremetal-files/jetson-tk1/boot/
|
||||||
|
ln -s \
|
||||||
|
/baremetal-files/zImage \
|
||||||
|
/baremetal-files/tegra124-jetson-tk1.dtb \
|
||||||
|
/baremetal-files/jetson-tk1/boot/
|
||||||
|
@@ -21,8 +21,6 @@ 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
|
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
|
||||||
|
|
||||||
echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] https://deb.debian.org/debian ${FDO_DISTRIBUTION_VERSION%-*} non-free-firmware" | tee /etc/apt/sources.list.d/non-free-firmware.list
|
|
||||||
|
|
||||||
: "${LLVM_VERSION:?llvm version not set!}"
|
: "${LLVM_VERSION:?llvm version not set!}"
|
||||||
|
|
||||||
. .gitlab-ci/container/debian/maybe-add-llvm-repo.sh
|
. .gitlab-ci/container/debian/maybe-add-llvm-repo.sh
|
||||||
@@ -73,13 +71,13 @@ EPHEMERAL=(
|
|||||||
"llvm-${LLVM_VERSION}-dev"
|
"llvm-${LLVM_VERSION}-dev"
|
||||||
make
|
make
|
||||||
meson
|
meson
|
||||||
|
openssh-server
|
||||||
patch
|
patch
|
||||||
pkgconf
|
pkgconf
|
||||||
protobuf-compiler
|
protobuf-compiler
|
||||||
python3-dev
|
python3-dev
|
||||||
python3-pip
|
python3-pip
|
||||||
python3-setuptools
|
python3-setuptools
|
||||||
python3-venv
|
|
||||||
python3-wheel
|
python3-wheel
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
xz-utils
|
xz-utils
|
||||||
@@ -89,7 +87,6 @@ DEPS=(
|
|||||||
apt-utils
|
apt-utils
|
||||||
clinfo
|
clinfo
|
||||||
curl
|
curl
|
||||||
dropbear
|
|
||||||
git
|
git
|
||||||
git-lfs
|
git-lfs
|
||||||
inetutils-syslogd
|
inetutils-syslogd
|
||||||
@@ -132,7 +129,6 @@ DEPS=(
|
|||||||
python3-simplejson
|
python3-simplejson
|
||||||
python3-six
|
python3-six
|
||||||
python3-yaml
|
python3-yaml
|
||||||
sntp
|
|
||||||
socat
|
socat
|
||||||
spirv-tools
|
spirv-tools
|
||||||
sysvinit-core
|
sysvinit-core
|
||||||
@@ -146,58 +142,34 @@ DEPS=(
|
|||||||
xauth
|
xauth
|
||||||
xvfb
|
xvfb
|
||||||
zlib1g
|
zlib1g
|
||||||
)
|
|
||||||
|
|
||||||
HW_DEPS=(
|
|
||||||
firmware-realtek
|
|
||||||
netcat-openbsd
|
|
||||||
mount
|
|
||||||
python3-distutils
|
|
||||||
python3-serial
|
|
||||||
tzdata
|
|
||||||
zstd
|
zstd
|
||||||
)
|
)
|
||||||
|
|
||||||
[ "$DEBIAN_ARCH" = "arm64" ] && ARCH_DEPS=(
|
|
||||||
firmware-linux-nonfree
|
|
||||||
firmware-qcom-media
|
|
||||||
)
|
|
||||||
[ "$DEBIAN_ARCH" = "armhf" ] && ARCH_DEPS=(
|
|
||||||
firmware-misc-nonfree
|
|
||||||
)
|
|
||||||
[ "$DEBIAN_ARCH" = "amd64" ] && ARCH_DEPS=(
|
|
||||||
firmware-amd-graphics
|
|
||||||
firmware-misc-nonfree
|
|
||||||
)
|
|
||||||
|
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get dist-upgrade -y
|
apt-get dist-upgrade -y
|
||||||
|
|
||||||
apt-get install --purge -y \
|
apt-get install --purge -y \
|
||||||
sysvinit-core libelogind0
|
sysvinit-core libelogind0
|
||||||
|
|
||||||
apt-get install -y --no-remove "${DEPS[@]}" "${HW_DEPS[@]}" "${ARCH_DEPS[@]}"
|
apt-get install -y --no-remove "${DEPS[@]}"
|
||||||
|
|
||||||
apt-get install -y --no-install-recommends "${EPHEMERAL[@]}"
|
apt-get install -y --no-install-recommends "${EPHEMERAL[@]}"
|
||||||
|
|
||||||
. .gitlab-ci/container/container_pre_build.sh
|
. .gitlab-ci/container/container_pre_build.sh
|
||||||
|
|
||||||
# Needed for ci-fairy s3cp
|
# Needed for ci-fairy, this revision is able to upload files to MinIO
|
||||||
pip3 install --break-system-packages "ci-fairy[s3] @ git+https://gitlab.freedesktop.org/freedesktop/ci-templates@$MESA_TEMPLATES_COMMIT"
|
# 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.
|
# Needed for manipulation with traces yaml files.
|
||||||
pip3 install --break-system-packages yq
|
pip3 install --break-system-packages yq
|
||||||
|
|
||||||
section_end debian_setup
|
section_end debian_setup
|
||||||
|
|
||||||
############### Build ci-kdl
|
############### Download prebuilt kernel
|
||||||
|
|
||||||
. .gitlab-ci/container/build-kdl.sh
|
|
||||||
|
|
||||||
############### Download prebuilt kernel and firmware
|
|
||||||
|
|
||||||
if [ "$DEBIAN_ARCH" = amd64 ]; then
|
if [ "$DEBIAN_ARCH" = amd64 ]; then
|
||||||
uncollapsed_section_start kernel "Downloading kernel and firmware"
|
uncollapsed_section_start kernel "Downloading kernel for crosvm"
|
||||||
export KERNEL_IMAGE_NAME=bzImage
|
export KERNEL_IMAGE_NAME=bzImage
|
||||||
mkdir -p /kernel
|
mkdir -p /kernel
|
||||||
# shellcheck disable=SC2153 # KERNEL_IMAGE_BASE is set in the root .gitlab-ci.yml file
|
# shellcheck disable=SC2153 # KERNEL_IMAGE_BASE is set in the root .gitlab-ci.yml file
|
||||||
@@ -205,7 +177,6 @@ if [ "$DEBIAN_ARCH" = amd64 ]; then
|
|||||||
-o "/kernel/${KERNEL_IMAGE_NAME}" "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/${KERNEL_IMAGE_NAME}"
|
-o "/kernel/${KERNEL_IMAGE_NAME}" "${KERNEL_IMAGE_BASE}/${DEBIAN_ARCH}/${KERNEL_IMAGE_NAME}"
|
||||||
section_end kernel
|
section_end kernel
|
||||||
fi
|
fi
|
||||||
. .gitlab-ci/container/get-firmware-from-source.sh / "$FIRMWARE_FILES"
|
|
||||||
|
|
||||||
############### Build mold
|
############### Build mold
|
||||||
|
|
||||||
|
@@ -27,15 +27,12 @@ EPHEMERAL=(
|
|||||||
libcap-dev
|
libcap-dev
|
||||||
"libclang-cpp${LLVM_VERSION}-dev"
|
"libclang-cpp${LLVM_VERSION}-dev"
|
||||||
libdrm-dev
|
libdrm-dev
|
||||||
libfontconfig-dev
|
|
||||||
libgl-dev
|
|
||||||
libgles2-mesa-dev
|
libgles2-mesa-dev
|
||||||
libglu1-mesa-dev
|
|
||||||
libgtest-dev
|
libgtest-dev
|
||||||
libglx-dev
|
|
||||||
libpciaccess-dev
|
libpciaccess-dev
|
||||||
libpng-dev
|
libpng-dev
|
||||||
libudev-dev
|
libudev-dev
|
||||||
|
libvulkan-dev
|
||||||
libwaffle-dev
|
libwaffle-dev
|
||||||
libwayland-dev
|
libwayland-dev
|
||||||
libx11-xcb-dev
|
libx11-xcb-dev
|
||||||
@@ -53,15 +50,11 @@ EPHEMERAL=(
|
|||||||
ocl-icd-opencl-dev
|
ocl-icd-opencl-dev
|
||||||
patch
|
patch
|
||||||
pkgconf
|
pkgconf
|
||||||
python-is-python3
|
|
||||||
python3-distutils
|
python3-distutils
|
||||||
xz-utils
|
xz-utils
|
||||||
)
|
)
|
||||||
|
|
||||||
DEPS=(
|
DEPS=(
|
||||||
libfontconfig1
|
|
||||||
libglu1-mesa
|
|
||||||
libvulkan-dev
|
|
||||||
)
|
)
|
||||||
|
|
||||||
apt-get update
|
apt-get update
|
||||||
@@ -76,7 +69,7 @@ section_end debian_setup
|
|||||||
|
|
||||||
############### Build ANGLE
|
############### Build ANGLE
|
||||||
|
|
||||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
if [ "$DEBIAN_ARCH" == "arm64" ]; then
|
||||||
ANGLE_TARGET=linux \
|
ANGLE_TARGET=linux \
|
||||||
. .gitlab-ci/container/build-angle.sh
|
. .gitlab-ci/container/build-angle.sh
|
||||||
fi
|
fi
|
||||||
@@ -119,13 +112,6 @@ rm -rf /VK-GL-CTS
|
|||||||
|
|
||||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||||
|
|
||||||
|
|
||||||
############### Build SKQP
|
|
||||||
|
|
||||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
|
||||||
. .gitlab-ci/container/build-skqp.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
############### Build nine tests
|
############### Build nine tests
|
||||||
|
|
||||||
. .gitlab-ci/container/build-ninetests.sh
|
. .gitlab-ci/container/build-ninetests.sh
|
||||||
|
@@ -99,8 +99,8 @@ apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
|||||||
|
|
||||||
. .gitlab-ci/container/build-libclc.sh
|
. .gitlab-ci/container/build-libclc.sh
|
||||||
|
|
||||||
# Needed for ci-fairy s3cp
|
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||||
pip3 install --break-system-packages "ci-fairy[s3] @ git+https://gitlab.freedesktop.org/freedesktop/ci-templates@$MESA_TEMPLATES_COMMIT"
|
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||||
|
|
||||||
. .gitlab-ci/container/install-meson.sh
|
. .gitlab-ci/container/install-meson.sh
|
||||||
|
|
||||||
|
@@ -54,8 +54,8 @@ apt-get update
|
|||||||
apt-get install -y --no-remove --no-install-recommends "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
apt-get install -y --no-remove --no-install-recommends "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||||
"${EXTRA_LOCAL_PACKAGES:-}"
|
"${EXTRA_LOCAL_PACKAGES:-}"
|
||||||
|
|
||||||
# Needed for ci-fairy s3cp
|
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||||
pip3 install --break-system-packages "ci-fairy[s3] @ git+https://gitlab.freedesktop.org/freedesktop/ci-templates@$MESA_TEMPLATES_COMMIT"
|
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||||
|
|
||||||
pip3 install --break-system-packages -r bin/ci/test/requirements.txt
|
pip3 install --break-system-packages -r bin/ci/test/requirements.txt
|
||||||
|
|
||||||
|
@@ -12,8 +12,6 @@ set -e
|
|||||||
|
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
section_start debian_setup "Base Debian system setup"
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
# Ephemeral packages (installed for this script and removed again at the end)
|
# Ephemeral packages (installed for this script and removed again at the end)
|
||||||
@@ -30,7 +28,6 @@ EPHEMERAL=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
DEPS=(
|
DEPS=(
|
||||||
aapt
|
|
||||||
iproute2
|
iproute2
|
||||||
)
|
)
|
||||||
apt-get install -y --no-remove --no-install-recommends \
|
apt-get install -y --no-remove --no-install-recommends \
|
||||||
@@ -40,21 +37,15 @@ apt-get install -y --no-remove --no-install-recommends \
|
|||||||
|
|
||||||
. .gitlab-ci/container/container_pre_build.sh
|
. .gitlab-ci/container/container_pre_build.sh
|
||||||
|
|
||||||
section_end debian_setup
|
|
||||||
|
|
||||||
############### Downloading NDK for native builds for the guest ...
|
############### Downloading NDK for native builds for the guest ...
|
||||||
|
|
||||||
section_start android-ndk "Downloading Android NDK"
|
|
||||||
|
|
||||||
# Fetch the NDK and extract just the toolchain we want.
|
# Fetch the NDK and extract just the toolchain we want.
|
||||||
ndk="android-ndk-${ANDROID_NDK_VERSION}"
|
ndk="android-ndk-${ANDROID_NDK_VERSION}"
|
||||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
-o "$ndk.zip" "https://dl.google.com/android/repository/$ndk-linux.zip"
|
-o "$ndk.zip" "https://dl.google.com/android/repository/$ndk-linux.zip"
|
||||||
unzip -q -d / "$ndk.zip"
|
unzip -d / "$ndk.zip"
|
||||||
rm "$ndk.zip"
|
rm "$ndk.zip"
|
||||||
|
|
||||||
section_end android-ndk
|
|
||||||
|
|
||||||
############### Build ANGLE
|
############### Build ANGLE
|
||||||
|
|
||||||
ANGLE_TARGET=android \
|
ANGLE_TARGET=android \
|
||||||
@@ -92,7 +83,7 @@ rm -rf /VK-GL-CTS
|
|||||||
|
|
||||||
############### Downloading Cuttlefish resources ...
|
############### Downloading Cuttlefish resources ...
|
||||||
|
|
||||||
section_start cuttlefish "Downloading, building and installing Cuttlefish"
|
uncollapsed_section_start cuttlefish "Downloading, building and installing Cuttlefish"
|
||||||
|
|
||||||
CUTTLEFISH_PROJECT_PATH=ao2/aosp-manifest
|
CUTTLEFISH_PROJECT_PATH=ao2/aosp-manifest
|
||||||
CUTTLEFISH_BUILD_VERSION_TAGS=mesa-venus
|
CUTTLEFISH_BUILD_VERSION_TAGS=mesa-venus
|
||||||
@@ -147,29 +138,40 @@ usermod -a -G kvm,cvdnetwork root
|
|||||||
|
|
||||||
section_end cuttlefish
|
section_end cuttlefish
|
||||||
|
|
||||||
############### Downloading Android CTS
|
############### Downloading Android CTS tools
|
||||||
|
|
||||||
section_start android-cts "Downloading Android CTS"
|
uncollapsed_section_start android-cts "Downloading Android CTS tools"
|
||||||
|
|
||||||
ANDROID_CTS_VERSION="${ANDROID_VERSION}_r1"
|
ANDROID_CTS_VERSION="${ANDROID_VERSION}_r1"
|
||||||
ANDROID_CTS_DEVICE_ARCH="x86"
|
ANDROID_CTS_DEVICE_ARCH="x86"
|
||||||
|
|
||||||
|
mkdir /android-tools
|
||||||
|
pushd /android-tools
|
||||||
|
|
||||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
-o "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip" \
|
-o "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip" \
|
||||||
"https://dl.google.com/dl/android/cts/android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
"https://dl.google.com/dl/android/cts/android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||||
unzip -q -d / "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
unzip "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||||
rm "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
rm "android-cts-${ANDROID_CTS_VERSION}-linux_x86-${ANDROID_CTS_DEVICE_ARCH}.zip"
|
||||||
|
|
||||||
# Keep only the interesting tests to save space
|
# Keep only the interesting tests to save space
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
ANDROID_CTS_MODULES_KEEP_EXPRESSION=$(printf "%s|" $ANDROID_CTS_MODULES | sed -e 's/|$//g')
|
ANDROID_CTS_MODULES_KEEP_EXPRESSION=$(printf "%s|" $ANDROID_CTS_MODULES | sed -e 's/|$//g')
|
||||||
find /android-cts/testcases/ -mindepth 1 -type d | grep -v -E "$ANDROID_CTS_MODULES_KEEP_EXPRESSION" | xargs rm -rf
|
find android-cts/testcases/ -mindepth 1 -type d | grep -v -E "$ANDROID_CTS_MODULES_KEEP_EXPRESSION" | xargs rm -rf
|
||||||
|
|
||||||
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
||||||
|
-o "build-tools_r${ANDROID_SDK_VERSION}-linux.zip" "https://dl.google.com/android/repository/build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||||
|
unzip "build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||||
|
rm "build-tools_r${ANDROID_SDK_VERSION}-linux.zip"
|
||||||
|
mv "android-$ANDROID_VERSION" build-tools
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
section_end android-cts
|
section_end android-cts
|
||||||
|
|
||||||
############### Uninstall the build software
|
############### Uninstall the build software
|
||||||
|
|
||||||
section_switch debian_cleanup "Cleaning up base Debian system"
|
uncollapsed_section_switch debian_cleanup "Cleaning up base Debian system"
|
||||||
|
|
||||||
rm -rf "/${ndk:?}"
|
rm -rf "/${ndk:?}"
|
||||||
|
|
||||||
|
@@ -1,71 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# The relative paths in this file only become valid at runtime.
|
|
||||||
# shellcheck disable=SC1091
|
|
||||||
#
|
|
||||||
# When changing this file, you need to bump the following
|
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
. .gitlab-ci/setup-test-env.sh
|
|
||||||
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
section_start debian_setup "Base Debian system setup"
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
apt-get install -y gstreamer1.0-vaapi # This interferes with systemd deps, install separately
|
|
||||||
|
|
||||||
# Ephemeral packages (installed for this script and removed again at the end)
|
|
||||||
EPHEMERAL=(
|
|
||||||
g++
|
|
||||||
libdrm-dev
|
|
||||||
libva-dev
|
|
||||||
meson
|
|
||||||
pkgconf
|
|
||||||
)
|
|
||||||
|
|
||||||
DEPS=(
|
|
||||||
gstreamer1.0-plugins-bad
|
|
||||||
gstreamer1.0-plugins-base
|
|
||||||
gstreamer1.0-plugins-good
|
|
||||||
gstreamer1.0-plugins-ugly
|
|
||||||
gstreamer1.0-tools
|
|
||||||
libgstreamer1.0-0
|
|
||||||
libva-drm2
|
|
||||||
libva-wayland2
|
|
||||||
libva2
|
|
||||||
)
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
apt-get install -y --no-remove --no-install-recommends \
|
|
||||||
"${DEPS[@]}" "${EPHEMERAL[@]}" "${EXTRA_LOCAL_PACKAGES:-}"
|
|
||||||
|
|
||||||
. .gitlab-ci/container/container_pre_build.sh
|
|
||||||
|
|
||||||
section_end debian_setup
|
|
||||||
|
|
||||||
############### Build libva tests
|
|
||||||
|
|
||||||
. .gitlab-ci/container/build-va-tools.sh
|
|
||||||
|
|
||||||
############### Install Fluster
|
|
||||||
|
|
||||||
. .gitlab-ci/container/build-fluster.sh
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
|
||||||
|
|
||||||
section_switch debian_cleanup "Cleaning up base Debian system"
|
|
||||||
|
|
||||||
apt-get purge -y "${EPHEMERAL[@]}"
|
|
||||||
|
|
||||||
. .gitlab-ci/container/container_post_build.sh
|
|
||||||
|
|
||||||
section_end debian_cleanup
|
|
||||||
|
|
||||||
############### Remove unused packages
|
|
||||||
|
|
||||||
. .gitlab-ci/container/strip-rootfs.sh
|
|
@@ -1,73 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# This script exports the container image to a rootfs tarball and uploads it to
|
|
||||||
# S3.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# ./fdo_cntr_export.sh <container-image-url>
|
|
||||||
#
|
|
||||||
# The container image URL is the URL of the container image to export. It can be
|
|
||||||
# a local path or a remote URL.
|
|
||||||
|
|
||||||
# Example:
|
|
||||||
# ./fdo_cntr_export.sh registry.freedesktop.org/mesa/mesa/debian/x86_64_test-android:tag
|
|
||||||
|
|
||||||
# When changing this file, you need to bump the following
|
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
|
||||||
# DEBIAN_TEST_GL_TAG
|
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
|
||||||
# DEBIAN_TEST_VK_TAG
|
|
||||||
|
|
||||||
set -eux -o pipefail
|
|
||||||
|
|
||||||
: "${CONTAINER:=$1}"
|
|
||||||
IMAGE_URL="${CONTAINER}"
|
|
||||||
readonly IMAGE_URL
|
|
||||||
|
|
||||||
container=$(buildah from "$IMAGE_URL")
|
|
||||||
readonly container
|
|
||||||
readonly ROOTFSTAR=lava-rootfs.tar.zst
|
|
||||||
touch "$ROOTFSTAR"
|
|
||||||
|
|
||||||
buildah copy "$container" ".gitlab-ci/container/setup-rootfs.sh" /root/setup-rootfs.sh
|
|
||||||
|
|
||||||
# Using --isolation chroot to ensure proper execution in CI/CD environments
|
|
||||||
buildah run --isolation chroot "$container" -- /root/setup-rootfs.sh
|
|
||||||
|
|
||||||
buildah_export() {
|
|
||||||
# Mount the volume
|
|
||||||
mountpoint=$(buildah mount "$1")
|
|
||||||
|
|
||||||
if [ ! -d "$mountpoint" ]; then
|
|
||||||
echo "Mount point not found: $mountpoint" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compress to zstd
|
|
||||||
ZSTD_CLEVEL=10 tar -C "$mountpoint" -I zstd -cf "$2" .
|
|
||||||
}
|
|
||||||
|
|
||||||
# When hacking on it locally, the script might not be executed as root.
|
|
||||||
# In CI it's always root.
|
|
||||||
if (($(id -u) != 0)); then
|
|
||||||
# Run unshare for rootless envs
|
|
||||||
buildah unshare -- bash -c "$(declare -f buildah_export); buildah_export '$container' '$ROOTFSTAR'"
|
|
||||||
else
|
|
||||||
# Run directly
|
|
||||||
buildah_export "$container" "$ROOTFSTAR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Unmount the container
|
|
||||||
buildah umount "$container"
|
|
||||||
|
|
||||||
# Remove the container
|
|
||||||
buildah rm "$container"
|
|
||||||
|
|
||||||
# Upload the rootfs tarball to S3.
|
|
||||||
# The URL format matches the registry format, and LAVA_DISTRIBUTION_TAG is
|
|
||||||
# used later to match this URL.
|
|
||||||
curl --fail --retry-connrefused --retry 4 --retry-delay 30 \
|
|
||||||
--header "Authorization: Bearer $(cat "${S3_JWT_FILE}")" \
|
|
||||||
-X PUT --form file=@"$ROOTFSTAR" \
|
|
||||||
"https://${S3_HOST}/${S3_KERNEL_BUCKET}/${CI_PROJECT_PATH}/${CI_JOB_NAME}:${FDO_DISTRIBUTION_TAG}"
|
|
@@ -78,35 +78,17 @@
|
|||||||
# should make CI_BUILD_COMPONENTS="angle piglit"
|
# should make CI_BUILD_COMPONENTS="angle piglit"
|
||||||
CI_BUILD_COMPONENTS: "angle"
|
CI_BUILD_COMPONENTS: "angle"
|
||||||
|
|
||||||
.container-builds-piglit:
|
|
||||||
variables:
|
|
||||||
PIGLIT_TAG: "${CONDITIONAL_BUILD_PIGLIT_TAG}"
|
|
||||||
|
|
||||||
.container-builds-x86_64:
|
.container-builds-x86_64:
|
||||||
extends:
|
extends:
|
||||||
- .container-builds-angle
|
- .container-builds-angle
|
||||||
- .container-builds-piglit
|
|
||||||
variables:
|
variables:
|
||||||
CI_BUILD_COMPONENTS: "angle piglit"
|
CI_BUILD_COMPONENTS: "angle"
|
||||||
|
|
||||||
.container-builds-arm32:
|
|
||||||
extends:
|
|
||||||
- .container-builds-piglit
|
|
||||||
variables:
|
|
||||||
CI_BUILD_COMPONENTS: "piglit"
|
|
||||||
|
|
||||||
.container-builds-arm64:
|
.container-builds-arm64:
|
||||||
extends:
|
extends:
|
||||||
- .container-builds-angle
|
- .container-builds-angle
|
||||||
- .container-builds-piglit
|
|
||||||
variables:
|
variables:
|
||||||
CI_BUILD_COMPONENTS: "angle piglit"
|
CI_BUILD_COMPONENTS: "angle"
|
||||||
|
|
||||||
# Export the container rootfs and upload it to S3
|
|
||||||
.export-container:
|
|
||||||
variables:
|
|
||||||
FDO_DISTRIBUTION_PACKAGES: zstd
|
|
||||||
FDO_DISTRIBUTION_POST_EXEC: 'bash .gitlab-ci/container/fdo_cntr_export.sh'
|
|
||||||
|
|
||||||
.use-base-image:
|
.use-base-image:
|
||||||
extends:
|
extends:
|
||||||
@@ -131,6 +113,7 @@ debian/x86_64_build-base:
|
|||||||
variables:
|
variables:
|
||||||
MESA_BASE_IMAGE: "debian/x86_64_build-base"
|
MESA_BASE_IMAGE: "debian/x86_64_build-base"
|
||||||
MESA_BASE_TAG: *debian-x86_64_build-base
|
MESA_BASE_TAG: *debian-x86_64_build-base
|
||||||
|
MESA_ARTIFACTS_BASE_TAG: *debian-x86_64_build-base
|
||||||
LLVM_VERSION: *debian-x86_64-llvm
|
LLVM_VERSION: *debian-x86_64-llvm
|
||||||
needs:
|
needs:
|
||||||
- debian/x86_64_build-base
|
- debian/x86_64_build-base
|
||||||
@@ -220,15 +203,14 @@ debian/s390x_build:
|
|||||||
|
|
||||||
# Android NDK cross-build image
|
# Android NDK cross-build image
|
||||||
.android-variables:
|
.android-variables:
|
||||||
|
extends:
|
||||||
|
- .container-builds-android
|
||||||
variables:
|
variables:
|
||||||
ANDROID_VERSION: 14
|
ANDROID_VERSION: 14
|
||||||
ANDROID_NDK_VERSION: "r27c"
|
ANDROID_NDK_VERSION: "r27c"
|
||||||
ANDROID_SDK_VERSION: 34
|
ANDROID_SDK_VERSION: 34
|
||||||
# Space-separated list of interesting CTS modules
|
# Space-separated list of interesting CTS modules
|
||||||
ANDROID_CTS_MODULES: >-
|
ANDROID_CTS_MODULES: CtsGraphicsTestCases
|
||||||
CtsGraphicsTestCases
|
|
||||||
CtsNativeHardwareTestCases
|
|
||||||
CtsSkQPTestCases
|
|
||||||
ANDROID_LLVM_VERSION: llvmorg-19.1.7
|
ANDROID_LLVM_VERSION: llvmorg-19.1.7
|
||||||
ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20250324
|
ANDROID_LLVM_ARTIFACT_NAME: android-x86_64-llvm-20250324
|
||||||
# This can be confusing: LLVM_VERSION refers to the host LLVM toolchain
|
# This can be confusing: LLVM_VERSION refers to the host LLVM toolchain
|
||||||
@@ -239,6 +221,7 @@ debian/s390x_build:
|
|||||||
debian/android_build:
|
debian/android_build:
|
||||||
extends:
|
extends:
|
||||||
- .android-variables
|
- .android-variables
|
||||||
|
- .container-builds-android
|
||||||
- .use-debian/x86_64_build-base
|
- .use-debian/x86_64_build-base
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
|
MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
|
||||||
@@ -331,9 +314,9 @@ fedora/x86_64_build:
|
|||||||
- .fdo.container-build@fedora
|
- .fdo.container-build@fedora
|
||||||
- .container
|
- .container
|
||||||
variables:
|
variables:
|
||||||
FDO_DISTRIBUTION_VERSION: 42
|
FDO_DISTRIBUTION_VERSION: 41
|
||||||
MESA_IMAGE_TAG: &fedora-x86_64_build ${FEDORA_X86_64_BUILD_TAG}
|
MESA_IMAGE_TAG: &fedora-x86_64_build ${FEDORA_X86_64_BUILD_TAG}
|
||||||
LLVM_VERSION: &fedora-x86_64-llvm 20
|
LLVM_VERSION: &fedora-x86_64-llvm 19
|
||||||
|
|
||||||
.use-fedora/x86_64_build:
|
.use-fedora/x86_64_build:
|
||||||
tags:
|
tags:
|
||||||
@@ -351,7 +334,6 @@ fedora/x86_64_build:
|
|||||||
debian/x86_64_test-base:
|
debian/x86_64_test-base:
|
||||||
extends:
|
extends:
|
||||||
- .debian-container
|
- .debian-container
|
||||||
- .firmware_x86_64
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-x86_64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}"
|
MESA_IMAGE_TAG: &debian-x86_64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}"
|
||||||
LLVM_VERSION: *debian-x86_64-llvm
|
LLVM_VERSION: *debian-x86_64-llvm
|
||||||
@@ -403,7 +385,6 @@ debian/arm64_test-base:
|
|||||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||||
extends:
|
extends:
|
||||||
- .debian-container
|
- .debian-container
|
||||||
- .firmware_arm64
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-arm64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
MESA_IMAGE_TAG: &debian-arm64_test-base "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||||
LLVM_VERSION: *debian-arm64-llvm
|
LLVM_VERSION: *debian-arm64-llvm
|
||||||
@@ -424,13 +405,9 @@ debian/arm64_test-base:
|
|||||||
|
|
||||||
# Debian based x86_64 test image for GL
|
# Debian based x86_64 test image for GL
|
||||||
debian/x86_64_test-gl:
|
debian/x86_64_test-gl:
|
||||||
extends:
|
extends: .use-debian/x86_64_test-base
|
||||||
- .use-debian/x86_64_test-base
|
|
||||||
- .container-builds-x86_64
|
|
||||||
- .export-container
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG}
|
MESA_IMAGE_TAG: &debian-x86_64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/x86_64_test-gl:${DEBIAN_TEST_GL_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/x86_64_test-gl:
|
.use-debian/x86_64_test-gl:
|
||||||
tags:
|
tags:
|
||||||
@@ -446,13 +423,9 @@ debian/x86_64_test-gl:
|
|||||||
|
|
||||||
# Debian based x86_64 test image for VK
|
# Debian based x86_64 test image for VK
|
||||||
debian/x86_64_test-vk:
|
debian/x86_64_test-vk:
|
||||||
extends:
|
extends: .use-debian/x86_64_test-base
|
||||||
- .use-debian/x86_64_test-base
|
|
||||||
- .container-builds-x86_64
|
|
||||||
- .export-container
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG}
|
MESA_IMAGE_TAG: &debian-x86_64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/x86_64_test-vk:${DEBIAN_TEST_VK_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/x86_64_test-vk:
|
.use-debian/x86_64_test-vk:
|
||||||
tags:
|
tags:
|
||||||
@@ -471,7 +444,6 @@ debian/x86_64_test-android:
|
|||||||
extends:
|
extends:
|
||||||
- .android-variables
|
- .android-variables
|
||||||
- .use-debian/x86_64_test-base
|
- .use-debian/x86_64_test-base
|
||||||
- .container-builds-android
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG}
|
MESA_IMAGE_TAG: &debian-x86_64_test-android ${DEBIAN_TEST_ANDROID_TAG}
|
||||||
|
|
||||||
@@ -488,27 +460,6 @@ debian/x86_64_test-android:
|
|||||||
needs:
|
needs:
|
||||||
- debian/x86_64_test-android
|
- debian/x86_64_test-android
|
||||||
|
|
||||||
# Debian based x86_64 test image for video
|
|
||||||
debian/x86_64_test-video:
|
|
||||||
extends:
|
|
||||||
- .use-debian/x86_64_test-base
|
|
||||||
- .export-container
|
|
||||||
variables:
|
|
||||||
MESA_IMAGE_TAG: &debian-x86_64_test-video ${DEBIAN_TEST_VIDEO_TAG}
|
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/x86_64_test-video:${DEBIAN_TEST_VIDEO_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/x86_64_test-video:
|
|
||||||
tags:
|
|
||||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
|
||||||
extends:
|
|
||||||
- .set-image-base-tag
|
|
||||||
variables:
|
|
||||||
MESA_BASE_TAG: *debian-x86_64_test-base
|
|
||||||
MESA_IMAGE_PATH: "debian/x86_64_test-video"
|
|
||||||
MESA_IMAGE_TAG: *debian-x86_64_test-video
|
|
||||||
needs:
|
|
||||||
- debian/x86_64_test-video
|
|
||||||
|
|
||||||
# Debian-based x86_64 image to run Python utilities
|
# Debian-based x86_64 image to run Python utilities
|
||||||
debian/x86_64_pyutils:
|
debian/x86_64_pyutils:
|
||||||
extends:
|
extends:
|
||||||
@@ -533,13 +484,9 @@ debian/x86_64_pyutils:
|
|||||||
debian/arm32_test-gl:
|
debian/arm32_test-gl:
|
||||||
tags:
|
tags:
|
||||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||||
extends:
|
extends: .use-debian/arm32_test-base
|
||||||
- .use-debian/arm32_test-base
|
|
||||||
- .container-builds-arm32
|
|
||||||
- .export-container
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-arm32_test-gl ${DEBIAN_TEST_GL_TAG}
|
MESA_IMAGE_TAG: &debian-arm32_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/arm32_test-gl:${DEBIAN_TEST_GL_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/arm32_test-gl:
|
.use-debian/arm32_test-gl:
|
||||||
tags:
|
tags:
|
||||||
@@ -559,9 +506,7 @@ debian/arm32_test-vk:
|
|||||||
- when: never # There are currently no arm32 VK jobs
|
- when: never # There are currently no arm32 VK jobs
|
||||||
tags:
|
tags:
|
||||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||||
extends:
|
extends: .use-debian/arm32_test-base
|
||||||
- .use-debian/arm32_test-base
|
|
||||||
- .container-builds-arm32
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-arm32_test-vk ${DEBIAN_TEST_VK_TAG}
|
MESA_IMAGE_TAG: &debian-arm32_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||||
|
|
||||||
@@ -584,10 +529,8 @@ debian/arm64_test-gl:
|
|||||||
extends:
|
extends:
|
||||||
- .use-debian/arm64_test-base
|
- .use-debian/arm64_test-base
|
||||||
- .container-builds-arm64
|
- .container-builds-arm64
|
||||||
- .export-container
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG}
|
MESA_IMAGE_TAG: &debian-arm64_test-gl ${DEBIAN_TEST_GL_TAG}
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/arm64_test-gl:${DEBIAN_TEST_GL_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/arm64_test-gl:
|
.use-debian/arm64_test-gl:
|
||||||
tags:
|
tags:
|
||||||
@@ -605,13 +548,9 @@ debian/arm64_test-gl:
|
|||||||
debian/arm64_test-vk:
|
debian/arm64_test-vk:
|
||||||
tags:
|
tags:
|
||||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
- $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
|
||||||
extends:
|
extends: .use-debian/arm64_test-base
|
||||||
- .use-debian/arm64_test-base
|
|
||||||
- .container-builds-arm64
|
|
||||||
- .export-container
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG}
|
MESA_IMAGE_TAG: &debian-arm64_test-vk ${DEBIAN_TEST_VK_TAG}
|
||||||
LAVA_DISTRIBUTION_TAG: "debian/arm64_test-vk:${DEBIAN_TEST_VK_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
|
|
||||||
.use-debian/arm64_test-vk:
|
.use-debian/arm64_test-vk:
|
||||||
tags:
|
tags:
|
||||||
@@ -626,7 +565,7 @@ debian/arm64_test-vk:
|
|||||||
- debian/arm64_test-vk
|
- debian/arm64_test-vk
|
||||||
|
|
||||||
# Get firmware directly rather than using package versions.
|
# Get firmware directly rather than using package versions.
|
||||||
# Change DEBIAN_BASE_TAG to add firmware changes.
|
# Change KERNEL_ROOTFS_TAG to add firmware changes.
|
||||||
# FIRMWARE_FILES is a list of json files arranged by vendor in .gitlab-ci/firmware/*
|
# FIRMWARE_FILES is a list of json files arranged by vendor in .gitlab-ci/firmware/*
|
||||||
.firmware_x86_64:
|
.firmware_x86_64:
|
||||||
variables:
|
variables:
|
||||||
@@ -643,6 +582,60 @@ debian/arm64_test-vk:
|
|||||||
variables:
|
variables:
|
||||||
FIRMWARE_FILES: |
|
FIRMWARE_FILES: |
|
||||||
|
|
||||||
|
.kernel+rootfs:
|
||||||
|
extends:
|
||||||
|
- .container+build-rules
|
||||||
|
- .debian-container-version
|
||||||
|
stage: container
|
||||||
|
timeout: 120m
|
||||||
|
variables:
|
||||||
|
GIT_STRATEGY: fetch
|
||||||
|
MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG}
|
||||||
|
DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
|
script:
|
||||||
|
- .gitlab-ci/container/lava_build.sh
|
||||||
|
|
||||||
|
kernel+rootfs_x86_64:
|
||||||
|
extends:
|
||||||
|
- .use-debian/x86_64_build-base
|
||||||
|
- .kernel+rootfs
|
||||||
|
- .firmware_x86_64
|
||||||
|
- .container-builds-x86_64
|
||||||
|
image: "$FDO_BASE_IMAGE"
|
||||||
|
variables:
|
||||||
|
DEBIAN_ARCH: "amd64"
|
||||||
|
DISTRIBUTION_TAG: &distribution-tag-x86_64 "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
|
LLVM_VERSION: *debian-x86_64-llvm
|
||||||
|
|
||||||
|
kernel+rootfs_arm64:
|
||||||
|
extends:
|
||||||
|
- .use-debian/arm64_build
|
||||||
|
- .kernel+rootfs
|
||||||
|
- .firmware_arm64
|
||||||
|
- .container-builds-arm64
|
||||||
|
variables:
|
||||||
|
DEBIAN_ARCH: "arm64"
|
||||||
|
LLVM_VERSION: *debian-arm64-llvm
|
||||||
|
|
||||||
|
kernel+rootfs_arm32:
|
||||||
|
extends:
|
||||||
|
- kernel+rootfs_arm64
|
||||||
|
- .firmware_arm32
|
||||||
|
variables:
|
||||||
|
DEBIAN_ARCH: "armhf"
|
||||||
|
LLVM_VERSION: &debian-arm32-llvm 15 # no armhf builds for LLVM
|
||||||
|
|
||||||
|
# Cannot use anchors defined here from included files, so use extends: instead
|
||||||
|
.use-kernel+rootfs-arm:
|
||||||
|
variables:
|
||||||
|
DISTRIBUTION_TAG: *distribution-tag-arm
|
||||||
|
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||||
|
|
||||||
|
.use-kernel+rootfs-x86_64:
|
||||||
|
variables:
|
||||||
|
DISTRIBUTION_TAG: *distribution-tag-x86_64
|
||||||
|
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||||
|
|
||||||
# x86_64 image with ARM64 & ARM32 kernel & rootfs for baremetal testing
|
# x86_64 image with ARM64 & ARM32 kernel & rootfs for baremetal testing
|
||||||
.debian/baremetal_arm_test:
|
.debian/baremetal_arm_test:
|
||||||
extends:
|
extends:
|
||||||
@@ -652,57 +645,49 @@ debian/arm64_test-vk:
|
|||||||
# Don't want the .container rules
|
# Don't want the .container rules
|
||||||
- .container+build-rules
|
- .container+build-rules
|
||||||
variables:
|
variables:
|
||||||
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
|
ARTIFACTS_PREFIX: "https://${S3_HOST}/${S3_KERNEL_BUCKET}"
|
||||||
|
ARTIFACTS_SUFFIX: "${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
MESA_ARTIFACTS_TAG: *debian-arm64_build
|
MESA_ARTIFACTS_TAG: *debian-arm64_build
|
||||||
|
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||||
|
|
||||||
debian/baremetal_arm32_test-gl:
|
debian/baremetal_arm32_test:
|
||||||
extends:
|
extends:
|
||||||
- .debian/baremetal_arm_test
|
- .debian/baremetal_arm_test
|
||||||
needs:
|
needs:
|
||||||
- debian/arm32_test-gl
|
- kernel+rootfs_arm32
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &baremetal-arm32_test-gl "${DEBIAN_TEST_GL_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
MESA_IMAGE_TAG: &debian-arm32_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm32_test-gl, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
|
|
||||||
debian/baremetal_arm64_test-gl:
|
debian/baremetal_arm64_test:
|
||||||
extends:
|
extends:
|
||||||
- .debian/baremetal_arm_test
|
- .debian/baremetal_arm_test
|
||||||
needs:
|
needs:
|
||||||
- debian/arm64_test-gl
|
- kernel+rootfs_arm64
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &baremetal-arm64_test-gl "${DEBIAN_TEST_GL_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
MESA_IMAGE_TAG: &debian-arm64_test "${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm64_test-gl, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
|
|
||||||
debian/baremetal_arm64_test-vk:
|
.use-debian/baremetal_arm_test:
|
||||||
|
variables:
|
||||||
|
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||||
|
|
||||||
|
.use-debian/baremetal_arm32_test:
|
||||||
|
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
extends:
|
extends:
|
||||||
- .debian/baremetal_arm_test
|
- .use-debian/baremetal_arm_test
|
||||||
needs:
|
|
||||||
- debian/arm64_test-vk
|
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_TAG: &baremetal-arm64_test-vk "${DEBIAN_TEST_VK_TAG}--${DEBIAN_BASE_TAG}--${PKG_REPO_REV}"
|
MESA_IMAGE_PATH: "debian/baremetal_arm32_test"
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm64_test-vk, variables, LAVA_DISTRIBUTION_TAG]
|
MESA_IMAGE_TAG: *debian-arm32_test
|
||||||
|
|
||||||
.use-debian/baremetal_arm32_test-gl:
|
|
||||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
variables:
|
|
||||||
MESA_IMAGE_PATH: "debian/baremetal_arm32_test-gl"
|
|
||||||
MESA_IMAGE_TAG: *baremetal-arm32_test-gl
|
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm_test
|
- debian/baremetal_arm_test
|
||||||
|
|
||||||
.use-debian/baremetal_arm64_test-gl:
|
.use-debian/baremetal_arm64_test:
|
||||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||||
|
extends:
|
||||||
|
- .use-debian/baremetal_arm_test
|
||||||
variables:
|
variables:
|
||||||
MESA_IMAGE_PATH: "debian/baremetal_arm64_test-gl"
|
MESA_IMAGE_PATH: "debian/baremetal_arm64_test"
|
||||||
MESA_IMAGE_TAG: *baremetal-arm64_test-gl
|
MESA_IMAGE_TAG: *debian-arm64_test
|
||||||
needs:
|
|
||||||
- debian/baremetal_arm_test
|
|
||||||
|
|
||||||
.use-debian/baremetal_arm64_test-vk:
|
|
||||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${KERNEL_TAG}--${MESA_TEMPLATES_COMMIT}"
|
|
||||||
variables:
|
|
||||||
MESA_IMAGE_PATH: "debian/baremetal_arm64_test-vk"
|
|
||||||
MESA_IMAGE_TAG: *baremetal-arm64_test-vk
|
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm_test
|
- debian/baremetal_arm_test
|
||||||
|
|
||||||
|
428
.gitlab-ci/container/lava_build.sh
Executable file
428
.gitlab-ci/container/lava_build.sh
Executable file
@@ -0,0 +1,428 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC1091 # The relative paths in this file only become valid at runtime.
|
||||||
|
# shellcheck disable=SC2034 # Variables are used in scripts called from here
|
||||||
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
# shellcheck disable=SC2016 # non-expanded variables are intentional
|
||||||
|
# When changing this file, you need to bump the following
|
||||||
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
|
# If you need to update the fluster vectors cache without updating the fluster revision,
|
||||||
|
# you can update the FLUSTER_VECTORS_VERSION tag in .gitlab-ci/image-tags.yml.
|
||||||
|
# When changing FLUSTER_REVISION, KERNEL_ROOTFS_TAG needs to be updated as well to rebuild
|
||||||
|
# the rootfs.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
. .gitlab-ci/setup-test-env.sh
|
||||||
|
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
: "${LLVM_VERSION:?llvm version not set!}"
|
||||||
|
export FIRMWARE_FILES="${FIRMWARE_FILES}"
|
||||||
|
export SKIP_UPDATE_FLUSTER_VECTORS=0
|
||||||
|
|
||||||
|
check_minio()
|
||||||
|
{
|
||||||
|
S3_PATH="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||||
|
if curl -L --retry 4 -f --retry-delay 60 -s \
|
||||||
|
"https://${S3_PATH}/done"; then
|
||||||
|
echo "Remote files are up-to-date, skip rebuilding them."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_fluster()
|
||||||
|
{
|
||||||
|
S3_PATH_FLUSTER="${S3_HOST}/${S3_KERNEL_BUCKET}/$1/${DATA_STORAGE_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||||
|
if curl -L --retry 4 -f --retry-delay 60 -s \
|
||||||
|
"https://${S3_PATH_FLUSTER}/done"; then
|
||||||
|
echo "Fluster vectors are up-to-date, skip downloading them."
|
||||||
|
export SKIP_UPDATE_FLUSTER_VECTORS=1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_minio "${FDO_UPSTREAM_REPO}"
|
||||||
|
check_minio "${CI_PROJECT_PATH}"
|
||||||
|
|
||||||
|
check_fluster "${FDO_UPSTREAM_REPO}"
|
||||||
|
check_fluster "${CI_PROJECT_PATH}"
|
||||||
|
|
||||||
|
. .gitlab-ci/container/container_pre_build.sh
|
||||||
|
|
||||||
|
# Install rust, which we'll be using for deqp-runner. It will be cleaned up at the end.
|
||||||
|
. .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"
|
||||||
|
|
||||||
|
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
||||||
|
BUILD_CL="OFF"
|
||||||
|
BUILD_VK="OFF"
|
||||||
|
GCC_ARCH="arm-linux-gnueabihf"
|
||||||
|
KERNEL_ARCH="arm"
|
||||||
|
. .gitlab-ci/container/create-cross-file.sh armhf
|
||||||
|
CONTAINER_ARCH_PACKAGES=(
|
||||||
|
libegl1-mesa-dev:armhf
|
||||||
|
libelf-dev:armhf
|
||||||
|
libgbm-dev:armhf
|
||||||
|
libgles2-mesa-dev:armhf
|
||||||
|
libpng-dev:armhf
|
||||||
|
libudev-dev:armhf
|
||||||
|
libvulkan-dev:armhf
|
||||||
|
libwaffle-dev:armhf
|
||||||
|
libwayland-dev:armhf
|
||||||
|
libx11-xcb-dev:armhf
|
||||||
|
libxkbcommon-dev:armhf
|
||||||
|
)
|
||||||
|
else
|
||||||
|
BUILD_CL="ON"
|
||||||
|
BUILD_VK="ON"
|
||||||
|
GCC_ARCH="x86_64-linux-gnu"
|
||||||
|
KERNEL_ARCH="x86_64"
|
||||||
|
CONTAINER_ARCH_PACKAGES=(
|
||||||
|
libasound2-dev libcap-dev libfdt-dev libva-dev p7zip wine
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine if we're in a cross build.
|
||||||
|
if [[ -e /cross_file-$DEBIAN_ARCH.txt ]]; then
|
||||||
|
EXTRA_MESON_ARGS="--cross-file /cross_file-$DEBIAN_ARCH.txt"
|
||||||
|
EXTRA_CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=/toolchain-$DEBIAN_ARCH.cmake"
|
||||||
|
|
||||||
|
if [ $DEBIAN_ARCH = arm64 ]; then
|
||||||
|
RUST_TARGET="aarch64-unknown-linux-gnu"
|
||||||
|
elif [ $DEBIAN_ARCH = armhf ]; then
|
||||||
|
RUST_TARGET="armv7-unknown-linux-gnueabihf"
|
||||||
|
fi
|
||||||
|
rustup target add $RUST_TARGET
|
||||||
|
export EXTRA_CARGO_ARGS="--target $RUST_TARGET"
|
||||||
|
|
||||||
|
export ARCH=${KERNEL_ARCH}
|
||||||
|
export CROSS_COMPILE="${GCC_ARCH}-"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# no need to remove these at end, image isn't saved at the end
|
||||||
|
CONTAINER_EPHEMERAL=(
|
||||||
|
arch-test
|
||||||
|
automake
|
||||||
|
bc
|
||||||
|
"clang-${LLVM_VERSION}"
|
||||||
|
cmake
|
||||||
|
curl
|
||||||
|
mmdebstrap
|
||||||
|
git
|
||||||
|
glslang-tools
|
||||||
|
jq
|
||||||
|
libdrm-dev
|
||||||
|
libegl1-mesa-dev
|
||||||
|
libxext-dev
|
||||||
|
libfontconfig-dev
|
||||||
|
libgbm-dev
|
||||||
|
libgl-dev
|
||||||
|
libgles2-mesa-dev
|
||||||
|
libglu1-mesa-dev
|
||||||
|
libglx-dev
|
||||||
|
libpng-dev
|
||||||
|
libssl-dev
|
||||||
|
libudev-dev
|
||||||
|
libvulkan-dev
|
||||||
|
libwaffle-dev
|
||||||
|
libwayland-dev
|
||||||
|
libx11-xcb-dev
|
||||||
|
libxcb-dri2-0-dev
|
||||||
|
libxkbcommon-dev
|
||||||
|
libwayland-dev
|
||||||
|
"lld-${LLVM_VERSION}"
|
||||||
|
ninja-build
|
||||||
|
openssh-server
|
||||||
|
patch
|
||||||
|
protobuf-compiler
|
||||||
|
python-is-python3
|
||||||
|
python3-distutils
|
||||||
|
python3-mako
|
||||||
|
python3-numpy
|
||||||
|
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
|
||||||
|
|
||||||
|
. .gitlab-ci/container/debian/maybe-add-llvm-repo.sh
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y --no-remove \
|
||||||
|
-o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' \
|
||||||
|
"${CONTAINER_EPHEMERAL[@]}" \
|
||||||
|
"${CONTAINER_ARCH_PACKAGES[@]}" \
|
||||||
|
${EXTRA_LOCAL_PACKAGES}
|
||||||
|
|
||||||
|
export ROOTFS=/lava-files/rootfs-${DEBIAN_ARCH}
|
||||||
|
mkdir -p "$ROOTFS"
|
||||||
|
|
||||||
|
# rootfs packages
|
||||||
|
PKG_BASE=(
|
||||||
|
tzdata mount
|
||||||
|
)
|
||||||
|
PKG_CI=(
|
||||||
|
firmware-realtek
|
||||||
|
bash ca-certificates curl
|
||||||
|
initramfs-tools jq netcat-openbsd dropbear openssh-server
|
||||||
|
libasan8
|
||||||
|
libubsan1
|
||||||
|
git
|
||||||
|
python3-dev python3-pip python3-setuptools python3-wheel
|
||||||
|
weston # Wayland
|
||||||
|
xinit xserver-xorg-core xwayland # X11
|
||||||
|
)
|
||||||
|
PKG_MESA_DEP=(
|
||||||
|
libdrm2 libsensors5 libexpat1 # common
|
||||||
|
libvulkan1 # vulkan
|
||||||
|
libx11-6 libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrender1 libxshmfence1 libxxf86vm1 # X11
|
||||||
|
)
|
||||||
|
PKG_DEP=(
|
||||||
|
libpng16-16
|
||||||
|
libva-wayland2
|
||||||
|
libwaffle-1-0
|
||||||
|
libpython3.11 python3 python3-lxml python3-mako python3-numpy python3-packaging python3-pil python3-renderdoc python3-requests python3-simplejson python3-yaml # Python
|
||||||
|
sntp
|
||||||
|
strace
|
||||||
|
waffle-utils
|
||||||
|
zstd
|
||||||
|
)
|
||||||
|
# arch dependent rootfs packages
|
||||||
|
[ "$DEBIAN_ARCH" = "arm64" ] && PKG_ARCH=(
|
||||||
|
libgl1 libglu1-mesa
|
||||||
|
firmware-linux-nonfree firmware-qcom-media
|
||||||
|
libfontconfig1
|
||||||
|
)
|
||||||
|
[ "$DEBIAN_ARCH" = "amd64" ] && PKG_ARCH=(
|
||||||
|
firmware-amd-graphics
|
||||||
|
firmware-misc-nonfree
|
||||||
|
gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-vaapi libgstreamer1.0-0 # Fluster
|
||||||
|
libgl1 libglu1-mesa
|
||||||
|
inetutils-syslogd iptables libcap2
|
||||||
|
libfontconfig1
|
||||||
|
spirv-tools
|
||||||
|
libelf1 libfdt1 "libllvm${LLVM_VERSION}"
|
||||||
|
libva2 libva-drm2
|
||||||
|
socat
|
||||||
|
sysvinit-core
|
||||||
|
wine
|
||||||
|
)
|
||||||
|
[ "$DEBIAN_ARCH" = "armhf" ] && PKG_ARCH=(
|
||||||
|
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}" \
|
||||||
|
--components main,contrib,non-free-firmware \
|
||||||
|
--customize-hook='.gitlab-ci/container/get-firmware-from-source.sh "$ROOTFS" "$FIRMWARE_FILES"' \
|
||||||
|
--include "${PKG_BASE[*]} ${PKG_CI[*]} ${PKG_DEP[*]} ${PKG_MESA_DEP[*]} ${PKG_ARCH[*]}" \
|
||||||
|
bookworm \
|
||||||
|
"$ROOTFS/" \
|
||||||
|
"http://deb.debian.org/debian" \
|
||||||
|
"deb [trusted=yes] https://gitlab.freedesktop.org/gfx-ci/ci-deb-repo/-/raw/${PKG_REPO_REV}/ ${FDO_DISTRIBUTION_VERSION%-*} main" \
|
||||||
|
"${LLVM_APT_REPO:-}"
|
||||||
|
|
||||||
|
############### Install mold
|
||||||
|
. .gitlab-ci/container/build-mold.sh
|
||||||
|
|
||||||
|
############### Building
|
||||||
|
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
|
||||||
|
mv /usr/lib/x86_64-linux-gnu/libVkLayer_khronos_validation.so $ROOTFS/usr/lib/x86_64-linux-gnu/
|
||||||
|
mkdir -p $ROOTFS/usr/share/vulkan/explicit_layer.d
|
||||||
|
mv /usr/share/vulkan/explicit_layer.d/* $ROOTFS/usr/share/vulkan/explicit_layer.d/
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Build apitrace
|
||||||
|
. .gitlab-ci/container/build-apitrace.sh
|
||||||
|
mkdir -p $ROOTFS/apitrace
|
||||||
|
mv /apitrace/build $ROOTFS/apitrace
|
||||||
|
rm -rf /apitrace
|
||||||
|
|
||||||
|
############### Build ANGLE
|
||||||
|
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||||
|
ANGLE_TARGET=linux \
|
||||||
|
. .gitlab-ci/container/build-angle.sh
|
||||||
|
mv /angle $ROOTFS/.
|
||||||
|
rm -rf /angle
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Build dEQP runner
|
||||||
|
. .gitlab-ci/container/build-deqp-runner.sh
|
||||||
|
mkdir -p $ROOTFS/usr/bin
|
||||||
|
mv /usr/local/bin/*-runner $ROOTFS/usr/bin/.
|
||||||
|
|
||||||
|
|
||||||
|
############### Build dEQP
|
||||||
|
|
||||||
|
DEQP_API=tools \
|
||||||
|
DEQP_TARGET=default \
|
||||||
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
|
||||||
|
DEQP_API=GL \
|
||||||
|
DEQP_TARGET=surfaceless \
|
||||||
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
|
||||||
|
DEQP_API=GLES \
|
||||||
|
DEQP_TARGET=surfaceless \
|
||||||
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
|
||||||
|
if [ "$BUILD_VK" == "ON" ]; then
|
||||||
|
DEQP_API=VK \
|
||||||
|
DEQP_TARGET=default \
|
||||||
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
|
||||||
|
if [ "$DEBIAN_ARCH" == "amd64" ]; then
|
||||||
|
DEQP_API=VK-main \
|
||||||
|
DEQP_TARGET=default \
|
||||||
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf /VK-GL-CTS
|
||||||
|
|
||||||
|
mv /deqp-* $ROOTFS/.
|
||||||
|
|
||||||
|
|
||||||
|
############### Build SKQP
|
||||||
|
if [[ "$DEBIAN_ARCH" = "arm64" ]] \
|
||||||
|
|| [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
||||||
|
. .gitlab-ci/container/build-skqp.sh
|
||||||
|
mv /skqp $ROOTFS/.
|
||||||
|
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
|
||||||
|
mv /piglit $ROOTFS/.
|
||||||
|
|
||||||
|
############### Build libva tests
|
||||||
|
if [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
||||||
|
. .gitlab-ci/container/build-va-tools.sh
|
||||||
|
mv /va/bin/* $ROOTFS/usr/bin/
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Build Crosvm
|
||||||
|
if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
|
||||||
|
. .gitlab-ci/container/build-crosvm.sh
|
||||||
|
mv /usr/local/bin/crosvm $ROOTFS/usr/bin/
|
||||||
|
mv /usr/local/lib/libvirglrenderer.* $ROOTFS/usr/lib/$GCC_ARCH/
|
||||||
|
mkdir -p $ROOTFS/usr/local/libexec/
|
||||||
|
mv /usr/local/libexec/virgl* $ROOTFS/usr/local/libexec/
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Build ci-kdl
|
||||||
|
. .gitlab-ci/container/build-kdl.sh
|
||||||
|
mv /ci-kdl $ROOTFS/
|
||||||
|
|
||||||
|
############### Install fluster
|
||||||
|
if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
|
||||||
|
section_start fluster "Install fluster"
|
||||||
|
. .gitlab-ci/container/build-fluster.sh
|
||||||
|
section_end fluster
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Build local stuff for use by igt and kernel testing, which
|
||||||
|
############### will reuse most of our container build process from a specific
|
||||||
|
############### hash of the Mesa tree.
|
||||||
|
if [[ -e ".gitlab-ci/local/build-rootfs.sh" ]]; then
|
||||||
|
. .gitlab-ci/local/build-rootfs.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Delete rust, since the tests won't be compiling anything.
|
||||||
|
rm -rf /root/.cargo
|
||||||
|
rm -rf /root/.rustup
|
||||||
|
|
||||||
|
############### Delete firmware files we don't need
|
||||||
|
if [ "$DEBIAN_ARCH" = "amd64" ]; then
|
||||||
|
dpkg -L firmware-misc-nonfree | grep -v "i915" | xargs rm || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
############### Fill rootfs
|
||||||
|
cp .gitlab-ci/setup-test-env.sh $ROOTFS/.
|
||||||
|
cp .gitlab-ci/container/setup-rootfs.sh $ROOTFS/.
|
||||||
|
cp .gitlab-ci/container/strip-rootfs.sh $ROOTFS/.
|
||||||
|
cp .gitlab-ci/container/debian/llvm-snapshot.gpg.key $ROOTFS/.
|
||||||
|
cp .gitlab-ci/container/debian/winehq.gpg.key $ROOTFS/.
|
||||||
|
chroot $ROOTFS bash /setup-rootfs.sh
|
||||||
|
rm $ROOTFS/{llvm-snapshot,winehq}.gpg.key
|
||||||
|
rm "$ROOTFS/setup-test-env.sh"
|
||||||
|
rm "$ROOTFS/setup-rootfs.sh"
|
||||||
|
rm "$ROOTFS/strip-rootfs.sh"
|
||||||
|
cp /etc/wgetrc $ROOTFS/etc/.
|
||||||
|
|
||||||
|
# Copy all tags to the rootfs, so test jobs can check if they are using the intended version
|
||||||
|
TAG_FILE_DIR="$(get_tag_file)"
|
||||||
|
if [ -d "${TAG_FILE_DIR}" ]; then
|
||||||
|
cp --parents -r "${TAG_FILE_DIR}" $ROOTFS/.
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${DEBIAN_ARCH}" = "arm64" ]; then
|
||||||
|
mkdir -p /lava-files/rootfs-arm64/lib/firmware/qcom/sm8350/ # for firmware imported later
|
||||||
|
fi
|
||||||
|
|
||||||
|
ROOTFSTAR="lava-rootfs.tar.zst"
|
||||||
|
du -ah "$ROOTFS" | sort -h | tail -100
|
||||||
|
pushd $ROOTFS
|
||||||
|
tar --zstd -cf /lava-files/${ROOTFSTAR} .
|
||||||
|
popd
|
||||||
|
|
||||||
|
. .gitlab-ci/container/container_post_build.sh
|
||||||
|
|
||||||
|
s3_upload /lava-files/"${ROOTFSTAR}" "https://${S3_PATH}/"
|
||||||
|
|
||||||
|
touch /lava-files/done
|
||||||
|
s3_upload /lava-files/done "https://${S3_PATH}/"
|
18
.gitlab-ci/container/setup-rootfs.sh
Executable file → Normal file
18
.gitlab-ci/container/setup-rootfs.sh
Executable file → Normal file
@@ -2,11 +2,19 @@
|
|||||||
# shellcheck disable=SC1091 # The relative paths in this file only become valid at runtime.
|
# shellcheck disable=SC1091 # The relative paths in this file only become valid at runtime.
|
||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_GL_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
set -ex
|
||||||
# DEBIAN_TEST_VK_TAG
|
|
||||||
|
|
||||||
set -eux -o pipefail
|
. setup-test-env.sh
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
passwd root -d
|
passwd root -d
|
||||||
chsh -s /bin/sh
|
chsh -s /bin/sh
|
||||||
@@ -21,3 +29,5 @@ chmod +x /init
|
|||||||
# Copy timezone file and remove tzdata package
|
# Copy timezone file and remove tzdata package
|
||||||
rm -rf /etc/localtime
|
rm -rf /etc/localtime
|
||||||
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
||||||
|
|
||||||
|
. strip-rootfs.sh
|
||||||
|
@@ -4,8 +4,8 @@
|
|||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
# DEBIAN_TEST_ANDROID_TAG
|
# DEBIAN_TEST_ANDROID_TAG
|
||||||
# DEBIAN_TEST_GL_TAG
|
# DEBIAN_TEST_GL_TAG
|
||||||
# DEBIAN_TEST_VIDEO_TAG
|
|
||||||
# DEBIAN_TEST_VK_TAG
|
# DEBIAN_TEST_VK_TAG
|
||||||
|
# KERNEL_ROOTFS_TAG
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
section_start strip-rootfs "Stripping rootfs"
|
section_start strip-rootfs "Stripping rootfs"
|
||||||
@@ -38,6 +38,7 @@ UNNEEDED_PACKAGES=(
|
|||||||
udev
|
udev
|
||||||
init-system-helpers
|
init-system-helpers
|
||||||
cpio
|
cpio
|
||||||
|
passwd
|
||||||
libsemanage1 libsemanage-common
|
libsemanage1 libsemanage-common
|
||||||
libsepol1
|
libsepol1
|
||||||
gpgv
|
gpgv
|
||||||
|
@@ -49,14 +49,6 @@ ulimit -S -n 32768
|
|||||||
VSOCK_BASE=10000 # greater than all the default vsock ports
|
VSOCK_BASE=10000 # greater than all the default vsock ports
|
||||||
VSOCK_CID=$((VSOCK_BASE + (CI_JOB_ID & 0xfff)))
|
VSOCK_CID=$((VSOCK_BASE + (CI_JOB_ID & 0xfff)))
|
||||||
|
|
||||||
# Venus requires a custom kernel for now
|
|
||||||
if [ "$ANDROID_GPU_MODE" = "venus" ] || [ "$ANDROID_GPU_MODE" = "venus_guest_angle" ]; then
|
|
||||||
CUSTOM_KERNEL_ARGS="
|
|
||||||
-kernel_path=/cuttlefish/bzImage
|
|
||||||
-initramfs_path=/cuttlefish/initramfs.img
|
|
||||||
"
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOME=/cuttlefish launch_cvd \
|
HOME=/cuttlefish launch_cvd \
|
||||||
-daemon \
|
-daemon \
|
||||||
-verbosity=VERBOSE \
|
-verbosity=VERBOSE \
|
||||||
@@ -72,7 +64,8 @@ HOME=/cuttlefish launch_cvd \
|
|||||||
-gpu_mode="$ANDROID_GPU_MODE" \
|
-gpu_mode="$ANDROID_GPU_MODE" \
|
||||||
-cpus=${FDO_CI_CONCURRENT:-4} \
|
-cpus=${FDO_CI_CONCURRENT:-4} \
|
||||||
-memory_mb 8192 \
|
-memory_mb 8192 \
|
||||||
$CUSTOM_KERNEL_ARGS
|
-kernel_path="/cuttlefish/bzImage" \
|
||||||
|
-initramfs_path="/cuttlefish/initramfs.img"
|
||||||
|
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
|
@@ -31,16 +31,6 @@ if [ -n "$ANGLE_TAG" ]; then
|
|||||||
export LD_LIBRARY_PATH=/angle:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=/angle:$LD_LIBRARY_PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$PIGLIT_TAG" ]; then
|
|
||||||
# Are we using the right Piglit version?
|
|
||||||
ci_tag_test_time_check "PIGLIT_TAG"
|
|
||||||
elif [ -d "/piglit" ]; then
|
|
||||||
# The job does not inherit from .test-piglit, so we move it out of the way.
|
|
||||||
# This makes sure that we can both do the right version checks when needed,
|
|
||||||
# and also optimise our dependencies so we don't pull unneeded stuff.
|
|
||||||
mv /piglit /piglit.unused
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure Mesa Shader Cache resides on tmpfs.
|
# Ensure Mesa Shader Cache resides on tmpfs.
|
||||||
SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
|
SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
|
||||||
SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
|
SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
|
||||||
|
@@ -16,8 +16,8 @@ fi
|
|||||||
TMP_DIR=$(mktemp -d)
|
TMP_DIR=$(mktemp -d)
|
||||||
|
|
||||||
echo "$(date +"%F %T") Downloading archived master..."
|
echo "$(date +"%F %T") Downloading archived master..."
|
||||||
if ! curl --location --fail --retry-connrefused --retry 3 --retry-delay 10 \
|
if ! /usr/bin/wget \
|
||||||
--output "$TMP_DIR/$CI_PROJECT_NAME.tar.gz" \
|
-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}/${S3_GITCACHE_BUCKET}/${FDO_UPSTREAM_REPO}/$CI_PROJECT_NAME.tar.gz";
|
||||||
then
|
then
|
||||||
echo "Repository cache not available"
|
echo "Repository cache not available"
|
||||||
|
@@ -13,6 +13,19 @@ if [ -z "$FLUSTER_CODECS" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check which fluster vectors to get
|
||||||
|
FLUSTER_VECTORS_HOST_PATH="${STORAGE_MAINLINE_HOST_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||||
|
if [ "$CI_PROJECT_PATH" != "$FDO_UPSTREAM_REPO" ]; then
|
||||||
|
if ! curl -s -L --retry 4 -f --retry-delay 60 "${FDO_HTTP_CACHE_URI:-}https://${FLUSTER_VECTORS_HOST_PATH}/done"; then
|
||||||
|
echo "Using Fluster vectors from the fork, cached from mainline is unavailable."
|
||||||
|
FLUSTER_VECTORS_HOST_PATH="${STORAGE_FORK_HOST_PATH}/fluster/${FLUSTER_VECTORS_VERSION}"
|
||||||
|
else
|
||||||
|
echo "Using the cached Fluster vectors."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 "${FDO_HTTP_CACHE_URI:-}https://${FLUSTER_VECTORS_HOST_PATH}/vectors.tar.zst" | tar --zstd -x -C /usr/local/
|
||||||
|
|
||||||
INSTALL="$PWD/install"
|
INSTALL="$PWD/install"
|
||||||
|
|
||||||
# Set up the driver environment.
|
# Set up the driver environment.
|
||||||
|
@@ -8,8 +8,6 @@ set -ex
|
|||||||
|
|
||||||
INSTALL=$PWD/install
|
INSTALL=$PWD/install
|
||||||
|
|
||||||
export PATH=/va/bin:$PATH
|
|
||||||
|
|
||||||
# Set up the driver environment.
|
# Set up the driver environment.
|
||||||
export LD_LIBRARY_PATH=$INSTALL/lib/
|
export LD_LIBRARY_PATH=$INSTALL/lib/
|
||||||
|
|
||||||
|
@@ -19,22 +19,22 @@ include:
|
|||||||
- .gitlab-ci/conditional-build-image-tags.yml
|
- .gitlab-ci/conditional-build-image-tags.yml
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_BASE_TAG: "20250424-rootfs"
|
DEBIAN_BASE_TAG: "20250408-virgl"
|
||||||
|
|
||||||
DEBIAN_BUILD_TAG: "20250422-ci-fairy"
|
DEBIAN_BUILD_TAG: "20250324-android"
|
||||||
|
|
||||||
DEBIAN_TEST_ANDROID_TAG: "20250423-rootfs"
|
DEBIAN_TEST_ANDROID_TAG: "20250415-anglit"
|
||||||
DEBIAN_TEST_GL_TAG: "20250423-rootfs"
|
DEBIAN_TEST_GL_TAG: "20250415-anglit"
|
||||||
DEBIAN_TEST_VIDEO_TAG: "20250423-rootfs"
|
DEBIAN_TEST_VK_TAG: "20250416-vkvideo"
|
||||||
DEBIAN_TEST_VK_TAG: "20250423-rootfs"
|
KERNEL_ROOTFS_TAG: "20250415-anglit"
|
||||||
|
|
||||||
DEBIAN_PYUTILS_TAG: "20250422-ci-fairy"
|
DEBIAN_PYUTILS_TAG: "20250321-s3cp-fix5"
|
||||||
|
|
||||||
ALPINE_X86_64_BUILD_TAG: "20250423-rootfs"
|
ALPINE_X86_64_BUILD_TAG: "20250324-sphinx"
|
||||||
ALPINE_X86_64_LAVA_SSH_TAG: "20250423-rootfs"
|
ALPINE_X86_64_LAVA_SSH_TAG: "20250321-s3cp-fix5"
|
||||||
FEDORA_X86_64_BUILD_TAG: "20250423-rootfs"
|
FEDORA_X86_64_BUILD_TAG: "20250321-s3cp-fix5"
|
||||||
|
|
||||||
KERNEL_TAG: "v6.14-mesa-dea4"
|
KERNEL_TAG: "v6.14-mesa-0bdd"
|
||||||
KERNEL_REPO: "gfx-ci/linux"
|
KERNEL_REPO: "gfx-ci/linux"
|
||||||
PKG_REPO_REV: "95bf62c"
|
PKG_REPO_REV: "95bf62c"
|
||||||
|
|
||||||
|
@@ -20,14 +20,13 @@ variables:
|
|||||||
timeout: 1h
|
timeout: 1h
|
||||||
variables:
|
variables:
|
||||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
GIT_STRATEGY: none # testing doesn't build anything from source
|
||||||
HWCI_TEST_SCRIPT: ./install/deqp-runner.sh
|
|
||||||
FDO_CI_CONCURRENT: 6 # should be replaced by per-machine definitions
|
FDO_CI_CONCURRENT: 6 # should be replaced by per-machine definitions
|
||||||
# the dispatchers use this to cache data locally
|
# the dispatchers use this to cache data locally
|
||||||
LAVA_HTTP_CACHE_URI: "http://caching-proxy/cache/?uri="
|
LAVA_HTTP_CACHE_URI: "http://caching-proxy/cache/?uri="
|
||||||
# base system generated by the container build job, shared between many pipelines
|
# 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}/${S3_KERNEL_BUCKET}"
|
||||||
BASE_SYSTEM_MAINLINE_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${FDO_UPSTREAM_REPO}/${LAVA_DISTRIBUTION_TAG}"
|
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}/${LAVA_DISTRIBUTION_TAG}"
|
BASE_SYSTEM_FORK_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
|
||||||
# per-job build artifacts
|
# per-job build artifacts
|
||||||
JOB_ROOTFS_OVERLAY_PATH: "${JOB_ARTIFACTS_BASE}/job-rootfs-overlay.tar.gz"
|
JOB_ROOTFS_OVERLAY_PATH: "${JOB_ARTIFACTS_BASE}/job-rootfs-overlay.tar.gz"
|
||||||
JOB_RESULTS_PATH: "${JOB_ARTIFACTS_BASE}/results.tar.zst"
|
JOB_RESULTS_PATH: "${JOB_ARTIFACTS_BASE}/results.tar.zst"
|
||||||
@@ -36,6 +35,8 @@ variables:
|
|||||||
S3_RESULTS_UPLOAD: "${JOB_ARTIFACTS_BASE}"
|
S3_RESULTS_UPLOAD: "${JOB_ARTIFACTS_BASE}"
|
||||||
PIGLIT_NO_WINDOW: 1
|
PIGLIT_NO_WINDOW: 1
|
||||||
VISIBILITY_GROUP: "Collabora+fdo"
|
VISIBILITY_GROUP: "Collabora+fdo"
|
||||||
|
STORAGE_MAINLINE_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${FDO_UPSTREAM_REPO}/${DATA_STORAGE_PATH}"
|
||||||
|
STORAGE_FORK_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${CI_PROJECT_PATH}/${DATA_STORAGE_PATH}"
|
||||||
before_script:
|
before_script:
|
||||||
- !reference [.download_s3, before_script]
|
- !reference [.download_s3, before_script]
|
||||||
script:
|
script:
|
||||||
@@ -63,52 +64,7 @@ variables:
|
|||||||
- job: python-artifacts
|
- job: python-artifacts
|
||||||
artifacts: false
|
artifacts: false
|
||||||
|
|
||||||
.lava-x86_64-test:
|
.lava-test:arm32:
|
||||||
variables:
|
|
||||||
ARCH: x86_64
|
|
||||||
DEBIAN_ARCH: amd64
|
|
||||||
KERNEL_IMAGE_NAME: bzImage
|
|
||||||
KERNEL_IMAGE_TYPE: "zimage"
|
|
||||||
BOOT_METHOD: u-boot
|
|
||||||
extends:
|
|
||||||
- .use-debian/x86_64_pyutils
|
|
||||||
- .lava-test
|
|
||||||
needs:
|
|
||||||
- !reference [.lava-test, needs]
|
|
||||||
- job: debian-testing
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-x86_64-test-gl:
|
|
||||||
variables:
|
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/x86_64_test-gl, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
extends:
|
|
||||||
- .lava-x86_64-test
|
|
||||||
needs:
|
|
||||||
- !reference [.lava-x86_64-test, needs]
|
|
||||||
- job: debian/x86_64_test-gl
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-x86_64-test-video:
|
|
||||||
variables:
|
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/x86_64_test-video, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
extends:
|
|
||||||
- .lava-x86_64-test
|
|
||||||
needs:
|
|
||||||
- !reference [.lava-x86_64-test, needs]
|
|
||||||
- job: debian/x86_64_test-video
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-x86_64-test-vk:
|
|
||||||
variables:
|
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/x86_64_test-vk, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
extends:
|
|
||||||
- .lava-x86_64-test
|
|
||||||
needs:
|
|
||||||
- !reference [.lava-x86_64-test, needs]
|
|
||||||
- job: debian/x86_64_test-vk
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-arm32-test:
|
|
||||||
variables:
|
variables:
|
||||||
ARCH: arm32
|
ARCH: arm32
|
||||||
DEBIAN_ARCH: armhf
|
DEBIAN_ARCH: armhf
|
||||||
@@ -116,24 +72,24 @@ variables:
|
|||||||
KERNEL_IMAGE_TYPE: "zimage"
|
KERNEL_IMAGE_TYPE: "zimage"
|
||||||
BOOT_METHOD: u-boot
|
BOOT_METHOD: u-boot
|
||||||
extends:
|
extends:
|
||||||
|
- .use-debian/arm64_build # for same $MESA_ARTIFACTS_TAG as in kernel+rootfs_arm32
|
||||||
- .use-debian/x86_64_pyutils
|
- .use-debian/x86_64_pyutils
|
||||||
- .lava-test
|
- .lava-test
|
||||||
|
- .use-kernel+rootfs-arm
|
||||||
needs:
|
needs:
|
||||||
- !reference [.lava-test, needs]
|
- !reference [.lava-test, needs]
|
||||||
|
- job: kernel+rootfs_arm32
|
||||||
|
artifacts: false
|
||||||
- job: debian-arm32
|
- job: debian-arm32
|
||||||
artifacts: false
|
artifacts: false
|
||||||
|
|
||||||
.lava-arm32-test-gl:
|
.lava-test-deqp:arm32:
|
||||||
variables:
|
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm32_test-gl, variables, LAVA_DISTRIBUTION_TAG]
|
|
||||||
extends:
|
extends:
|
||||||
- .lava-arm32-test
|
- .lava-test:arm32
|
||||||
needs:
|
variables:
|
||||||
- !reference [.lava-arm32-test, needs]
|
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
|
||||||
- job: debian/arm32_test-gl
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-arm64-test:
|
.lava-test:arm64:
|
||||||
variables:
|
variables:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
DEBIAN_ARCH: arm64
|
DEBIAN_ARCH: arm64
|
||||||
@@ -141,36 +97,49 @@ variables:
|
|||||||
KERNEL_IMAGE_TYPE: "image"
|
KERNEL_IMAGE_TYPE: "image"
|
||||||
BOOT_METHOD: u-boot
|
BOOT_METHOD: u-boot
|
||||||
extends:
|
extends:
|
||||||
|
- .use-debian/arm64_build # for same $MESA_ARTIFACTS_TAG as in kernel+rootfs_arm64
|
||||||
- .use-debian/x86_64_pyutils
|
- .use-debian/x86_64_pyutils
|
||||||
- .lava-test
|
- .lava-test
|
||||||
|
- .use-kernel+rootfs-arm
|
||||||
needs:
|
needs:
|
||||||
- !reference [.lava-test, needs]
|
- !reference [.lava-test, needs]
|
||||||
|
- job: kernel+rootfs_arm64
|
||||||
|
artifacts: false
|
||||||
- job: debian-arm64
|
- job: debian-arm64
|
||||||
artifacts: false
|
artifacts: false
|
||||||
|
|
||||||
.lava-arm64-test-gl:
|
.lava-test-deqp:arm64:
|
||||||
variables:
|
variables:
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm64_test-gl, variables, LAVA_DISTRIBUTION_TAG]
|
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
|
||||||
extends:
|
extends:
|
||||||
- .lava-arm64-test
|
- .lava-test:arm64
|
||||||
|
|
||||||
|
.lava-test:x86_64:
|
||||||
|
variables:
|
||||||
|
ARCH: x86_64
|
||||||
|
DEBIAN_ARCH: amd64
|
||||||
|
KERNEL_IMAGE_NAME: bzImage
|
||||||
|
KERNEL_IMAGE_TYPE: "zimage"
|
||||||
|
BOOT_METHOD: u-boot
|
||||||
|
extends:
|
||||||
|
- .use-debian/x86_64_build-base # for same $MESA_ARTIFACTS_BASE_TAG as in kernel+rootfs_x86_64
|
||||||
|
- .use-debian/x86_64_pyutils
|
||||||
|
- .lava-test
|
||||||
|
- .use-kernel+rootfs-x86_64
|
||||||
needs:
|
needs:
|
||||||
- !reference [.lava-arm64-test, needs]
|
- !reference [.lava-test, needs]
|
||||||
- job: debian/arm64_test-gl
|
- job: kernel+rootfs_x86_64
|
||||||
|
artifacts: false
|
||||||
|
- job: debian-testing
|
||||||
artifacts: false
|
artifacts: false
|
||||||
|
|
||||||
.lava-arm64-test-vk:
|
.lava-test-deqp:x86_64:
|
||||||
variables:
|
variables:
|
||||||
LAVA_DISTRIBUTION_TAG: !reference [debian/arm64_test-vk, variables, LAVA_DISTRIBUTION_TAG]
|
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
|
||||||
extends:
|
extends:
|
||||||
- .lava-arm64-test
|
- .lava-test:x86_64
|
||||||
needs:
|
|
||||||
- !reference [.lava-arm64-test, needs]
|
|
||||||
- job: debian/arm64_test-vk
|
|
||||||
artifacts: false
|
|
||||||
|
|
||||||
.lava-piglit-traces:
|
.lava-piglit-traces:
|
||||||
extends:
|
|
||||||
- .test-piglit
|
|
||||||
variables:
|
variables:
|
||||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-traces.sh"
|
HWCI_TEST_SCRIPT: "/install/piglit/piglit-traces.sh"
|
||||||
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
||||||
@@ -181,19 +150,19 @@ variables:
|
|||||||
reports:
|
reports:
|
||||||
junit: results/junit.xml
|
junit: results/junit.xml
|
||||||
|
|
||||||
.lava-x86_64-piglit-traces:
|
.lava-piglit-traces:x86_64:
|
||||||
extends:
|
extends:
|
||||||
- .lava-x86_64-test-gl
|
- .lava-test:x86_64
|
||||||
- .lava-piglit-traces
|
- .lava-piglit-traces
|
||||||
|
|
||||||
.lava-arm32-piglit-traces:
|
.lava-piglit-traces:arm32:
|
||||||
extends:
|
extends:
|
||||||
- .lava-arm32-test-gl
|
- .lava-test:arm32
|
||||||
- .lava-piglit-traces
|
- .lava-piglit-traces
|
||||||
|
|
||||||
.lava-arm64-piglit-traces:
|
.lava-piglit-traces:arm64:
|
||||||
extends:
|
extends:
|
||||||
- .lava-arm64-test-gl
|
- .lava-test:arm64
|
||||||
- .lava-piglit-traces
|
- .lava-piglit-traces
|
||||||
|
|
||||||
.lava-fluster:
|
.lava-fluster:
|
||||||
|
@@ -40,6 +40,7 @@ section_start prepare_rootfs "Preparing root filesystem"
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
|
section_switch rootfs "Assembling root filesystem"
|
||||||
ROOTFS_URL="$(get_path_to_artifact lava-rootfs.tar.zst)"
|
ROOTFS_URL="$(get_path_to_artifact lava-rootfs.tar.zst)"
|
||||||
[ $? != 1 ] || exit 1
|
[ $? != 1 ] || exit 1
|
||||||
|
|
||||||
@@ -51,7 +52,7 @@ cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
|
|||||||
cp "$SCRIPTS_DIR"/setup-test-env.sh results/job-rootfs-overlay/
|
cp "$SCRIPTS_DIR"/setup-test-env.sh results/job-rootfs-overlay/
|
||||||
|
|
||||||
tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
|
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}"
|
s3_upload job-rootfs-overlay.tar.gz "https://${JOB_ARTIFACTS_BASE}/"
|
||||||
|
|
||||||
# Prepare env vars for upload.
|
# Prepare env vars for upload.
|
||||||
section_switch variables "Environment variables passed through to device:"
|
section_switch variables "Environment variables passed through to device:"
|
||||||
|
@@ -225,9 +225,10 @@ def wait_for_job_get_started(job, attempt_no):
|
|||||||
|
|
||||||
|
|
||||||
def bootstrap_log_follower(main_test_case, timestamp_relative_to) -> LogFollower:
|
def bootstrap_log_follower(main_test_case, timestamp_relative_to) -> LogFollower:
|
||||||
|
deploy_timeout = GL_SECTION_TIMEOUTS[LogSectionType.LAVA_DEPLOY]
|
||||||
start_section = GitlabSection(
|
start_section = GitlabSection(
|
||||||
id="dut_deploy",
|
id="dut_deploy",
|
||||||
header="Running LAVA deploy action",
|
header=f"Running LAVA deploy action - Timeout: {deploy_timeout}",
|
||||||
type=LogSectionType.LAVA_DEPLOY,
|
type=LogSectionType.LAVA_DEPLOY,
|
||||||
start_collapsed=True,
|
start_collapsed=True,
|
||||||
timestamp_relative_to=timestamp_relative_to,
|
timestamp_relative_to=timestamp_relative_to,
|
||||||
|
@@ -257,8 +257,7 @@ class LAVAJobDefinition:
|
|||||||
# since the license isn't bundled inside the repository
|
# since the license isn't bundled inside the repository
|
||||||
if self.job_submitter.device_type == "sm8350-hdk":
|
if self.job_submitter.device_type == "sm8350-hdk":
|
||||||
run_steps.append(
|
run_steps.append(
|
||||||
"mkdir -p /lib/firmware/qcom/sm8350 && "
|
"curl -L --retry 4 -f --retry-all-errors --retry-delay 60 "
|
||||||
+ "curl -L --retry 4 -f --retry-all-errors --retry-delay 60 "
|
|
||||||
+ "https://github.com/allahjasif1990/hdk888-firmware/raw/main/a660_zap.mbn "
|
+ "https://github.com/allahjasif1990/hdk888-firmware/raw/main/a660_zap.mbn "
|
||||||
+ '-o "/lib/firmware/qcom/sm8350/a660_zap.mbn"'
|
+ '-o "/lib/firmware/qcom/sm8350/a660_zap.mbn"'
|
||||||
)
|
)
|
||||||
|
@@ -14,6 +14,7 @@ class LogSectionType(Enum):
|
|||||||
LAVA_QUEUE = auto()
|
LAVA_QUEUE = auto()
|
||||||
LAVA_DEPLOY = auto()
|
LAVA_DEPLOY = auto()
|
||||||
LAVA_BOOT = auto()
|
LAVA_BOOT = auto()
|
||||||
|
TEST_DUT_SUITE = auto()
|
||||||
TEST_SUITE = auto()
|
TEST_SUITE = auto()
|
||||||
TEST_CASE = auto()
|
TEST_CASE = auto()
|
||||||
LAVA_POST_PROCESSING = auto()
|
LAVA_POST_PROCESSING = auto()
|
||||||
@@ -43,9 +44,12 @@ LAVA_BOOT_TIMEOUT = int(getenv("LAVA_BOOT_TIMEOUT", 5))
|
|||||||
# including LAVA scheduling and boot duration
|
# including LAVA scheduling and boot duration
|
||||||
LAVA_TEST_OVERHEAD_MIN = 5
|
LAVA_TEST_OVERHEAD_MIN = 5
|
||||||
|
|
||||||
# Test suite phase is where initialization occurs on both the DUT and the Docker container.
|
# Test DUT suite phase is where the initialization happens in DUT, not on docker.
|
||||||
# The device will be listening to the SSH session until the end of the job.
|
# The device will be listening to SSH session until the end of the job.
|
||||||
LAVA_TEST_SUITE_TIMEOUT = int(getenv("CI_JOB_TIMEOUT")) // 60 - LAVA_TEST_OVERHEAD_MIN
|
LAVA_TEST_DUT_SUITE_TIMEOUT = int(getenv("CI_JOB_TIMEOUT")) // 60 - LAVA_TEST_OVERHEAD_MIN
|
||||||
|
|
||||||
|
# Test suite phase is where the initialization happens on docker.
|
||||||
|
LAVA_TEST_SUITE_TIMEOUT = int(getenv("LAVA_TEST_SUITE_TIMEOUT", 5))
|
||||||
|
|
||||||
# Test cases may take a long time, this script has no right to interrupt
|
# Test cases may take a long time, this script has no right to interrupt
|
||||||
# them. But if the test case takes almost 1h, it will never succeed due to
|
# them. But if the test case takes almost 1h, it will never succeed due to
|
||||||
@@ -62,6 +66,7 @@ DEFAULT_GITLAB_SECTION_TIMEOUTS = {
|
|||||||
LogSectionType.LAVA_QUEUE: timedelta(minutes=LAVA_QUEUE_TIMEOUT),
|
LogSectionType.LAVA_QUEUE: timedelta(minutes=LAVA_QUEUE_TIMEOUT),
|
||||||
LogSectionType.LAVA_DEPLOY: timedelta(minutes=LAVA_DEPLOY_TIMEOUT),
|
LogSectionType.LAVA_DEPLOY: timedelta(minutes=LAVA_DEPLOY_TIMEOUT),
|
||||||
LogSectionType.LAVA_BOOT: timedelta(minutes=LAVA_BOOT_TIMEOUT),
|
LogSectionType.LAVA_BOOT: timedelta(minutes=LAVA_BOOT_TIMEOUT),
|
||||||
|
LogSectionType.TEST_DUT_SUITE: timedelta(minutes=LAVA_TEST_DUT_SUITE_TIMEOUT),
|
||||||
LogSectionType.TEST_SUITE: timedelta(minutes=LAVA_TEST_SUITE_TIMEOUT),
|
LogSectionType.TEST_SUITE: timedelta(minutes=LAVA_TEST_SUITE_TIMEOUT),
|
||||||
LogSectionType.TEST_CASE: timedelta(minutes=LAVA_TEST_CASE_TIMEOUT),
|
LogSectionType.TEST_CASE: timedelta(minutes=LAVA_TEST_CASE_TIMEOUT),
|
||||||
LogSectionType.LAVA_POST_PROCESSING: timedelta(
|
LogSectionType.LAVA_POST_PROCESSING: timedelta(
|
||||||
@@ -90,9 +95,10 @@ class LogSection:
|
|||||||
section_id = self.section_id.format(*match.groups())
|
section_id = self.section_id.format(*match.groups())
|
||||||
section_header = self.section_header.format(*match.groups())
|
section_header = self.section_header.format(*match.groups())
|
||||||
is_main_test_case = section_id == main_test_case
|
is_main_test_case = section_id == main_test_case
|
||||||
|
timeout = DEFAULT_GITLAB_SECTION_TIMEOUTS[self.section_type]
|
||||||
return GitlabSection(
|
return GitlabSection(
|
||||||
id=section_id,
|
id=section_id,
|
||||||
header=section_header,
|
header=f"{section_header} - Timeout: {timeout}",
|
||||||
type=self.section_type,
|
type=self.section_type,
|
||||||
start_collapsed=self.collapsed,
|
start_collapsed=self.collapsed,
|
||||||
suppress_start=is_main_test_case,
|
suppress_start=is_main_test_case,
|
||||||
@@ -116,22 +122,27 @@ LOG_SECTIONS = (
|
|||||||
section_id="{}",
|
section_id="{}",
|
||||||
section_header="test_case {}",
|
section_header="test_case {}",
|
||||||
section_type=LogSectionType.TEST_CASE,
|
section_type=LogSectionType.TEST_CASE,
|
||||||
collapsed=True,
|
|
||||||
),
|
),
|
||||||
LogSection(
|
LogSection(
|
||||||
regex=re.compile(r"<?STARTRUN>? ([^>]*ssh.*server.*)"),
|
regex=re.compile(r"<?STARTRUN>? ([^>]*ssh.*server.*)"),
|
||||||
levels=("debug"),
|
levels=("debug"),
|
||||||
section_id="{}",
|
section_id="{}",
|
||||||
section_header="Setting up hardware device for remote control",
|
section_header="[dut] test_suite {}",
|
||||||
|
section_type=LogSectionType.TEST_DUT_SUITE,
|
||||||
|
),
|
||||||
|
LogSection(
|
||||||
|
regex=re.compile(r"<?STARTRUN>? ([^>]*)"),
|
||||||
|
levels=("debug"),
|
||||||
|
section_id="{}",
|
||||||
|
section_header="[docker] test_suite {}",
|
||||||
section_type=LogSectionType.TEST_SUITE,
|
section_type=LogSectionType.TEST_SUITE,
|
||||||
collapsed=True,
|
|
||||||
),
|
),
|
||||||
LogSection(
|
LogSection(
|
||||||
regex=re.compile(r"ENDTC>? ([^>]+)"),
|
regex=re.compile(r"ENDTC>? ([^>]+)"),
|
||||||
levels=("target", "debug"),
|
levels=("target", "debug"),
|
||||||
section_id="post-{}",
|
section_id="post-{}",
|
||||||
section_header="Post test_case {}",
|
section_header="Post test_case {}",
|
||||||
section_type=LogSectionType.LAVA_POST_PROCESSING,
|
|
||||||
collapsed=True,
|
collapsed=True,
|
||||||
|
section_type=LogSectionType.LAVA_POST_PROCESSING,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@@ -177,6 +177,7 @@ meson setup _build \
|
|||||||
-D libunwind=${UNWIND} \
|
-D libunwind=${UNWIND} \
|
||||||
${DRI_LOADERS} \
|
${DRI_LOADERS} \
|
||||||
${GALLIUM_ST} \
|
${GALLIUM_ST} \
|
||||||
|
-D gallium-opencl=disabled \
|
||||||
-D gallium-drivers=${GALLIUM_DRIVERS:-[]} \
|
-D gallium-drivers=${GALLIUM_DRIVERS:-[]} \
|
||||||
-D vulkan-drivers=${VULKAN_DRIVERS:-[]} \
|
-D vulkan-drivers=${VULKAN_DRIVERS:-[]} \
|
||||||
-D video-codecs=all \
|
-D video-codecs=all \
|
||||||
|
@@ -12,9 +12,6 @@ set -ex
|
|||||||
# Our rootfs may not have "less", which apitrace uses during apitrace dump
|
# Our rootfs may not have "less", which apitrace uses during apitrace dump
|
||||||
export PAGER=cat # FIXME: export everywhere
|
export PAGER=cat # FIXME: export everywhere
|
||||||
|
|
||||||
# Check we're using the version of Piglit we think we are
|
|
||||||
ci_tag_test_time_check "PIGLIT_TAG"
|
|
||||||
|
|
||||||
INSTALL=$(realpath -s "$PWD"/install)
|
INSTALL=$(realpath -s "$PWD"/install)
|
||||||
|
|
||||||
export PIGLIT_REPLAY_DESCRIPTION_FILE="$INSTALL/$PIGLIT_TRACES_FILE"
|
export PIGLIT_REPLAY_DESCRIPTION_FILE="$INSTALL/$PIGLIT_TRACES_FILE"
|
||||||
@@ -130,8 +127,7 @@ replay_s3_upload_images() {
|
|||||||
__DESTINATION_FILE_PATH="$__S3_TRACES_PREFIX/${line##*-}"
|
__DESTINATION_FILE_PATH="$__S3_TRACES_PREFIX/${line##*-}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "$RESULTS_DIR/$__PREFIX/$line" \
|
s3_upload "$RESULTS_DIR/$__PREFIX/$line" "https://${__S3_PATH}/${__DESTINATION_FILE_PATH%/*}/"
|
||||||
"https://${__S3_PATH}/${__DESTINATION_FILE_PATH}"
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2038 # TODO: rewrite the find
|
||||||
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
# shellcheck disable=SC1091 # relative paths only become valid at runtime
|
# shellcheck disable=SC1091 # relative paths only become valid at runtime
|
||||||
|
|
||||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||||
@@ -12,6 +14,7 @@ mkdir -p artifacts/
|
|||||||
|
|
||||||
# Test runs don't pull down the git tree, so put the dEQP helper
|
# Test runs don't pull down the git tree, so put the dEQP helper
|
||||||
# script and associated bits there.
|
# script and associated bits there.
|
||||||
|
echo "$(cat VERSION) (git-$(git rev-parse HEAD | cut -b -10))" > artifacts/VERSION
|
||||||
cp -Rp .gitlab-ci/report-flakes.py artifacts/
|
cp -Rp .gitlab-ci/report-flakes.py artifacts/
|
||||||
cp -Rp .gitlab-ci/setup-test-env.sh artifacts/
|
cp -Rp .gitlab-ci/setup-test-env.sh artifacts/
|
||||||
cp -Rp .gitlab-ci/common artifacts/ci-common
|
cp -Rp .gitlab-ci/common artifacts/ci-common
|
||||||
@@ -20,11 +23,37 @@ cp -Rp .gitlab-ci/bare-metal artifacts/
|
|||||||
cp -Rp .gitlab-ci/lava artifacts/
|
cp -Rp .gitlab-ci/lava artifacts/
|
||||||
cp -Rp .gitlab-ci/bin/*_logger.py artifacts/
|
cp -Rp .gitlab-ci/bin/*_logger.py artifacts/
|
||||||
|
|
||||||
|
mapfile -t duplicate_files < <(
|
||||||
|
find src/ -path '*/ci/*' \
|
||||||
|
\( \
|
||||||
|
-name '*.txt' \
|
||||||
|
-o -name '*.toml' \
|
||||||
|
-o -name '*traces*.yml' \
|
||||||
|
\) \
|
||||||
|
-exec basename -a {} + | sort | uniq -d
|
||||||
|
)
|
||||||
|
if [ ${#duplicate_files[@]} -gt 0 ]; then
|
||||||
|
echo 'Several files with the same name in various ci/ folders:'
|
||||||
|
printf -- ' %s\n' "${duplicate_files[@]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "src/" ]; then
|
||||||
|
find src/ -path '*/ci/*' \
|
||||||
|
\( \
|
||||||
|
-name '*.txt' \
|
||||||
|
-o -name '*.toml' \
|
||||||
|
-o -name '*traces*.yml' \
|
||||||
|
\) \
|
||||||
|
-exec cp -p {} artifacts/ \;
|
||||||
|
fi
|
||||||
|
cp -Rp .gitlab-ci/*.txt artifacts/
|
||||||
|
|
||||||
if [ -n "$S3_ARTIFACT_NAME" ]; then
|
if [ -n "$S3_ARTIFACT_NAME" ]; then
|
||||||
# Pass needed files to the test stage
|
# Pass needed files to the test stage
|
||||||
S3_ARTIFACT_TAR="$S3_ARTIFACT_NAME.tar.zst"
|
S3_ARTIFACT_TAR="$S3_ARTIFACT_NAME.tar.zst"
|
||||||
tar c artifacts/ | zstd -o "${S3_ARTIFACT_TAR}"
|
tar c artifacts/ | zstd -o "${S3_ARTIFACT_TAR}"
|
||||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" "${S3_ARTIFACT_TAR}" "https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_TAR}"
|
s3_upload "${S3_ARTIFACT_TAR}" "https://${PIPELINE_ARTIFACTS_BASE}/"
|
||||||
rm "${S3_ARTIFACT_TAR}"
|
rm "${S3_ARTIFACT_TAR}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2038 # TODO: rewrite the find
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
# shellcheck disable=SC1091 # paths only become valid at runtime
|
# shellcheck disable=SC1091 # paths only become valid at runtime
|
||||||
|
|
||||||
@@ -31,8 +32,7 @@ fi
|
|||||||
|
|
||||||
# Test runs don't pull down the git tree, so put the dEQP helper
|
# Test runs don't pull down the git tree, so put the dEQP helper
|
||||||
# script and associated bits there.
|
# script and associated bits there.
|
||||||
git_sha=$(git rev-parse --short=10 HEAD)
|
echo "$(cat VERSION) (git-$(git rev-parse HEAD | cut -b -10))" > install/VERSION
|
||||||
echo "$(cat VERSION) (git-$git_sha)" > install/VERSION
|
|
||||||
cp -Rp .gitlab-ci/bare-metal install/
|
cp -Rp .gitlab-ci/bare-metal install/
|
||||||
cp -Rp .gitlab-ci/common install/
|
cp -Rp .gitlab-ci/common install/
|
||||||
cp -Rp .gitlab-ci/piglit install/
|
cp -Rp .gitlab-ci/piglit install/
|
||||||
@@ -71,11 +71,20 @@ find src/ -path '*/ci/*' \
|
|||||||
\) \
|
\) \
|
||||||
-exec cp -p {} install/ \;
|
-exec cp -p {} install/ \;
|
||||||
|
|
||||||
|
# Tar up the install dir so that symlinks and hardlinks aren't each
|
||||||
|
# packed separately in the zip file.
|
||||||
|
mkdir -p artifacts/
|
||||||
|
tar -cf artifacts/install.tar install
|
||||||
|
cp -Rp .gitlab-ci/common artifacts/ci-common
|
||||||
|
cp -Rp .gitlab-ci/lava artifacts/
|
||||||
|
cp -Rp .gitlab-ci/b2c artifacts/
|
||||||
|
cp bin/ci/structured_logger.py artifacts/
|
||||||
|
|
||||||
if [ -n "$S3_ARTIFACT_NAME" ]; then
|
if [ -n "$S3_ARTIFACT_NAME" ]; then
|
||||||
# Pass needed files to the test stage
|
# Pass needed files to the test stage
|
||||||
S3_ARTIFACT_TAR="$S3_ARTIFACT_NAME.tar.zst"
|
S3_ARTIFACT_NAME="$S3_ARTIFACT_NAME.tar.zst"
|
||||||
tar -c install | zstd --quiet --threads ${FDO_CI_CONCURRENT:-0} -o ${S3_ARTIFACT_TAR}
|
zstd --quiet --threads ${FDO_CI_CONCURRENT:-0} artifacts/install.tar -o ${S3_ARTIFACT_NAME}
|
||||||
ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_TAR} https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_TAR}
|
s3_upload "${S3_ARTIFACT_NAME}" "https://${PIPELINE_ARTIFACTS_BASE}/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
section_end prepare-artifacts
|
section_end prepare-artifacts
|
||||||
|
@@ -285,6 +285,25 @@ export -f get_tag_file
|
|||||||
|
|
||||||
# Structured tagging ------
|
# Structured tagging ------
|
||||||
|
|
||||||
|
s3_upload() {
|
||||||
|
x_off
|
||||||
|
local file=$1 s3_folder_url=$2
|
||||||
|
if [ ! -f "$file" ] || [[ "$s3_folder_url" != https://*/ ]]
|
||||||
|
then
|
||||||
|
echo "Error: s3_upload incorrect usage."
|
||||||
|
echo "Usage: s3_upload <file> <s3_folder_url>"
|
||||||
|
echo " - <file> must exist."
|
||||||
|
echo " - <s3_folder_url> must start with 'https://' and end with '/'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
curl --fail --retry-all-errors --retry 4 --retry-delay 60 \
|
||||||
|
--header "Authorization: Bearer $(cat "${S3_JWT_FILE}")" \
|
||||||
|
-X PUT --form file=@"$file" \
|
||||||
|
"$s3_folder_url"
|
||||||
|
x_restore
|
||||||
|
}
|
||||||
|
export -f s3_upload
|
||||||
|
|
||||||
export -f error
|
export -f error
|
||||||
export -f trap_err
|
export -f trap_err
|
||||||
|
|
||||||
|
@@ -133,9 +133,16 @@
|
|||||||
extends:
|
extends:
|
||||||
- .piglit-performance-base
|
- .piglit-performance-base
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm64_test-gl
|
- debian/baremetal_arm64_test
|
||||||
- debian-arm64-release
|
- debian-arm64-release
|
||||||
|
|
||||||
|
.piglit-performance:x86_64:
|
||||||
|
extends:
|
||||||
|
- .piglit-performance-base
|
||||||
|
needs:
|
||||||
|
- kernel+rootfs_x86_64
|
||||||
|
- debian-release
|
||||||
|
|
||||||
# Mesa source file dependencies that may impact any GL driver test job.
|
# Mesa source file dependencies that may impact any GL driver test job.
|
||||||
.gallium-core-rules:
|
.gallium-core-rules:
|
||||||
rules:
|
rules:
|
||||||
@@ -148,7 +155,6 @@
|
|||||||
- src/gallium/frontends/dri/*
|
- src/gallium/frontends/dri/*
|
||||||
- src/gallium/frontends/glx/**/*
|
- src/gallium/frontends/glx/**/*
|
||||||
- src/gallium/targets/**/*
|
- src/gallium/targets/**/*
|
||||||
- src/gallium/tests/**/*
|
|
||||||
- src/gallium/winsys/*
|
- src/gallium/winsys/*
|
||||||
when: on_success
|
when: on_success
|
||||||
|
|
||||||
|
@@ -3,10 +3,11 @@
|
|||||||
interruptible: true
|
interruptible: true
|
||||||
variables:
|
variables:
|
||||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
GIT_STRATEGY: none # testing doesn't build anything from source
|
||||||
# `before_script:` is only used by test jobs on generic fdo runners
|
|
||||||
# it's overwritten by hardware test jobs
|
|
||||||
before_script:
|
before_script:
|
||||||
- !reference [.download_s3, before_script]
|
- !reference [default, before_script]
|
||||||
|
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
|
||||||
|
- rm -rf install
|
||||||
|
- tar -xf artifacts/install.tar
|
||||||
- section_start ldd_section "Checking ldd on driver build"
|
- section_start ldd_section "Checking ldd on driver build"
|
||||||
- LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
|
- LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
|
||||||
- section_end ldd_section
|
- section_end ldd_section
|
||||||
@@ -85,9 +86,11 @@ yaml-toml-shell-py-test:
|
|||||||
- uncollapsed_section_start tomllint "tomllint"
|
- uncollapsed_section_start tomllint "tomllint"
|
||||||
- echo "If your change looks right but this script rejects it, contact @eric (GitLab) / eric_engestrom (IRC)."
|
- echo "If your change looks right but this script rejects it, contact @eric (GitLab) / eric_engestrom (IRC)."
|
||||||
- python3 bin/toml_lint.py
|
- python3 bin/toml_lint.py
|
||||||
- uncollapsed_section_switch yamllint "yamllint"
|
- section_end tomllint
|
||||||
|
- section_start yamllint "yamllint"
|
||||||
- .gitlab-ci/run-yamllint.sh
|
- .gitlab-ci/run-yamllint.sh
|
||||||
- uncollapsed_section_switch shellcheck "shellcheck"
|
- section_end yamllint
|
||||||
|
- section_start shellcheck "shellcheck"
|
||||||
- .gitlab-ci/run-shellcheck.sh
|
- .gitlab-ci/run-shellcheck.sh
|
||||||
- section_end shellcheck
|
- section_end shellcheck
|
||||||
- .gitlab-ci/run-pytest.sh
|
- .gitlab-ci/run-pytest.sh
|
||||||
@@ -127,7 +130,6 @@ yaml-toml-shell-py-test:
|
|||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_ARCH: amd64
|
DEBIAN_ARCH: amd64
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
|
||||||
|
|
||||||
.test-vk:
|
.test-vk:
|
||||||
extends:
|
extends:
|
||||||
@@ -139,7 +141,6 @@ yaml-toml-shell-py-test:
|
|||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_ARCH: amd64
|
DEBIAN_ARCH: amd64
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
|
||||||
|
|
||||||
.test-cl:
|
.test-cl:
|
||||||
extends:
|
extends:
|
||||||
@@ -148,8 +149,6 @@ yaml-toml-shell-py-test:
|
|||||||
needs:
|
needs:
|
||||||
- debian/x86_64_test-gl
|
- debian/x86_64_test-gl
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
variables:
|
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
|
||||||
|
|
||||||
.test-android:
|
.test-android:
|
||||||
extends:
|
extends:
|
||||||
@@ -159,7 +158,6 @@ yaml-toml-shell-py-test:
|
|||||||
# This is for the guest artifacts from debian-android which will be
|
# This is for the guest artifacts from debian-android which will be
|
||||||
# downloaded explicitly by cuttlefish-runner.sh
|
# downloaded explicitly by cuttlefish-runner.sh
|
||||||
S3_ANDROID_ARTIFACT_NAME: mesa-x86_64-android-debug
|
S3_ANDROID_ARTIFACT_NAME: mesa-x86_64-android-debug
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
|
||||||
# Set the default Vulkan driver to lavapipe for some preliminary checks
|
# Set the default Vulkan driver to lavapipe for some preliminary checks
|
||||||
# that Cuttlefish always performs before starting the VM. This can be
|
# that Cuttlefish always performs before starting the VM. This can be
|
||||||
# overwritten depending on the physical machine running the job.
|
# overwritten depending on the physical machine running the job.
|
||||||
@@ -183,11 +181,7 @@ yaml-toml-shell-py-test:
|
|||||||
variables:
|
variables:
|
||||||
ANGLE_TAG: ${CONDITIONAL_BUILD_ANGLE_TAG}
|
ANGLE_TAG: ${CONDITIONAL_BUILD_ANGLE_TAG}
|
||||||
|
|
||||||
.test-piglit:
|
.b2c-vkd3d-proton-test:
|
||||||
variables:
|
|
||||||
PIGLIT_TAG: ${CONDITIONAL_BUILD_PIGLIT_TAG}
|
|
||||||
|
|
||||||
.test-vkd3d-proton:
|
|
||||||
variables:
|
variables:
|
||||||
HWCI_TEST_SCRIPT: install/vkd3d-runner.sh
|
HWCI_TEST_SCRIPT: install/vkd3d-runner.sh
|
||||||
|
|
||||||
@@ -201,8 +195,6 @@ yaml-toml-shell-py-test:
|
|||||||
- results/
|
- results/
|
||||||
exclude:
|
exclude:
|
||||||
- results/*.shader_cache
|
- results/*.shader_cache
|
||||||
extends:
|
|
||||||
- .test-piglit
|
|
||||||
variables:
|
variables:
|
||||||
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
# until we overcome Infrastructure issues, give traces extra 5 min before timeout
|
||||||
DEVICE_HANGING_TIMEOUT_SEC: 600
|
DEVICE_HANGING_TIMEOUT_SEC: 600
|
||||||
@@ -268,98 +260,62 @@ yaml-toml-shell-py-test:
|
|||||||
junit: results/junit.xml
|
junit: results/junit.xml
|
||||||
|
|
||||||
# ARM testing of bare-metal boards attached to an x86 gitlab-runner system
|
# ARM testing of bare-metal boards attached to an x86 gitlab-runner system
|
||||||
.baremetal-test-arm32-gl:
|
.baremetal-test-arm32:
|
||||||
extends:
|
extends:
|
||||||
- .baremetal-test
|
- .baremetal-test
|
||||||
- .use-debian/baremetal_arm32_test-gl
|
- .use-debian/baremetal_arm32_test
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_ARCH: armhf
|
DEBIAN_ARCH: armhf
|
||||||
S3_ARTIFACT_NAME: mesa-arm32-default-debugoptimized
|
S3_ARTIFACT_NAME: mesa-arm32-default-debugoptimized
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm32_test-gl
|
- debian/baremetal_arm32_test
|
||||||
- job: debian-arm32
|
- job: debian-arm32
|
||||||
artifacts: false
|
artifacts: false
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
|
|
||||||
# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system
|
# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system
|
||||||
.baremetal-test-arm64-gl:
|
.baremetal-test-arm64:
|
||||||
extends:
|
extends:
|
||||||
- .baremetal-test
|
- .baremetal-test
|
||||||
- .use-debian/baremetal_arm64_test-gl
|
- .use-debian/baremetal_arm64_test
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_ARCH: arm64
|
DEBIAN_ARCH: arm64
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-default-debugoptimized
|
S3_ARTIFACT_NAME: mesa-arm64-default-debugoptimized
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm64_test-gl
|
- debian/baremetal_arm64_test
|
||||||
- job: debian-arm64
|
|
||||||
artifacts: false
|
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
|
||||||
|
|
||||||
# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system
|
|
||||||
.baremetal-test-arm64-vk:
|
|
||||||
extends:
|
|
||||||
- .baremetal-test
|
|
||||||
- .use-debian/baremetal_arm64_test-vk
|
|
||||||
variables:
|
|
||||||
DEBIAN_ARCH: arm64
|
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-default-debugoptimized
|
|
||||||
needs:
|
|
||||||
- debian/baremetal_arm64_test-vk
|
|
||||||
- job: debian-arm64
|
- job: debian-arm64
|
||||||
artifacts: false
|
artifacts: false
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
|
|
||||||
# ARM32/64 testing of bare-metal boards attached to an x86 gitlab-runner system, using an asan mesa build
|
# ARM32/64 testing of bare-metal boards attached to an x86 gitlab-runner system, using an asan mesa build
|
||||||
.baremetal-arm32-asan-test-gl:
|
.baremetal-arm32-asan-test:
|
||||||
variables:
|
variables:
|
||||||
S3_ARTIFACT_NAME: mesa-arm32-asan-debugoptimized
|
S3_ARTIFACT_NAME: mesa-arm32-asan-debugoptimized
|
||||||
DEQP_FORCE_ASAN: 1
|
DEQP_FORCE_ASAN: 1
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm32_test-gl
|
- debian/baremetal_arm32_test
|
||||||
- job: debian-arm32-asan
|
- job: debian-arm32-asan
|
||||||
artifacts: false
|
artifacts: false
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
|
|
||||||
.baremetal-arm64-asan-test-gl:
|
.baremetal-arm64-asan-test:
|
||||||
variables:
|
variables:
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
||||||
DEQP_FORCE_ASAN: 1
|
DEQP_FORCE_ASAN: 1
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm64_test-gl
|
- debian/baremetal_arm64_test
|
||||||
- job: debian-arm64-asan
|
- job: debian-arm64-asan
|
||||||
artifacts: false
|
artifacts: false
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
|
|
||||||
.baremetal-arm64-asan-test-vk:
|
.baremetal-arm64-ubsan-test:
|
||||||
variables:
|
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
|
||||||
DEQP_FORCE_ASAN: 1
|
|
||||||
needs:
|
|
||||||
- debian/baremetal_arm64_test-vk
|
|
||||||
- job: debian-arm64-asan
|
|
||||||
artifacts: false
|
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
|
||||||
|
|
||||||
.baremetal-arm64-ubsan-test-gl:
|
|
||||||
extends:
|
extends:
|
||||||
- .baremetal-test
|
- .baremetal-test
|
||||||
- .use-debian/baremetal_arm64_test-vk
|
- .use-debian/baremetal_arm64_test
|
||||||
variables:
|
variables:
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-ubsan-debugoptimized
|
S3_ARTIFACT_NAME: mesa-arm64-ubsan-debugoptimized
|
||||||
needs:
|
needs:
|
||||||
- debian/baremetal_arm64_test-vk
|
- debian/baremetal_arm64_test
|
||||||
- job: debian-arm64-ubsan
|
|
||||||
artifacts: false
|
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
|
||||||
|
|
||||||
.baremetal-arm64-ubsan-test-vk:
|
|
||||||
extends:
|
|
||||||
- .baremetal-test
|
|
||||||
- .use-debian/baremetal_arm64_test-vk
|
|
||||||
variables:
|
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-ubsan-debugoptimized
|
|
||||||
needs:
|
|
||||||
- debian/baremetal_arm64_test-vk
|
|
||||||
- job: debian-arm64-ubsan
|
- job: debian-arm64-ubsan
|
||||||
artifacts: false
|
artifacts: false
|
||||||
- !reference [.required-for-hardware-jobs, needs]
|
- !reference [.required-for-hardware-jobs, needs]
|
||||||
@@ -420,9 +376,6 @@ yaml-toml-shell-py-test:
|
|||||||
B2C_JOB_TEMPLATE: "${CI_B2C_ARTIFACTS}/b2c.yml.jinja2.jinja2"
|
B2C_JOB_TEMPLATE: "${CI_B2C_ARTIFACTS}/b2c.yml.jinja2.jinja2"
|
||||||
JOB_FOLDER: "job_folder"
|
JOB_FOLDER: "job_folder"
|
||||||
|
|
||||||
# Assume by default this is running deqp, as that's almost always true
|
|
||||||
HWCI_TEST_SCRIPT: install/deqp-runner.sh
|
|
||||||
|
|
||||||
needs:
|
needs:
|
||||||
- job: python-artifacts
|
- job: python-artifacts
|
||||||
artifacts: true
|
artifacts: true
|
||||||
|
@@ -118,15 +118,19 @@ def test_gl_sections():
|
|||||||
section_types = [s.type for s in lf.section_history]
|
section_types = [s.type for s in lf.section_history]
|
||||||
|
|
||||||
assert "section_start" in parsed_lines[0]
|
assert "section_start" in parsed_lines[0]
|
||||||
assert "collapsed=true" in parsed_lines[0]
|
assert "collapsed=true" not in parsed_lines[0]
|
||||||
assert "section_end" in parsed_lines[1]
|
assert "section_end" in parsed_lines[1]
|
||||||
assert "section_start" in parsed_lines[2]
|
assert "section_start" in parsed_lines[2]
|
||||||
assert "collapsed=true" in parsed_lines[2]
|
assert "collapsed=true" not in parsed_lines[2]
|
||||||
assert "section_end" in parsed_lines[3]
|
assert "section_end" in parsed_lines[3]
|
||||||
assert "section_start" in parsed_lines[4]
|
assert "section_start" in parsed_lines[4]
|
||||||
assert "collapsed=true" in parsed_lines[4]
|
assert "collapsed=true" not in parsed_lines[4]
|
||||||
|
assert "section_end" in parsed_lines[5]
|
||||||
|
assert "section_start" in parsed_lines[6]
|
||||||
|
assert "collapsed=true" in parsed_lines[6]
|
||||||
assert section_types == [
|
assert section_types == [
|
||||||
# LogSectionType.LAVA_BOOT, True, if LogFollower started with Boot section
|
# LogSectionType.LAVA_BOOT, True, if LogFollower started with Boot section
|
||||||
|
LogSectionType.TEST_DUT_SUITE,
|
||||||
LogSectionType.TEST_SUITE,
|
LogSectionType.TEST_SUITE,
|
||||||
LogSectionType.TEST_CASE,
|
LogSectionType.TEST_CASE,
|
||||||
LogSectionType.LAVA_POST_PROCESSING,
|
LogSectionType.LAVA_POST_PROCESSING,
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
. "${SCRIPTS_DIR}/setup-test-env.sh"
|
||||||
|
|
||||||
set -eu -o pipefail
|
set -e
|
||||||
|
|
||||||
comma_separated() {
|
comma_separated() {
|
||||||
local IFS=,
|
local IFS=,
|
||||||
@@ -21,7 +21,7 @@ INSTALL=$(realpath -s "$PWD"/install)
|
|||||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||||
# using a command wrapper. Hence, we will just set it when running the
|
# using a command wrapper. Hence, we will just set it when running the
|
||||||
# command.
|
# command.
|
||||||
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:$INSTALL/lib/:/vkd3d-proton-tests/lib/"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/:/vkd3d-proton-tests/x64/"
|
||||||
|
|
||||||
|
|
||||||
# Set the Vulkan driver to use.
|
# Set the Vulkan driver to use.
|
||||||
@@ -43,7 +43,7 @@ fi
|
|||||||
# Sanity check to ensure that our environment is sufficient to make our tests
|
# 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.
|
# run against the Mesa built by CI, rather than any installed distro version.
|
||||||
MESA_VERSION=$(cat "$INSTALL/VERSION")
|
MESA_VERSION=$(cat "$INSTALL/VERSION")
|
||||||
if ! vulkaninfo 2>/dev/null | grep driverInfo | tee /tmp/version.txt | grep -qF "Mesa $MESA_VERSION"; then
|
if ! vulkaninfo | grep driverInfo | tee /tmp/version.txt | grep -F "Mesa $MESA_VERSION"; then
|
||||||
printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
|
printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -51,10 +51,7 @@ fi
|
|||||||
# Gather the list expected failures
|
# Gather the list expected failures
|
||||||
EXPECTATIONFILE="$RESULTS_DIR/$GPU_VERSION-vkd3d-fails.txt"
|
EXPECTATIONFILE="$RESULTS_DIR/$GPU_VERSION-vkd3d-fails.txt"
|
||||||
if [ -f "$INSTALL/$GPU_VERSION-vkd3d-fails.txt" ]; then
|
if [ -f "$INSTALL/$GPU_VERSION-vkd3d-fails.txt" ]; then
|
||||||
# Ignore the grep "failure" if the file exists but contains only comments
|
grep -vE '^(#|$)' "$INSTALL/$GPU_VERSION-vkd3d-fails.txt" | sort > "$EXPECTATIONFILE"
|
||||||
# or empty lines; the expectation file used will be empty in this case,
|
|
||||||
# which is not a problem.
|
|
||||||
grep -vE '^(#|$)' "$INSTALL/$GPU_VERSION-vkd3d-fails.txt" | sort > "$EXPECTATIONFILE" || true
|
|
||||||
else
|
else
|
||||||
printf "%s\n" "$GPU_VERSION-vkd3d-fails.txt not found, assuming a \"no failures\" baseline."
|
printf "%s\n" "$GPU_VERSION-vkd3d-fails.txt not found, assuming a \"no failures\" baseline."
|
||||||
touch "$EXPECTATIONFILE"
|
touch "$EXPECTATIONFILE"
|
||||||
@@ -92,13 +89,17 @@ fi
|
|||||||
printf "%s\n" "Running vkd3d-proton testsuite..."
|
printf "%s\n" "Running vkd3d-proton testsuite..."
|
||||||
|
|
||||||
LOGFILE="$RESULTS_DIR/vkd3d-proton-log.txt"
|
LOGFILE="$RESULTS_DIR/vkd3d-proton-log.txt"
|
||||||
TEST_LOGS="/test-logs"
|
TEST_LOGS="$RESULTS_DIR/test-logs"
|
||||||
pushd /vkd3d-proton-tests
|
(cd /vkd3d-proton-tests && tests/test-runner.sh x64/bin/d3d12 --jobs "${FDO_CI_CONCURRENT:-4}" --output-dir "$TEST_LOGS" | tee "$LOGFILE")
|
||||||
tests/test-runner.sh ./d3d12 --jobs "${FDO_CI_CONCURRENT:-4}" --output-dir "$TEST_LOGS" | tee "$LOGFILE" || true
|
|
||||||
popd
|
|
||||||
|
|
||||||
printf '\n\n'
|
printf '\n\n'
|
||||||
|
|
||||||
|
# Check if the executable finished (ie. no segfault).
|
||||||
|
if ! grep -E "^Finished" "$LOGFILE" > /dev/null; then
|
||||||
|
error "Failed, see ${ARTIFACTS_BASE_URL}/results/vkd3d-proton-log.txt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Print list of flakes seen this time
|
# Print list of flakes seen this time
|
||||||
flakes_seen=()
|
flakes_seen=()
|
||||||
for flake in "${flakes[@]}"; do
|
for flake in "${flakes[@]}"; do
|
||||||
@@ -113,17 +114,12 @@ if [ ${#flakes_seen[@]} -gt 0 ]; then
|
|||||||
printf >&2 ' %s\n' "${flakes_seen[@]}"
|
printf >&2 ' %s\n' "${flakes_seen[@]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Collect all the failures; ignore grep "failure" if there are none
|
# Collect all the failures
|
||||||
fails_lines=$(grep -oE "^FAILED .+$" "$LOGFILE" | cut -d' ' -f2 | sort) || true
|
mapfile -t fails < <(grep -oE "^FAILED .+$" "$LOGFILE" | cut -d' ' -f2 | sort)
|
||||||
if [ -n "$fails_lines" ]; then
|
|
||||||
mapfile -t fails < <(echo "$fails_lines")
|
|
||||||
else
|
|
||||||
fails=()
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Save test output for failed tests (before excluding flakes)
|
# Save test output for failed tests (before excluding flakes)
|
||||||
for failed_test in "${fails[@]}"; do
|
for failed_test in "${fails[@]}"; do
|
||||||
cp "$TEST_LOGS/$failed_test.log" "$RESULTS_DIR/$failed_test.log"
|
cp "$TEST_LOGS/$failed_test.log" "$RESULTS/$failed_test.log"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Ignore flakes when comparing
|
# Ignore flakes when comparing
|
||||||
@@ -133,11 +129,11 @@ for flake in "${flakes[@]}"; do
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
RESULTSFILE="$RESULTS_DIR/$GPU_VERSION.txt"
|
RESULTSFILE="$RESULTS/$GPU_VERSION.txt"
|
||||||
for failed_test in "${fails[@]}"; do
|
for failed_test in "${fails[@]}"; do
|
||||||
if ! grep -qE "$failed_test end" "$RESULTS_DIR/$failed_test.log"; then
|
if ! grep -qE "$failed_test end" "$RESULTS/$failed_test.log"; then
|
||||||
test_status=Crash
|
test_status=Crash
|
||||||
elif grep -qE "Test failed:" "$RESULTS_DIR/$failed_test.log"; then
|
elif grep -qE "Test failed:" "$RESULTS/$failed_test.log"; then
|
||||||
test_status=Fail
|
test_status=Fail
|
||||||
else
|
else
|
||||||
test_status=Unknown
|
test_status=Unknown
|
||||||
@@ -151,7 +147,7 @@ for expected_fail_line in "${expected_fail_lines[@]}"; do
|
|||||||
test_name=$(cut -d, -f1 <<< "$expected_fail_line")
|
test_name=$(cut -d, -f1 <<< "$expected_fail_line")
|
||||||
if [ ! -f "$TEST_LOGS/$test_name.log" ]; then
|
if [ ! -f "$TEST_LOGS/$test_name.log" ]; then
|
||||||
test_status='UnexpectedImprovement(Skip)'
|
test_status='UnexpectedImprovement(Skip)'
|
||||||
elif [ ! -f "$RESULTS_DIR/$test_name.log" ]; then
|
elif [ ! -f "$RESULTS/$test_name.log" ]; then
|
||||||
test_status='UnexpectedImprovement(Pass)'
|
test_status='UnexpectedImprovement(Pass)'
|
||||||
else
|
else
|
||||||
continue
|
continue
|
||||||
|
@@ -53,6 +53,7 @@ meson setup `
|
|||||||
-Dvideo-codecs="all" `
|
-Dvideo-codecs="all" `
|
||||||
-Dgles1=enabled `
|
-Dgles1=enabled `
|
||||||
-Dgles2=enabled `
|
-Dgles2=enabled `
|
||||||
|
-Dgallium-opencl=icd `
|
||||||
-Dgallium-rusticl=false `
|
-Dgallium-rusticl=false `
|
||||||
-Dmicrosoft-clc=enabled `
|
-Dmicrosoft-clc=enabled `
|
||||||
-Dstatic-libclc=all `
|
-Dstatic-libclc=all `
|
||||||
|
20152
.pick_status.json
Normal file
20152
.pick_status.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -51,7 +51,7 @@ LOCAL_HEADER_LIBRARIES := libnativebase_headers hwvulkan_headers
|
|||||||
MESON_GEN_PKGCONFIGS := log cutils expat hardware libdrm:$(LIBDRM_VERSION) nativewindow sync zlib:1.2.11 libelf
|
MESON_GEN_PKGCONFIGS := log cutils expat hardware libdrm:$(LIBDRM_VERSION) nativewindow sync zlib:1.2.11 libelf
|
||||||
LOCAL_CFLAGS += $(BOARD_MESA3D_CFLAGS)
|
LOCAL_CFLAGS += $(BOARD_MESA3D_CFLAGS)
|
||||||
|
|
||||||
ifneq ($(filter swrast,$(BOARD_MESA3D_GALLIUM_DRIVERS) $(BOARD_MESA3D_VULKAN_DRIVERS)),)
|
ifneq ($(filter llvmpipe swrast,$(BOARD_MESA3D_GALLIUM_DRIVERS) $(BOARD_MESA3D_VULKAN_DRIVERS)),)
|
||||||
ifeq ($(BOARD_MESA3D_FORCE_SOFTPIPE),)
|
ifeq ($(BOARD_MESA3D_FORCE_SOFTPIPE),)
|
||||||
MESON_GEN_LLVM_STUB := true
|
MESON_GEN_LLVM_STUB := true
|
||||||
endif
|
endif
|
||||||
@@ -104,7 +104,6 @@ LOCAL_SHARED_LIBRARIES += \
|
|||||||
libutils
|
libutils
|
||||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 35; echo $$?), 0)
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 35; echo $$?), 0)
|
||||||
LOCAL_SHARED_LIBRARIES += libui
|
LOCAL_SHARED_LIBRARIES += libui
|
||||||
LOCAL_STATIC_LIBRARIES += libzstd
|
|
||||||
MESON_GEN_PKGCONFIGS += ui
|
MESON_GEN_PKGCONFIGS += ui
|
||||||
endif
|
endif
|
||||||
MESON_GEN_PKGCONFIGS += android.hardware.graphics.mapper:4.0
|
MESON_GEN_PKGCONFIGS += android.hardware.graphics.mapper:4.0
|
||||||
|
@@ -16,12 +16,12 @@ import argparse
|
|||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from collections import defaultdict, Counter
|
from collections import defaultdict
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from subprocess import check_output, CalledProcessError
|
from subprocess import check_output, CalledProcessError
|
||||||
from typing import Callable, Dict, TYPE_CHECKING, Iterable, Literal, Optional, Tuple, cast
|
from typing import Dict, TYPE_CHECKING, Iterable, Literal, Optional, Tuple
|
||||||
|
|
||||||
import gitlab
|
import gitlab
|
||||||
import gitlab.v4.objects
|
import gitlab.v4.objects
|
||||||
@@ -44,7 +44,6 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
REFRESH_WAIT_LOG = 10
|
REFRESH_WAIT_LOG = 10
|
||||||
REFRESH_WAIT_JOBS = 6
|
REFRESH_WAIT_JOBS = 6
|
||||||
MAX_ENABLE_JOB_ATTEMPTS = 3
|
|
||||||
|
|
||||||
URL_START = "\033]8;;"
|
URL_START = "\033]8;;"
|
||||||
URL_END = "\033]8;;\a"
|
URL_END = "\033]8;;\a"
|
||||||
@@ -100,44 +99,17 @@ def job_duration(job: gitlab.v4.objects.ProjectPipelineJob) -> float:
|
|||||||
if job.duration:
|
if job.duration:
|
||||||
return job.duration
|
return job.duration
|
||||||
elif job.started_at:
|
elif job.started_at:
|
||||||
# Convert both times to UTC timestamps for consistent comparison
|
return time.perf_counter() - time.mktime(job.started_at.timetuple())
|
||||||
current_time = time.time()
|
|
||||||
start_time = job.started_at.timestamp()
|
|
||||||
return current_time - start_time
|
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
|
|
||||||
def pretty_wait(sec: int) -> None:
|
def pretty_wait(sec: int) -> None:
|
||||||
"""shows progressbar in dots"""
|
"""shows progressbar in dots"""
|
||||||
for val in range(sec, 0, -1):
|
for val in range(sec, 0, -1):
|
||||||
print(f"⏲ {val:2d} seconds", end="\r") # U+23F2 Timer clock
|
print(f"⏲ {val} seconds", end="\r") # U+23F2 Timer clock
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
def run_target_job(
|
|
||||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
|
||||||
enable_job_fn: Callable,
|
|
||||||
stress: int,
|
|
||||||
execution_times: dict,
|
|
||||||
target_statuses: dict,
|
|
||||||
name_field_pad: int,
|
|
||||||
) -> None:
|
|
||||||
execution_times[job.name][job.id] = (job_duration(job), job.status, job.web_url)
|
|
||||||
if stress and job.status in COMPLETED_STATUSES:
|
|
||||||
if (
|
|
||||||
stress < 0
|
|
||||||
or len(execution_times[job.name]) < stress
|
|
||||||
):
|
|
||||||
enable_job_fn(job=job, action_type="retry")
|
|
||||||
# Wait for the next loop to get the updated job object
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
enable_job_fn(job=job, action_type="target")
|
|
||||||
|
|
||||||
print_job_status(job, job.status not in target_statuses[job.name], name_field_pad)
|
|
||||||
target_statuses[job.name] = job.status
|
|
||||||
|
|
||||||
|
|
||||||
def monitor_pipeline(
|
def monitor_pipeline(
|
||||||
project: gitlab.v4.objects.Project,
|
project: gitlab.v4.objects.Project,
|
||||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||||
@@ -150,7 +122,8 @@ def monitor_pipeline(
|
|||||||
"""Monitors pipeline and delegate canceling jobs"""
|
"""Monitors pipeline and delegate canceling jobs"""
|
||||||
statuses: dict[str, str] = defaultdict(str)
|
statuses: dict[str, str] = defaultdict(str)
|
||||||
target_statuses: dict[str, str] = defaultdict(str)
|
target_statuses: dict[str, str] = defaultdict(str)
|
||||||
execution_times: dict[str, dict[str, tuple[float, str, str]]] = defaultdict(lambda: defaultdict(tuple))
|
stress_status_counter: dict[str, dict[str, int]] = defaultdict(lambda: defaultdict(int))
|
||||||
|
execution_times = defaultdict(lambda: defaultdict(tuple))
|
||||||
target_id: int = -1
|
target_id: int = -1
|
||||||
name_field_pad: int = len(max(dependencies, key=len))+2
|
name_field_pad: int = len(max(dependencies, key=len))+2
|
||||||
# In a running pipeline, we can skip following job traces that are in these statuses.
|
# In a running pipeline, we can skip following job traces that are in these statuses.
|
||||||
@@ -164,18 +137,17 @@ def monitor_pipeline(
|
|||||||
include_stage_regex.fullmatch(job.stage) and \
|
include_stage_regex.fullmatch(job.stage) and \
|
||||||
not exclude_stage_regex.fullmatch(job.stage) and \
|
not exclude_stage_regex.fullmatch(job.stage) and \
|
||||||
job.status in COMPLETED_STATUSES:
|
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)
|
execution_times[job.name][job.id] = (job_duration(job), job.status, job.web_url)
|
||||||
|
|
||||||
# jobs_waiting is a list of job names that are waiting for status update.
|
# jobs_waiting is a list of job names that are waiting for status update.
|
||||||
# It occurs when a job that we want to run depends on another job that is not yet finished.
|
# It occurs when a job that we want to run depends on another job that is not yet finished.
|
||||||
jobs_waiting = []
|
jobs_waiting = []
|
||||||
# Dictionary to track the number of attempts made for each job
|
|
||||||
enable_attempts: dict[int, int] = {}
|
|
||||||
# FIXME: This function has too many parameters, consider refactoring.
|
# FIXME: This function has too many parameters, consider refactoring.
|
||||||
enable_job_fn = partial(
|
enable_job_fn = partial(
|
||||||
enable_job,
|
enable_job,
|
||||||
project=project,
|
project=project,
|
||||||
enable_attempts=enable_attempts,
|
pipeline=pipeline,
|
||||||
job_name_field_pad=name_field_pad,
|
job_name_field_pad=name_field_pad,
|
||||||
jobs_waiting=jobs_waiting,
|
jobs_waiting=jobs_waiting,
|
||||||
)
|
)
|
||||||
@@ -184,20 +156,28 @@ def monitor_pipeline(
|
|||||||
to_cancel = []
|
to_cancel = []
|
||||||
jobs_waiting.clear()
|
jobs_waiting.clear()
|
||||||
for job in sorted(pipeline.jobs.list(all=True), key=lambda j: j.name):
|
for job in sorted(pipeline.jobs.list(all=True), key=lambda j: j.name):
|
||||||
job = cast(gitlab.v4.objects.ProjectPipelineJob, job)
|
|
||||||
if target_jobs_regex.fullmatch(job.name) and \
|
if target_jobs_regex.fullmatch(job.name) and \
|
||||||
include_stage_regex.fullmatch(job.stage) and \
|
include_stage_regex.fullmatch(job.stage) and \
|
||||||
not exclude_stage_regex.fullmatch(job.stage):
|
not exclude_stage_regex.fullmatch(job.stage):
|
||||||
run_target_job(
|
|
||||||
job,
|
|
||||||
enable_job_fn,
|
|
||||||
stress,
|
|
||||||
execution_times,
|
|
||||||
target_statuses,
|
|
||||||
name_field_pad,
|
|
||||||
)
|
|
||||||
target_id = job.id
|
target_id = job.id
|
||||||
|
target_status = job.status
|
||||||
|
|
||||||
|
if stress and target_status in COMPLETED_STATUSES:
|
||||||
|
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_fn(job=job, action_type="retry")
|
||||||
|
else:
|
||||||
|
execution_times[job.name][job.id] = (job_duration(job), target_status, job.web_url)
|
||||||
|
job = enable_job_fn(job=job, action_type="target")
|
||||||
|
|
||||||
|
print_job_status(job, target_status not in target_statuses[job.name], name_field_pad)
|
||||||
|
target_statuses[job.name] = target_status
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# all other non-target jobs
|
# all other non-target jobs
|
||||||
if job.status != statuses[job.name]:
|
if job.status != statuses[job.name]:
|
||||||
print_job_status(job, True, name_field_pad)
|
print_job_status(job, True, name_field_pad)
|
||||||
@@ -205,9 +185,7 @@ def monitor_pipeline(
|
|||||||
|
|
||||||
# run dependencies and cancel the rest
|
# run dependencies and cancel the rest
|
||||||
if job.name in dependencies:
|
if job.name in dependencies:
|
||||||
if not enable_job_fn(job=job, action_type="dep"):
|
job = enable_job_fn(job=job, action_type="dep")
|
||||||
# Wait for the next loop to get the updated job object
|
|
||||||
continue
|
|
||||||
if job.status == "failed":
|
if job.status == "failed":
|
||||||
deps_failed.append(job.name)
|
deps_failed.append(job.name)
|
||||||
else:
|
else:
|
||||||
@@ -217,22 +195,14 @@ def monitor_pipeline(
|
|||||||
|
|
||||||
if stress:
|
if stress:
|
||||||
enough = True
|
enough = True
|
||||||
status_counters = {
|
for job_name, status in sorted(stress_status_counter.items()):
|
||||||
name: Counter(info[1] for info in runs.values())
|
|
||||||
for name, runs in execution_times.items()
|
|
||||||
}
|
|
||||||
for job_name, counter in sorted(status_counters.items()):
|
|
||||||
n_succeed = counter.get("success", 0)
|
|
||||||
n_failed = counter.get("failed", 0)
|
|
||||||
n_total_completed = n_succeed + n_failed
|
|
||||||
n_total_seen = len(execution_times[job_name])
|
|
||||||
print(
|
print(
|
||||||
f"* {job_name:{name_field_pad}}succ: {n_succeed}; "
|
f"* {job_name:{name_field_pad}}succ: {status['success']}; "
|
||||||
f"fail: {n_failed}; "
|
f"fail: {status['failed']}; "
|
||||||
f"total: {n_total_seen} of {stress}",
|
f"total: {sum(status.values())} of {stress}",
|
||||||
flush=False,
|
flush=False,
|
||||||
)
|
)
|
||||||
if stress < 0 or n_total_completed < stress:
|
if stress < 0 or sum(status.values()) < stress:
|
||||||
enough = False
|
enough = False
|
||||||
|
|
||||||
if not enough:
|
if not enough:
|
||||||
@@ -248,10 +218,8 @@ def monitor_pipeline(
|
|||||||
pretty_wait(REFRESH_WAIT_JOBS)
|
pretty_wait(REFRESH_WAIT_JOBS)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if (
|
if len(target_statuses) == 1 and RUNNING_STATUSES.intersection(
|
||||||
stress in [0, 1]
|
target_statuses.values()
|
||||||
and len(target_statuses) == 1
|
|
||||||
and RUNNING_STATUSES.intersection(target_statuses.values())
|
|
||||||
):
|
):
|
||||||
return target_id, None, execution_times
|
return target_id, None, execution_times
|
||||||
|
|
||||||
@@ -279,58 +247,42 @@ def monitor_pipeline(
|
|||||||
pretty_wait(REFRESH_WAIT_JOBS)
|
pretty_wait(REFRESH_WAIT_JOBS)
|
||||||
|
|
||||||
|
|
||||||
|
def get_pipeline_job(
|
||||||
|
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||||
|
job_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]
|
||||||
|
|
||||||
|
|
||||||
def enable_job(
|
def enable_job(
|
||||||
project: gitlab.v4.objects.Project,
|
project: gitlab.v4.objects.Project,
|
||||||
|
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
job: gitlab.v4.objects.ProjectPipelineJob,
|
||||||
enable_attempts: dict[int, int],
|
|
||||||
action_type: Literal["target", "dep", "retry"],
|
action_type: Literal["target", "dep", "retry"],
|
||||||
job_name_field_pad: int = 0,
|
job_name_field_pad: int = 0,
|
||||||
jobs_waiting: list[str] = [],
|
jobs_waiting: list[str] = [],
|
||||||
) -> bool:
|
) -> gitlab.v4.objects.ProjectPipelineJob:
|
||||||
"""
|
|
||||||
Enable a job to run.
|
|
||||||
:param project: The GitLab project.
|
|
||||||
:param job: The job to enable.
|
|
||||||
:param enable_attempts: A dictionary to track the number of attempts made for each job.
|
|
||||||
:param action_type: The type of action to perform.
|
|
||||||
:return: True if the job was enabled, False otherwise.
|
|
||||||
"""
|
|
||||||
# We want to run this job, but it is not ready to run yet, so let's try again in the next
|
# We want to run this job, but it is not ready to run yet, so let's try again in the next
|
||||||
# iteration.
|
# iteration.
|
||||||
if job.status == "created":
|
if job.status == "created":
|
||||||
jobs_waiting.append(job.name)
|
jobs_waiting.append(job.name)
|
||||||
return False
|
return job
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(job.status in COMPLETED_STATUSES and action_type != "retry")
|
(job.status in COMPLETED_STATUSES and action_type != "retry")
|
||||||
or job.status in {"skipped"} | RUNNING_STATUSES
|
or job.status in {"skipped"} | RUNNING_STATUSES
|
||||||
):
|
):
|
||||||
return False
|
return job
|
||||||
|
|
||||||
# Get current attempt number
|
|
||||||
attempt_count = enable_attempts.get(job.id, 0)
|
|
||||||
# Check if we've exceeded max attempts to avoid infinite loop
|
|
||||||
if attempt_count >= MAX_ENABLE_JOB_ATTEMPTS:
|
|
||||||
raise RuntimeError(
|
|
||||||
f"Maximum enabling attempts ({MAX_ENABLE_JOB_ATTEMPTS}) reached for job {job.name} "
|
|
||||||
f"({link2print(job.web_url, job.id)}). Giving up."
|
|
||||||
)
|
|
||||||
enable_attempts[job.id] = attempt_count + 1
|
|
||||||
|
|
||||||
pjob = project.jobs.get(job.id, lazy=True)
|
pjob = project.jobs.get(job.id, lazy=True)
|
||||||
|
|
||||||
if job.status in {"success", "failed", "canceled", "canceling"}:
|
if job.status in {"success", "failed", "canceled", "canceling"}:
|
||||||
try:
|
new_job = pjob.retry()
|
||||||
pjob.retry()
|
job = get_pipeline_job(pipeline, new_job["id"])
|
||||||
except Exception as e:
|
|
||||||
print(f"Error retrying job {job.name}: {e}")
|
|
||||||
return False
|
|
||||||
else:
|
else:
|
||||||
try:
|
|
||||||
pjob.play()
|
pjob.play()
|
||||||
except Exception as e:
|
job = get_pipeline_job(pipeline, pjob.id)
|
||||||
print(f"Error playing job {job.name}: {e}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
if action_type == "target":
|
if action_type == "target":
|
||||||
jtype = "🞋 target" # U+1F78B Round target
|
jtype = "🞋 target" # U+1F78B Round target
|
||||||
@@ -342,7 +294,7 @@ def enable_job(
|
|||||||
job_name_field_pad = len(job.name) if job_name_field_pad < 1 else job_name_field_pad
|
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:{job_name_field_pad}}manually enabled" + Style.RESET_ALL)
|
||||||
|
|
||||||
return True
|
return job
|
||||||
|
|
||||||
|
|
||||||
def cancel_job(
|
def cancel_job(
|
||||||
@@ -426,9 +378,9 @@ def parse_args() -> argparse.Namespace:
|
|||||||
help="Job stages to exclude when searching for target jobs. "
|
help="Job stages to exclude when searching for target jobs. "
|
||||||
"For multiple targets, pass multiple values, eg. "
|
"For multiple targets, pass multiple values, eg. "
|
||||||
"`--exclude-stage foo bar`. By default, performance and "
|
"`--exclude-stage foo bar`. By default, performance and "
|
||||||
"nightly jobs are excluded; pass --exclude-stage '' to "
|
"post-merge jobs are excluded; pass --exclude-stage '' to "
|
||||||
"include them for consideration.",
|
"include them for consideration.",
|
||||||
default=["performance", ".*-postmerge", ".*-nightly"],
|
default=["performance", ".*-postmerge"],
|
||||||
nargs=argparse.ONE_OR_MORE,
|
nargs=argparse.ONE_OR_MORE,
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
@@ -85,46 +85,3 @@ relevant as we have many stable branches all using CI).
|
|||||||
|
|
||||||
Now it's time to define your test jobs in the driver-specific
|
Now it's time to define your test jobs in the driver-specific
|
||||||
gitlab-ci.yml file, using the device-specific tags.
|
gitlab-ci.yml file, using the device-specific tags.
|
||||||
|
|
||||||
Caching downloads
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
To improve the runtime for downloading traces during traces job runs, you will
|
|
||||||
want a pass-through HTTP cache. On your runner box, install nginx:
|
|
||||||
|
|
||||||
.. code-block:: sh
|
|
||||||
|
|
||||||
sudo apt install nginx libnginx-mod-http-lua
|
|
||||||
|
|
||||||
Add the server setup files:
|
|
||||||
|
|
||||||
.. literalinclude:: fdo-cache
|
|
||||||
:name: /etc/nginx/sites-available/fdo-cache
|
|
||||||
:caption: /etc/nginx/sites-available/fdo-cache
|
|
||||||
|
|
||||||
.. literalinclude:: uri-caching.conf
|
|
||||||
:name: /etc/nginx/snippets/uri-caching.conf
|
|
||||||
:caption: /etc/nginx/snippets/uri-caching.conf
|
|
||||||
|
|
||||||
Edit the listener addresses in fdo-cache to suit the ethernet interface that
|
|
||||||
your devices are on.
|
|
||||||
|
|
||||||
Enable the site and restart nginx:
|
|
||||||
|
|
||||||
.. code-block:: sh
|
|
||||||
|
|
||||||
sudo rm /etc/nginx/sites-enabled/default
|
|
||||||
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
|
|
||||||
sudo systemctl restart nginx
|
|
||||||
|
|
||||||
# First download will hit the internet
|
|
||||||
wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo-v2.trace
|
|
||||||
# Second download should be cached.
|
|
||||||
wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo-v2.trace
|
|
||||||
|
|
||||||
Now, set ``download-url`` in your ``traces-*.yml`` entry to something like
|
|
||||||
``http://caching-proxy/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public``
|
|
||||||
and you should have cached downloads for traces. Add it to
|
|
||||||
``FDO_HTTP_CACHE_URI=`` in your ``config.toml`` runner environment lines and you
|
|
||||||
can use it for cached artifact downloads instead of going all the way to
|
|
||||||
freedesktop.org on each job.
|
|
||||||
|
@@ -1,10 +1,232 @@
|
|||||||
Bare-metal CI
|
Bare-metal CI
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Bare-metal support is being removed from Mesa, and adding new devices is
|
The bare-metal scripts run on a system with gitlab-runner and Docker,
|
||||||
no longer supported.
|
connected to potentially multiple bare-metal boards that run tests of
|
||||||
|
Mesa. Currently "fastboot", "ChromeOS Servo", and POE-powered devices are
|
||||||
|
supported.
|
||||||
|
|
||||||
Please consider using one of the following alternatives:
|
In comparison with LAVA, this doesn't involve maintaining a separate
|
||||||
|
web service with its own job scheduler and replicating jobs between the
|
||||||
|
two. It also places more of the board support in Git, instead of
|
||||||
|
web service configuration. On the other hand, the serial interactions
|
||||||
|
and bootloader support are more primitive.
|
||||||
|
|
||||||
- `CI-tron <https://gfx-ci.pages.freedesktop.org/ci-tron/>`__
|
Requirements (fastboot)
|
||||||
- :doc:`LAVA`
|
-----------------------
|
||||||
|
|
||||||
|
This testing requires power control of the DUTs by the gitlab-runner
|
||||||
|
machine, since this is what we use to reset the system and get back to
|
||||||
|
a pristine state at the start of testing.
|
||||||
|
|
||||||
|
We require access to the console output from the gitlab-runner system,
|
||||||
|
since that is how we get the final results back from the tests. You
|
||||||
|
should probably have the console on a serial connection, so that you
|
||||||
|
can see bootloader progress.
|
||||||
|
|
||||||
|
The boards need to be able to have a kernel/initramfs supplied by the
|
||||||
|
gitlab-runner system, since Mesa often needs to update the kernel either for new
|
||||||
|
DRM functionality, or to fix kernel bugs.
|
||||||
|
|
||||||
|
The boards must have networking, so that we can extract the dEQP XML results to
|
||||||
|
artifacts on GitLab, and so that we can download traces (too large for an
|
||||||
|
initramfs) for trace replay testing. Given that we need networking already, and
|
||||||
|
our dEQP/Piglit/etc. payload is large, we use NFS from the x86 runner system
|
||||||
|
rather than initramfs.
|
||||||
|
|
||||||
|
See ``src/freedreno/ci/gitlab-ci.yml`` for an example of fastboot on DB410c and
|
||||||
|
DB820c (freedreno-a306 and freedreno-a530).
|
||||||
|
|
||||||
|
Requirements (Servo)
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
For Servo-connected boards, we can use the EC connection for power
|
||||||
|
control to reboot the board. However, loading a kernel is not as easy
|
||||||
|
as fastboot, so we assume your bootloader can do TFTP, and that your
|
||||||
|
gitlab-runner mounts the runner's tftp directory specific to the board
|
||||||
|
at /tftp in the container.
|
||||||
|
|
||||||
|
Since we're going the TFTP route, we also use NFS root. This avoids
|
||||||
|
packing the rootfs and sending it to the board as a ramdisk, which
|
||||||
|
means we can support larger rootfses (for Piglit testing), at the cost
|
||||||
|
of needing more storage on the runner.
|
||||||
|
|
||||||
|
Telling the board about where its TFTP and NFS should come from is
|
||||||
|
done using dnsmasq on the runner host. For example, this snippet in
|
||||||
|
the dnsmasq.conf.d in the Google farm, with the gitlab-runner host we
|
||||||
|
call "servo"::
|
||||||
|
|
||||||
|
dhcp-host=1c:69:7a:0d:a3:d3,10.42.0.10,set:servo
|
||||||
|
|
||||||
|
# Fixed dhcp addresses for my sanity, and setting a tag for
|
||||||
|
# specializing other DHCP options
|
||||||
|
dhcp-host=a0:ce:c8:c8:d9:5d,10.42.0.11,set:cheza1
|
||||||
|
dhcp-host=a0:ce:c8:c8:d8:81,10.42.0.12,set:cheza2
|
||||||
|
|
||||||
|
# Specify the next server, watch out for the double ',,'. The
|
||||||
|
# filename didn't seem to get picked up by the bootloader, so we use
|
||||||
|
# tftp-unique-root and mount directories like
|
||||||
|
# /srv/tftp/10.42.0.11/jwerner/cheza as /tftp in the job containers.
|
||||||
|
tftp-unique-root
|
||||||
|
dhcp-boot=tag:cheza1,cheza1/vmlinuz,,10.42.0.10
|
||||||
|
dhcp-boot=tag:cheza2,cheza2/vmlinuz,,10.42.0.10
|
||||||
|
|
||||||
|
dhcp-option=tag:cheza1,option:root-path,/srv/nfs/cheza1
|
||||||
|
dhcp-option=tag:cheza2,option:root-path,/srv/nfs/cheza2
|
||||||
|
|
||||||
|
See ``src/freedreno/ci/gitlab-ci.yml`` for an example of Servo on cheza. Note
|
||||||
|
that other Servo boards in CI are managed using LAVA.
|
||||||
|
|
||||||
|
Requirements (POE)
|
||||||
|
------------------
|
||||||
|
|
||||||
|
For boards with 30W or less power consumption, POE can be used for the power
|
||||||
|
control. The parts list ends up looking something like (for example):
|
||||||
|
|
||||||
|
- x86-64 gitlab-runner machine with a mid-range CPU, and 3+ GB of SSD storage
|
||||||
|
per board. This can host at least 15 boards in our experience.
|
||||||
|
- Cisco 2960S gigabit ethernet switch with POE. (Cisco 3750G, 3560G, or 2960G
|
||||||
|
were also recommended as reasonable-priced HW, but make sure the name ends in
|
||||||
|
G, X, or S)
|
||||||
|
- POE splitters to power the boards (you can find ones that go to micro USB,
|
||||||
|
USBC, and 5V barrel jacks at least)
|
||||||
|
- USB serial cables (Adafruit sells pretty reliable ones)
|
||||||
|
- A large powered USB hub for all the serial cables
|
||||||
|
- A pile of ethernet cables
|
||||||
|
|
||||||
|
You'll talk to the Cisco for configuration using its USB port, which provides a
|
||||||
|
serial terminal at 9600 baud. You need to enable SNMP control, which we'll do
|
||||||
|
using a "mesaci" community name that the gitlab runner can access as its
|
||||||
|
authentication (no password) to configure. To talk to the SNMP on the router,
|
||||||
|
you need to put an IP address on the default VLAN (VLAN 1).
|
||||||
|
|
||||||
|
Setting that up looks something like:
|
||||||
|
|
||||||
|
.. code-block: console
|
||||||
|
|
||||||
|
Switch>
|
||||||
|
Password:
|
||||||
|
Switch#configure terminal
|
||||||
|
Switch(config)#interface Vlan 1
|
||||||
|
Switch(config-if)#ip address 10.42.0.2 255.255.0.0
|
||||||
|
Switch(config-if)#end
|
||||||
|
Switch(config)#snmp-server community mesaci RW
|
||||||
|
Switch(config)#end
|
||||||
|
Switch#copy running-config startup-config
|
||||||
|
|
||||||
|
With that set up, you should be able to power on/off a port with something like:
|
||||||
|
|
||||||
|
.. code-block: console
|
||||||
|
|
||||||
|
% snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 1
|
||||||
|
% snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 4
|
||||||
|
|
||||||
|
Note that the "1.3.6..." SNMP OID changes between switches. The last digit
|
||||||
|
above is the interface id (port number). You can probably find the right OID by
|
||||||
|
Google, that was easier than figuring it out from finding the switch's MIB
|
||||||
|
database. You can query the POE status from the switch serial using the ``show
|
||||||
|
power inline`` command.
|
||||||
|
|
||||||
|
Other than that, find the dnsmasq/tftp/NFS setup for your boards "servo" above.
|
||||||
|
|
||||||
|
See ``src/broadcom/ci/gitlab-ci.yml`` and ``src/nouveau/ci/gitlab-ci.yml`` for an
|
||||||
|
examples of POE for Raspberry Pi 3/4, and Jetson Nano.
|
||||||
|
|
||||||
|
Setup
|
||||||
|
-----
|
||||||
|
|
||||||
|
Each board will be registered in freedesktop.org GitLab. You'll want
|
||||||
|
something like this to register a fastboot board:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
sudo gitlab-runner register \
|
||||||
|
--url https://gitlab.freedesktop.org \
|
||||||
|
--registration-token $1 \
|
||||||
|
--name MY_BOARD_NAME \
|
||||||
|
--tag-list MY_BOARD_TAG \
|
||||||
|
--executor docker \
|
||||||
|
--docker-image "alpine:latest" \
|
||||||
|
--docker-volumes "/dev:/dev" \
|
||||||
|
--docker-network-mode "host" \
|
||||||
|
--docker-privileged \
|
||||||
|
--non-interactive
|
||||||
|
|
||||||
|
For a Servo board, you'll need to also volume mount the board's NFS
|
||||||
|
root dir at /nfs and TFTP kernel directory at /tftp.
|
||||||
|
|
||||||
|
The registration token has to come from a freedesktop.org GitLab admin
|
||||||
|
going to https://gitlab.freedesktop.org/admin/runners
|
||||||
|
|
||||||
|
The name scheme for Google's lab is google-freedreno-boardname-n, and
|
||||||
|
our tag is something like google-freedreno-db410c. The tag is what
|
||||||
|
identifies a board type so that board-specific jobs can be dispatched
|
||||||
|
into that pool.
|
||||||
|
|
||||||
|
We need privileged mode and the /dev bind mount in order to get at the
|
||||||
|
serial console and fastboot USB devices (--device arguments don't
|
||||||
|
apply to devices that show up after container start, which is the case
|
||||||
|
with fastboot, and the Servo serial devices are actually links to
|
||||||
|
/dev/pts). We use host network mode so that we can spin up a nginx
|
||||||
|
server to collect XML results for fastboot.
|
||||||
|
|
||||||
|
Once you've added your boards, you're going to need to add a little
|
||||||
|
more customization in ``/etc/gitlab-runner/config.toml``. First, add
|
||||||
|
``concurrent = <number of boards>`` at the top ("we should have up to
|
||||||
|
this many jobs running managed by this gitlab-runner"). Then for each
|
||||||
|
board's runner, set ``limit = 1`` ("only 1 job served by this board at a
|
||||||
|
time"). Finally, add the board-specific environment variables
|
||||||
|
required by your bare-metal script, something like::
|
||||||
|
|
||||||
|
[[runners]]
|
||||||
|
name = "google-freedreno-db410c-1"
|
||||||
|
environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390", "FDO_CI_CONCURRENT=4"]
|
||||||
|
|
||||||
|
The ``FDO_CI_CONCURRENT`` variable should be set to the number of CPU threads on
|
||||||
|
the board, which is used for auto-tuning of job parallelism.
|
||||||
|
|
||||||
|
Once you've updated your runners' configs, restart with ``sudo service
|
||||||
|
gitlab-runner restart``
|
||||||
|
|
||||||
|
Caching downloads
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
To improve the runtime for downloading traces during traces job runs, you will
|
||||||
|
want a pass-through HTTP cache. On your runner box, install nginx:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
sudo apt install nginx libnginx-mod-http-lua
|
||||||
|
|
||||||
|
Add the server setup files:
|
||||||
|
|
||||||
|
.. literalinclude:: fdo-cache
|
||||||
|
:name: /etc/nginx/sites-available/fdo-cache
|
||||||
|
:caption: /etc/nginx/sites-available/fdo-cache
|
||||||
|
|
||||||
|
.. literalinclude:: uri-caching.conf
|
||||||
|
:name: /etc/nginx/snippets/uri-caching.conf
|
||||||
|
:caption: /etc/nginx/snippets/uri-caching.conf
|
||||||
|
|
||||||
|
Edit the listener addresses in fdo-cache to suit the ethernet interface that
|
||||||
|
your devices are on.
|
||||||
|
|
||||||
|
Enable the site and restart nginx:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
sudo rm /etc/nginx/sites-enabled/default
|
||||||
|
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
|
||||||
|
# First download will hit the internet
|
||||||
|
wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo-v2.trace
|
||||||
|
# Second download should be cached.
|
||||||
|
wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo-v2.trace
|
||||||
|
|
||||||
|
Now, set ``download-url`` in your ``traces-*.yml`` entry to something like
|
||||||
|
``http://caching-proxy/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public``
|
||||||
|
and you should have cached downloads for traces. Add it to
|
||||||
|
``FDO_HTTP_CACHE_URI=`` in your ``config.toml`` runner environment lines and you
|
||||||
|
can use it for cached artifact downloads instead of going all the way to
|
||||||
|
freedesktop.org on each job.
|
||||||
|
@@ -53,11 +53,16 @@ Kconfigs location
|
|||||||
Updating image tags
|
Updating image tags
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Every kernel uprev should update the following tag:
|
Every kernel uprev should update 3 image tags, located at two files.
|
||||||
|
|
||||||
:code:`.gitlab-ci/image-tags.yml` tag
|
:code:`.gitlab-ci/container/gitlab-ci.yml` tag
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
- **KERNEL_URL** for the location of the new kernel
|
||||||
|
|
||||||
|
:code:`.gitlab-ci/image-tags.yml` tags
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
- **KERNEL_TAG** to use the new kernel
|
- **KERNEL_ROOTFS_TAG** to rebuild rootfs with the new kernel
|
||||||
|
- **DEBIAN_X86_TEST_GL_TAG** to ensure that the new rootfs is being used by the GitLab x86 jobs
|
||||||
|
|
||||||
Development routine
|
Development routine
|
||||||
-------------------
|
-------------------
|
||||||
|
@@ -249,11 +249,11 @@ To integrate structured tagging for a new component (for example, ``my_component
|
|||||||
variables:
|
variables:
|
||||||
MY_COMPONENT_TAG: "${CONDITIONAL_BUILD_MY_COMPONENT_TAG}"
|
MY_COMPONENT_TAG: "${CONDITIONAL_BUILD_MY_COMPONENT_TAG}"
|
||||||
|
|
||||||
- It is time to modify the job that builds the component image to include the new component tag. Let's suppose that only the ``debian/arm64_test-gl`` job builds the component image. We need to add the new component tag to the job as an extension:
|
- It is time to modify the job that builds the component image to include the new component tag. Let's suppose that only the ``kernel+rootfs_x86_64`` job builds the component image. We need to add the new component tag to the job as an extension:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
debian/arm64_test-gl:
|
kernel+rootfs_x86_64:
|
||||||
extends:
|
extends:
|
||||||
- .container-builds-my-component
|
- .container-builds-my-component
|
||||||
- .container-builds-my-component2
|
- .container-builds-my-component2
|
||||||
|
@@ -51,7 +51,7 @@ Add this to your ``.vimrc`` to automatically format any C & C++ file
|
|||||||
|
|
||||||
If ``/usr/share/clang/clang-format.py`` doesn't exist, try
|
If ``/usr/share/clang/clang-format.py`` doesn't exist, try
|
||||||
``/usr/share/clang/clang-format-$CLANG_VERSION/clang-format.py``
|
``/usr/share/clang/clang-format-$CLANG_VERSION/clang-format.py``
|
||||||
(replacing ``$CLANG_VERSION`` with your clang version). If your distribution
|
(replacing ``$CLANG_VERSION`` with your clang version). If your distro
|
||||||
has put the file somewhere else, look through the files in the package
|
has put the file somewhere else, look through the files in the package
|
||||||
providing ``clang-format``.
|
providing ``clang-format``.
|
||||||
|
|
||||||
@@ -82,8 +82,8 @@ Add this to your ``.emacs`` to automatically format any C & C++ file
|
|||||||
(add-hook 'c++-mode-hook (lambda () (clang-format-save-hook-for-this-buffer)))
|
(add-hook 'c++-mode-hook (lambda () (clang-format-save-hook-for-this-buffer)))
|
||||||
|
|
||||||
If ``/usr/share/clang/clang-format.el`` doesn't exist, look through the
|
If ``/usr/share/clang/clang-format.el`` doesn't exist, look through the
|
||||||
files in the package providing ``clang-format`` in your distribution.
|
files in the package providing ``clang-format`` in your distro. If you
|
||||||
If you can't find anything (e.g. on Debian/Ubuntu), refer to `this StackOverflow
|
can't find anything (e.g. on Debian/Ubuntu), refer to `this StackOverflow
|
||||||
answer <https://stackoverflow.com/questions/59690583/how-do-you-use-clang-format-on-emacs-ubuntu/59850773#59850773>`__
|
answer <https://stackoverflow.com/questions/59690583/how-do-you-use-clang-format-on-emacs-ubuntu/59850773#59850773>`__
|
||||||
to install clang-format through Emacs instead.
|
to install clang-format through Emacs instead.
|
||||||
|
|
||||||
|
@@ -6,12 +6,9 @@ NVK is a Vulkan driver for NVIDIA GPUs.
|
|||||||
Hardware support
|
Hardware support
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
NVK currently supports Maxwell (some GTX 700 and 800 series, most 900
|
NVK currently supports Turing (RTX 20XX and GTX 16XX) and later GPUs.
|
||||||
series) and later GPUs. Kepler (GeForce 600 and 700 series) work is
|
Eventually, we plan to support as far back as Kepler (GeForce 600 and 700
|
||||||
currently in-progress but incomplete. Support for new GPU generations may
|
series) GPUs but anything pre-Turing is currently disabled by default.
|
||||||
take up to a year after the launch of the hardware because it takes time
|
|
||||||
for Nouveau developers to get access to hardware and documentation from
|
|
||||||
NVIDIA.
|
|
||||||
|
|
||||||
Kernel requirements
|
Kernel requirements
|
||||||
-------------------
|
-------------------
|
||||||
@@ -21,8 +18,8 @@ NVK requires at least a Linux 6.6 kernel
|
|||||||
Conformance status:
|
Conformance status:
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
NVK is a conformant Vulkan 1.4 implementation for all Maxwell (some GTX 700
|
NVK is a conformant Vulkan 1.3 implementation for all Turing (RTX 20XX and
|
||||||
and 800 series, most 900 series) and later GPUs.
|
GTX 16XX) and later GPUs.
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
---------
|
---------
|
||||||
|
@@ -60,8 +60,8 @@ LLVM is required by Panfrost's compilers at build time.
|
|||||||
|
|
||||||
In case of cross compilation without LLVM,
|
In case of cross compilation without LLVM,
|
||||||
you can build and install the required tools on the host (with LLVM installed) with
|
you can build and install the required tools on the host (with LLVM installed) with
|
||||||
``meson . build-host/ -Dvulkan-drivers=panfrost -Dgallium-drivers=panfrost
|
``meson . build-host/ -Dtools=panfrost -Dmesa-clc=enabled -Dinstall-mesa-clc=true
|
||||||
-Dmesa-clc=enabled -Dinstall-mesa-clc=true -Dprecomp-compiler=enabled -Dinstall-precomp-compiler=true``
|
-Dprecomp-compiler=enabled -Dinstall-precomp-compiler=true``
|
||||||
and then use ``-Dmesa-clc=system -Dprecomp-compiler=system`` on the cross compile side.
|
and then use ``-Dmesa-clc=system -Dprecomp-compiler=system`` on the cross compile side.
|
||||||
|
|
||||||
For general information on building Mesa, read :doc:`the install documentation
|
For general information on building Mesa, read :doc:`the install documentation
|
||||||
|
@@ -201,10 +201,10 @@ Core Mesa environment variables
|
|||||||
|
|
||||||
if set, determines the directory to be used for the on-disk cache of
|
if set, determines the directory to be used for the on-disk cache of
|
||||||
compiled shader programs. If set then the cache will be stored in
|
compiled shader programs. If set then the cache will be stored in
|
||||||
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``. If this variable is not
|
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache_db``. If this variable is not
|
||||||
set, then the cache will be stored in
|
set, then the cache will be stored in
|
||||||
``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set), or else
|
``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that variable is set), or else
|
||||||
within ``.cache/mesa_shader_cache`` within the user's home directory.
|
within ``.cache/mesa_shader_cache_db`` within the user's home directory.
|
||||||
|
|
||||||
.. envvar:: MESA_SHADER_CACHE_SHOW_STATS
|
.. envvar:: MESA_SHADER_CACHE_SHOW_STATS
|
||||||
|
|
||||||
@@ -228,9 +228,9 @@ Core Mesa environment variables
|
|||||||
|
|
||||||
.. envvar:: MESA_DISK_CACHE_MULTI_FILE
|
.. envvar:: MESA_DISK_CACHE_MULTI_FILE
|
||||||
|
|
||||||
if set to 1 (set by default), enables the multi file on-disk
|
if set to 1, enables the multi file on-disk shader cache implementation
|
||||||
shader cache implementation. This implementation increases the overall
|
instead of the default Mesa-DB cache implementation.
|
||||||
disk usage.
|
This implementation increases the overall disk usage.
|
||||||
If :envvar:`MESA_SHADER_CACHE_DIR` is set, the cache will be stored in
|
If :envvar:`MESA_SHADER_CACHE_DIR` is set, the cache will be stored in
|
||||||
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``, or else within
|
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``, or else within
|
||||||
``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set)
|
``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set)
|
||||||
@@ -248,18 +248,6 @@ Core Mesa environment variables
|
|||||||
and ``filename1_idx.foz``. A limit of 8 DBs can be loaded and this limit
|
and ``filename1_idx.foz``. A limit of 8 DBs can be loaded and this limit
|
||||||
is shared with :envvar:`MESA_DISK_CACHE_READ_ONLY_FOZ_DBS_DYNAMIC_LIST`.
|
is shared with :envvar:`MESA_DISK_CACHE_READ_ONLY_FOZ_DBS_DYNAMIC_LIST`.
|
||||||
|
|
||||||
.. envvar:: MESA_DISK_CACHE_DATABASE
|
|
||||||
|
|
||||||
if set to 1, enables the Mesa-DB single file on-disk shader cache
|
|
||||||
implementation instead of the default multi-file cache implementation.
|
|
||||||
Like :envvar:`MESA_DISK_CACHE_SINGLE_FILE`, Mesa-DB reduces overall
|
|
||||||
disk usage but Mesa-DB supports cache size limits via
|
|
||||||
:envvar:`MESA_SHADER_CACHE_MAX_SIZE`. If
|
|
||||||
:envvar:`MESA_SHADER_CACHE_DIR` is not set, the cache will be stored
|
|
||||||
in ``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that variable is set)
|
|
||||||
or else within ``.cache/mesa_shader_cache_db`` within the user's home
|
|
||||||
directory.
|
|
||||||
|
|
||||||
.. envvar:: MESA_DISK_CACHE_DATABASE_NUM_PARTS
|
.. envvar:: MESA_DISK_CACHE_DATABASE_NUM_PARTS
|
||||||
|
|
||||||
specifies number of mesa-db cache parts, default is 50.
|
specifies number of mesa-db cache parts, default is 50.
|
||||||
@@ -1089,20 +1077,20 @@ Gallium environment variables
|
|||||||
|
|
||||||
.. envvar:: GALLIUM_TRACE
|
.. envvar:: GALLIUM_TRACE
|
||||||
|
|
||||||
If set, this variable will cause the trace output to be written to the
|
If set, this variable will cause the :ref:`trace` output to be written to the
|
||||||
specified file. Paths may be relative or absolute; relative paths are relative
|
specified file. Paths may be relative or absolute; relative paths are relative
|
||||||
to the working directory. For example, setting it to "trace.xml" will cause
|
to the working directory. For example, setting it to "trace.xml" will cause
|
||||||
the trace to be written to a file of the same name in the working directory.
|
the trace to be written to a file of the same name in the working directory.
|
||||||
|
|
||||||
.. envvar:: GALLIUM_TRACE_TC
|
.. envvar:: GALLIUM_TRACE_TC
|
||||||
|
|
||||||
If enabled while trace is active, this variable specifies that the threaded context
|
If enabled while :ref:`trace` is active, this variable specifies that the threaded context
|
||||||
should be traced for drivers which implement it. By default, the driver thread is traced,
|
should be traced for drivers which implement it. By default, the driver thread is traced,
|
||||||
which will include any reordering of the command stream from threaded context.
|
which will include any reordering of the command stream from threaded context.
|
||||||
|
|
||||||
.. envvar:: GALLIUM_TRACE_TRIGGER
|
.. envvar:: GALLIUM_TRACE_TRIGGER
|
||||||
|
|
||||||
If set while trace is active, this variable specifies a filename to monitor.
|
If set while :ref:`trace` is active, this variable specifies a filename to monitor.
|
||||||
Once the file exists (e.g., from the user running 'touch /path/to/file'), a single
|
Once the file exists (e.g., from the user running 'touch /path/to/file'), a single
|
||||||
frame will be recorded into the trace output.
|
frame will be recorded into the trace output.
|
||||||
Paths may be relative or absolute; relative paths are relative to the working directory.
|
Paths may be relative or absolute; relative paths are relative to the working directory.
|
||||||
@@ -1147,6 +1135,54 @@ Gallium environment variables
|
|||||||
``sse4.1``
|
``sse4.1``
|
||||||
``avx``
|
``avx``
|
||||||
|
|
||||||
|
Clover environment variables
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_DEVICE_TYPE
|
||||||
|
|
||||||
|
allows to overwrite the device type of devices. Possible values are
|
||||||
|
``accelerator``, ``cpu``, ``custom`` and ``gpu``
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_DEVICE_VERSION_OVERRIDE
|
||||||
|
|
||||||
|
overwrites the auto detected OpenCL version of a device. Possible values:
|
||||||
|
``1.0``
|
||||||
|
``1.1``
|
||||||
|
``1.2``
|
||||||
|
``2.0``
|
||||||
|
``2.1``
|
||||||
|
``2.2``
|
||||||
|
``3.0``
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_DEVICE_CLC_VERSION_OVERRIDE
|
||||||
|
|
||||||
|
overwrites the auto detected CLC version. Possible values:
|
||||||
|
``1.0``
|
||||||
|
``1.1``
|
||||||
|
``1.2``
|
||||||
|
``2.0``
|
||||||
|
``2.1``
|
||||||
|
``2.2``
|
||||||
|
``3.0``
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_EXTRA_BUILD_OPTIONS
|
||||||
|
|
||||||
|
allows specifying additional compiler and linker options. Specified
|
||||||
|
options are appended after the options set by the OpenCL program in
|
||||||
|
``clBuildProgram``.
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_EXTRA_COMPILE_OPTIONS
|
||||||
|
|
||||||
|
allows specifying additional compiler options. Specified options are
|
||||||
|
appended after the options set by the OpenCL program in
|
||||||
|
``clCompileProgram``.
|
||||||
|
|
||||||
|
.. envvar:: CLOVER_EXTRA_LINK_OPTIONS
|
||||||
|
|
||||||
|
allows specifying additional linker options. Specified options are
|
||||||
|
appended after the options set by the OpenCL program in
|
||||||
|
``clLinkProgram``.
|
||||||
|
|
||||||
.. _rusticl-env-var:
|
.. _rusticl-env-var:
|
||||||
|
|
||||||
Rusticl environment variables
|
Rusticl environment variables
|
||||||
@@ -1473,8 +1509,6 @@ RADV driver environment variables
|
|||||||
Dump backend IR (ACO or LLVM) for selected shader stages.
|
Dump backend IR (ACO or LLVM) for selected shader stages.
|
||||||
``asm``
|
``asm``
|
||||||
Dump shader disassembly for selected shader stages.
|
Dump shader disassembly for selected shader stages.
|
||||||
``bvh4``
|
|
||||||
Use bvh4 encoding on GPUs that support bvh8 encoding.
|
|
||||||
|
|
||||||
.. envvar:: RADV_FORCE_FAMILY
|
.. envvar:: RADV_FORCE_FAMILY
|
||||||
|
|
||||||
|
@@ -125,8 +125,8 @@ popular and feature-complete.
|
|||||||
2.1 What's the easiest way to install Mesa?
|
2.1 What's the easiest way to install Mesa?
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
If you're using a Linux-based system, your distribution
|
If you're using a Linux-based system, your distro CD most likely already
|
||||||
most likely already includes Mesa packages.
|
has Mesa packages (like RPM or DEB) which you can easily install.
|
||||||
|
|
||||||
2.2 I get undefined symbols such as bgnpolygon, v3f, etc...
|
2.2 I get undefined symbols such as bgnpolygon, v3f, etc...
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@@ -99,7 +99,7 @@ GL 3.2, GLSL 1.50 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
|||||||
|
|
||||||
GL 3.3, GLSL 3.30 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, iris, crocus/gen6+, asahi
|
GL 3.3, GLSL 3.30 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, zink, d3d12, iris, crocus/gen6+, asahi
|
||||||
|
|
||||||
GL_ARB_blend_func_extended DONE (freedreno/a3xx, freedreno/a6xx, v3d, panfrost, lima)
|
GL_ARB_blend_func_extended DONE (freedreno/a3xx, freedreno/a6xx, panfrost, lima)
|
||||||
GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
|
GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
|
||||||
GL_ARB_occlusion_query2 DONE (v3d, panfrost)
|
GL_ARB_occlusion_query2 DONE (v3d, panfrost)
|
||||||
GL_ARB_sampler_objects DONE (all drivers)
|
GL_ARB_sampler_objects DONE (all drivers)
|
||||||
@@ -461,7 +461,7 @@ Vulkan 1.2 -- all DONE: anv, nvk, panvk, tu, vn
|
|||||||
VK_KHR_buffer_device_address DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_buffer_device_address DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_KHR_driver_properties DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_driver_properties DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_image_format_list DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_image_format_list DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
@@ -487,21 +487,21 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn, v3dv
|
|||||||
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_inline_uniform_block DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_inline_uniform_block DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_pipeline_creation_cache_control DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_pipeline_creation_cache_control DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_pipeline_creation_feedback DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_pipeline_creation_feedback DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_private_data DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_private_data DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_image_robustness DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_image_robustness DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_subgroup_size_control DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
VK_EXT_subgroup_size_control DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||||
VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_texture_compression_astc_hdr DONE (vn)
|
VK_EXT_texture_compression_astc_hdr DONE (vn)
|
||||||
@@ -515,7 +515,7 @@ Vulkan 1.4 -- all DONE: anv, lvp, nvk, radv/gfx8+, tu/a7xx+, vn
|
|||||||
VK_KHR_index_type_uint8 DONE (anv, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_index_type_uint8 DONE (anv, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_line_rasterization DONE (anv, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_line_rasterization DONE (anv, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_load_store_op_none DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_load_store_op_none DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_maintenance5 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
VK_KHR_maintenance5 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_maintenance6 DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_KHR_maintenance6 DONE (anv, lvp, nvk, radv, tu, vn)
|
||||||
VK_KHR_map_memory2 DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
VK_KHR_map_memory2 DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
||||||
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
||||||
@@ -559,12 +559,11 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+, tu/a740+, vn)
|
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+, tu/a740+, vn)
|
||||||
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn)
|
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn)
|
||||||
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+, vn)
|
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+, vn)
|
||||||
VK_KHR_shader_bfloat16 DONE (anv/gfx12.5+)
|
|
||||||
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_KHR_shader_maximal_reconvergence DONE (anv, lvp, nvk, panvk/v10+, radv, vn)
|
VK_KHR_shader_maximal_reconvergence DONE (anv, lvp, nvk, panvk/v10+, radv, vn)
|
||||||
VK_KHR_shader_relaxed_extended_instruction DONE (anv, hasvk, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_relaxed_extended_instruction DONE (anv, hasvk, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, nvk, panvk/v10+, radv, tu, vn)
|
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, nvk, panvk/v10+, radv, tu, vn)
|
||||||
VK_KHR_shader_quad_control DONE (anv, nvk, panvk/v10+, radv, vn)
|
VK_KHR_shader_quad_control DONE (anv, nvk, radv, vn)
|
||||||
VK_KHR_shared_presentable_image not started
|
VK_KHR_shared_presentable_image not started
|
||||||
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
@@ -590,7 +589,7 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_EXT_debug_marker DONE (radv)
|
VK_EXT_debug_marker DONE (radv)
|
||||||
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_debug_utils DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_debug_utils DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_depth_bias_control DONE (anv, nvk, panvk, radv, vn)
|
VK_EXT_depth_bias_control DONE (anv, nvk, radv, vn)
|
||||||
VK_EXT_depth_clamp_control DONE (anv, hasvk, nvk, radv, vn)
|
VK_EXT_depth_clamp_control DONE (anv, hasvk, nvk, radv, vn)
|
||||||
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv/vc7+, vn)
|
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv/vc7+, vn)
|
||||||
@@ -649,7 +648,7 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn)
|
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn)
|
||||||
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv, vn)
|
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv, vn)
|
||||||
VK_EXT_shader_object DONE (lvp, nvk, radv)
|
VK_EXT_shader_object DONE (lvp, nvk, radv)
|
||||||
VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn)
|
VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn)
|
||||||
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
||||||
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
||||||
@@ -657,8 +656,8 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_EXT_surface_maintenance1 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_surface_maintenance1 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_swapchain_maintenance1 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_swapchain_maintenance1 DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_transform_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_transform_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_vertex_input_dynamic_state DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
VK_EXT_vertex_input_dynamic_state DONE (anv, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_ycbcr_image_arrays DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, vn)
|
VK_EXT_ycbcr_image_arrays DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, vn)
|
||||||
VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, radv, tu, vn)
|
VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, radv, tu, vn)
|
||||||
VK_ANDROID_native_buffer DONE (anv, radv, tu, v3dv, vn)
|
VK_ANDROID_native_buffer DONE (anv, radv, tu, v3dv, vn)
|
||||||
@@ -698,6 +697,160 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_QCOM_fragment_density_map_offset DONE (tu)
|
VK_QCOM_fragment_density_map_offset DONE (tu)
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 1.0 -- all DONE:
|
||||||
|
|
||||||
|
Image support in progress
|
||||||
|
- Optional image formats in progress
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 1.1 -- all DONE:
|
||||||
|
|
||||||
|
Additional queries for clGetDeviceInfo DONE (nvc0, r600, radeonsi)
|
||||||
|
CL_CONTEXT_NUM_DEVICES for clGetContextInfo DONE
|
||||||
|
New optional image formats not started
|
||||||
|
- CL_Rx not started
|
||||||
|
- CL_RGx not started
|
||||||
|
- CL_RGBx not started
|
||||||
|
clCreateSubBuffer DONE
|
||||||
|
Read from, write to, copy rectangular regions DONE
|
||||||
|
clSetMemObjectDestructorCallback DONE
|
||||||
|
Control OpenCL C version when building DONE
|
||||||
|
Query for preferred work-group size multiple DONE (nvc0, r600, radeonsi)
|
||||||
|
Support user events DONE
|
||||||
|
clSetEventCallback DONE
|
||||||
|
Minimum requirement changes for clGetDeviceInfo DONE (nvc0, r600, radeonsi)
|
||||||
|
Arg prerequisite change for clEnqueueNDRangeKernel DONE ()
|
||||||
|
OpenCL C 1.1 DONE (nvc0, r600, radeonsi)
|
||||||
|
- 3-component vector data types DONE (nvc0, r600, radeonsi)
|
||||||
|
- cl_khr_byte_addressable_store DONE (nvc0, r600, radeonsi)
|
||||||
|
- cl_khr_global_int32_base_atomics DONE (nvc0, r600, radeonsi)
|
||||||
|
- cl_khr_global_int32_extended_atomics DONE (nvc0, r600, radeonsi)
|
||||||
|
- cl_khr_local_int32_base_atomics DONE (nvc0, r600, radeonsi)
|
||||||
|
- cl_khr_local_int32_extended_atomics DONE (nvc0, r600, radeonsi)
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 1.2 -- all DONE:
|
||||||
|
|
||||||
|
Custom devices DONE
|
||||||
|
Built-in kernels in progress
|
||||||
|
Device partitioning not started
|
||||||
|
Separate compilation and linking of programs DONE
|
||||||
|
Extend cl_mem_flags DONE
|
||||||
|
clEnqueueFillBuffer, clEnqueueFillImage DONE
|
||||||
|
Add CL_MAP_WRITE_INVALIDATE_REGION to cl_map_flags DONE
|
||||||
|
New image types not started
|
||||||
|
clCreateImage DONE
|
||||||
|
clEnqueueMigrateMemObjects DONE
|
||||||
|
Retrieve kernels information from a program DONE
|
||||||
|
clGetKernelArgInfo DONE
|
||||||
|
clEnqueueMarkerWithWaitList DONE
|
||||||
|
clEnqueueBarrierWithWaitList DONE
|
||||||
|
clUnloadPlatformCompiler DONE
|
||||||
|
cl_khr_fp64 DONE (nvc0, r600, radeonsi)
|
||||||
|
printf DONE (nvc0)
|
||||||
|
CL_KERNEL_ATTRIBUTES for clGetKernelInfo DONE
|
||||||
|
OpenCL C 1.2 DONE
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 2.0 -- all DONE:
|
||||||
|
|
||||||
|
Shared virtual memory DONE (nvc0, llvmpipe)
|
||||||
|
Device queues not started
|
||||||
|
- cl_khr_create_command_queue not started
|
||||||
|
- Additional queries for clGetDeviceInfo not started
|
||||||
|
Pipes not started
|
||||||
|
Extended 2D images creation in progress
|
||||||
|
- CL_ABGR DONE
|
||||||
|
- cl_khr_image2d_from_buffer not started
|
||||||
|
- cl_khr_depth_images not started
|
||||||
|
- from sRGB images not started
|
||||||
|
clCreateSamplerWithProperties not started
|
||||||
|
Non-uniform work-group sizes not started
|
||||||
|
cl_khr_3d_image_writes not started
|
||||||
|
OpenCL C 2.0 in progress
|
||||||
|
- Work-group Collective Functions not started
|
||||||
|
- Generic address space in progress
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 2.1 -- all DONE:
|
||||||
|
|
||||||
|
Sub groups not started
|
||||||
|
- cl_khr_subgroups not started
|
||||||
|
cl_khr_il_program DONE (nvc0)
|
||||||
|
Device and host timer synchronization not started
|
||||||
|
clEnqueueSVMMigrateMem not started
|
||||||
|
clCloneKernel not started
|
||||||
|
Default device command queue not started
|
||||||
|
CL_UNORM_INT_101010_2 DONE
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 2.2 -- all DONE:
|
||||||
|
|
||||||
|
clSetProgramSpecializationConstant not started
|
||||||
|
clSetProgramReleaseCallback not started
|
||||||
|
Initialization and clean-up kernels not started
|
||||||
|
CL_MAX_SIZE_RESTRICTION_EXCEEDED for clSetKernelArg not started
|
||||||
|
Support SPIR-V 1.1 and 1.2 not started
|
||||||
|
|
||||||
|
|
||||||
|
Clover OpenCL 3.0 -- all DONE:
|
||||||
|
|
||||||
|
Optional device capabilities queries in progress
|
||||||
|
cl_khr_extended_versioning DONE
|
||||||
|
clSetContextDestructorCallback DONE
|
||||||
|
clCreateBufferWithProperties DONE
|
||||||
|
clCreateImageWithProperties DONE
|
||||||
|
Query properties arrays in progress
|
||||||
|
Supported OpenCL C versions and features queries DONE
|
||||||
|
CL_COMMAND_SVM_MIGRATE_MEM for clGetEventInfo not started
|
||||||
|
OpenCL C 3.0 DONE
|
||||||
|
Latest conformance version passed for devices not started
|
||||||
|
|
||||||
|
|
||||||
|
Clover extensions that are not part of any OpenCL version:
|
||||||
|
cl_khr_async_copy_fence not started
|
||||||
|
cl_khr_async_work_group_copy_fence not started
|
||||||
|
cl_khr_device_enqueue_local_arg_types not started
|
||||||
|
cl_khr_device_uuid not started
|
||||||
|
cl_khr_egl_event not started
|
||||||
|
cl_khr_egl_image not started
|
||||||
|
cl_khr_expect_assume not started
|
||||||
|
cl_khr_extended_async_copies not started
|
||||||
|
cl_khr_extended_bit_ops not started
|
||||||
|
cl_khr_fp16 DONE ()
|
||||||
|
cl_khr_gl_depth_images not started
|
||||||
|
cl_khr_gl_msaa_sharing not started
|
||||||
|
cl_khr_gl_sharing not started
|
||||||
|
cl_khr_icd DONE
|
||||||
|
cl_khr_initialize_memory not started
|
||||||
|
cl_khr_int64_base_atomics DONE ()
|
||||||
|
cl_khr_int64_extended_atomics DONE ()
|
||||||
|
cl_khr_integer_dot_product not started
|
||||||
|
cl_khr_mipmap_image not started
|
||||||
|
cl_khr_pci_bus_info not started
|
||||||
|
cl_khr_priority_hints not started
|
||||||
|
cl_khr_spirv_extended_debug_info not started
|
||||||
|
cl_khr_spirv_linkonce_odr not started
|
||||||
|
cl_khr_spirv_no_integer_wrap_decoration not started
|
||||||
|
cl_khr_srgb_image_writes not started
|
||||||
|
cl_khr_subgroup_ballot not started
|
||||||
|
cl_khr_subgroup_clustered_reduce not started
|
||||||
|
cl_khr_subgroup_extended_types not started
|
||||||
|
cl_khr_subgroup_named_barrier not started
|
||||||
|
cl_khr_subgroup_non_uniform_arithmetic not started
|
||||||
|
cl_khr_subgroup_non_uniform_vote not started
|
||||||
|
cl_khr_subgroup_rotate not started
|
||||||
|
cl_khr_subgroup_shuffle not started
|
||||||
|
cl_khr_subgroup_shuffle_relative not started
|
||||||
|
cl_khr_suggested_local_work_size not started
|
||||||
|
cl_khr_terminate_context not started
|
||||||
|
cl_khr_throttle_hints not started
|
||||||
|
cl_khr_work_group_uniform_arithmetic not started
|
||||||
|
cl_arm_non_uniform_work_group_size not started
|
||||||
|
cl_arm_shared_virtual_memory DONE (nvc0)
|
||||||
|
cl_intel_unified_shared_memory not started
|
||||||
|
|
||||||
|
|
||||||
Rusticl OpenCL 1.0 -- all DONE:
|
Rusticl OpenCL 1.0 -- all DONE:
|
||||||
|
|
||||||
Image support DONE
|
Image support DONE
|
||||||
|
@@ -56,7 +56,7 @@ flatshade
|
|||||||
CONSTANT, LINEAR and PERSPECTIVE. The flatshade state is needed at
|
CONSTANT, LINEAR and PERSPECTIVE. The flatshade state is needed at
|
||||||
clipping time to determine how to set the color of new vertices.
|
clipping time to determine how to set the color of new vertices.
|
||||||
|
|
||||||
Draw can implement flat shading by copying the provoking vertex
|
:ref:`Draw` can implement flat shading by copying the provoking vertex
|
||||||
color to all the other vertices in the primitive.
|
color to all the other vertices in the primitive.
|
||||||
|
|
||||||
flatshade_first
|
flatshade_first
|
||||||
@@ -80,7 +80,7 @@ Polygons
|
|||||||
|
|
||||||
light_twoside
|
light_twoside
|
||||||
If set, there are per-vertex back-facing colors. The hardware
|
If set, there are per-vertex back-facing colors. The hardware
|
||||||
(perhaps assisted by Draw) should be set up to use this state
|
(perhaps assisted by :ref:`Draw`) should be set up to use this state
|
||||||
along with the front/back information to set the final vertex colors
|
along with the front/back information to set the final vertex colors
|
||||||
prior to rasterization.
|
prior to rasterization.
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ sprite_coord_enable
|
|||||||
always rasterized as quads). Any mismatch between these states should
|
always rasterized as quads). Any mismatch between these states should
|
||||||
be considered a bug in the gallium frontend.
|
be considered a bug in the gallium frontend.
|
||||||
|
|
||||||
This feature is implemented in the Draw module but may also be
|
This feature is implemented in the :ref:`Draw` module but may also be
|
||||||
implemented natively by GPUs or implemented with a geometry shader.
|
implemented natively by GPUs or implemented with a geometry shader.
|
||||||
|
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ sprite_coord_mode
|
|||||||
point sprites. For PIPE_SPRITE_COORD_LOWER_LEFT, the lower-left vertex will
|
point sprites. For PIPE_SPRITE_COORD_LOWER_LEFT, the lower-left vertex will
|
||||||
have coordinates (0,0,0,1). For PIPE_SPRITE_COORD_UPPER_LEFT, the upper-left
|
have coordinates (0,0,0,1). For PIPE_SPRITE_COORD_UPPER_LEFT, the upper-left
|
||||||
vertex will have coordinates (0,0,0,1).
|
vertex will have coordinates (0,0,0,1).
|
||||||
This state is used by Draw to generate texcoords.
|
This state is used by :ref:`Draw` to generate texcoords.
|
||||||
|
|
||||||
|
|
||||||
point_quad_rasterization
|
point_quad_rasterization
|
||||||
|
187
docs/gallium/distro.rst
Normal file
187
docs/gallium/distro.rst
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
Distribution
|
||||||
|
============
|
||||||
|
|
||||||
|
Along with the interface definitions, the following drivers, Gallium frontends,
|
||||||
|
and auxiliary modules are shipped in the standard Gallium distribution.
|
||||||
|
|
||||||
|
Drivers
|
||||||
|
-------
|
||||||
|
|
||||||
|
Intel i915
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for Intel i915 and i945 chipsets.
|
||||||
|
|
||||||
|
LLVM Softpipe
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A version of :ref:`softpipe` that uses the Low-Level Virtual Machine to
|
||||||
|
dynamically generate optimized rasterizing pipelines.
|
||||||
|
|
||||||
|
NVIDIA NV30
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the NVIDIA NV30 and NV40 families of GPUs.
|
||||||
|
|
||||||
|
NVIDIA NV50
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the NVIDIA NV50 family of GPUs.
|
||||||
|
|
||||||
|
NVIDIA NVC0
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the NVIDIA NVC0 / Fermi family of GPUs.
|
||||||
|
|
||||||
|
VMware SVGA
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for VMware virtualized guest operating system graphics processing.
|
||||||
|
|
||||||
|
ATI R300
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the ATI/AMD R300, R400, and R500 families of GPUs.
|
||||||
|
|
||||||
|
ATI/AMD R600
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the ATI/AMD R600, R700, Evergreen and Northern Islands families of GPUs.
|
||||||
|
|
||||||
|
AMD RadeonSI
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for the AMD Southern Islands family of GPUs.
|
||||||
|
|
||||||
|
Freedreno
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
Driver for Qualcomm Adreno 2xx, 3xx, and 4xx series of GPUs.
|
||||||
|
|
||||||
|
.. _softpipe:
|
||||||
|
|
||||||
|
Softpipe
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
Reference software rasterizer. Slow but accurate.
|
||||||
|
|
||||||
|
.. _trace:
|
||||||
|
|
||||||
|
Trace
|
||||||
|
^^^^^
|
||||||
|
|
||||||
|
Wrapper driver. Trace dumps an XML record of the calls made to the
|
||||||
|
:ref:`Context` and :ref:`Screen` objects that it wraps.
|
||||||
|
|
||||||
|
Gallium frontends
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Clover
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
Tracker that implements the Khronos OpenCL standard.
|
||||||
|
|
||||||
|
.. _dri:
|
||||||
|
|
||||||
|
Direct Rendering Infrastructure
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Tracker that implements the client-side DRI protocol, for providing direct
|
||||||
|
acceleration services to X11 servers with the DRI extension. Supports DRI1
|
||||||
|
and DRI2. Only GL is supported.
|
||||||
|
|
||||||
|
GLX
|
||||||
|
^^^
|
||||||
|
|
||||||
|
MesaGL
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
The Gallium frontend implementing a GL state machine. Not usable as
|
||||||
|
a standalone frontend; Mesa should be built with another Gallium frontend,
|
||||||
|
such as :ref:`DRI` or EGL.
|
||||||
|
|
||||||
|
Nine
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
The Gallium frontend implements the Direct3D 9 API.
|
||||||
|
|
||||||
|
VDPAU
|
||||||
|
^^^^^
|
||||||
|
|
||||||
|
Tracker for Video Decode and Presentation API for Unix.
|
||||||
|
|
||||||
|
WGL
|
||||||
|
^^^
|
||||||
|
|
||||||
|
Xorg DDX
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
Tracker for Xorg X11 servers. Provides device-dependent
|
||||||
|
modesetting and acceleration as a DDX driver.
|
||||||
|
|
||||||
|
Auxiliary
|
||||||
|
---------
|
||||||
|
|
||||||
|
OS
|
||||||
|
^^
|
||||||
|
|
||||||
|
The OS module contains the abstractions for basic operating system services:
|
||||||
|
|
||||||
|
* memory allocation
|
||||||
|
* simple message logging
|
||||||
|
* obtaining run-time configuration option
|
||||||
|
* threading primitives
|
||||||
|
|
||||||
|
This is the bare minimum required to port Gallium to a new platform.
|
||||||
|
|
||||||
|
The OS module already provides the implementations of these abstractions for
|
||||||
|
the most common platforms. When targeting an embedded platform no
|
||||||
|
implementation will be provided -- these must be provided separately.
|
||||||
|
|
||||||
|
CSO Cache
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
The CSO cache is used to accelerate preparation of state by saving
|
||||||
|
driver-specific state structures for later use.
|
||||||
|
|
||||||
|
.. _draw:
|
||||||
|
|
||||||
|
Draw
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
Draw is a software :term:`TCL` pipeline for hardware that lacks vertex shaders
|
||||||
|
or other essential parts of pre-rasterization vertex preparation.
|
||||||
|
|
||||||
|
Gallivm
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
|
Indices
|
||||||
|
^^^^^^^
|
||||||
|
|
||||||
|
Indices provides tools for translating or generating element indices for
|
||||||
|
use with element-based rendering.
|
||||||
|
|
||||||
|
Pipe Buffer Managers
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Each of these managers provides various services to drivers that are not
|
||||||
|
fully utilizing a memory manager.
|
||||||
|
|
||||||
|
Remote Debugger
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Runtime Assembly Emission
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
TGSI
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
The TGSI auxiliary module provides basic utilities for manipulating TGSI
|
||||||
|
streams.
|
||||||
|
|
||||||
|
Translate
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
Util
|
||||||
|
^^^^
|
||||||
|
|
@@ -15,6 +15,7 @@ Contents:
|
|||||||
context
|
context
|
||||||
cso
|
cso
|
||||||
buffermapping
|
buffermapping
|
||||||
|
distro
|
||||||
postprocess
|
postprocess
|
||||||
glossary
|
glossary
|
||||||
|
|
||||||
|
@@ -66,7 +66,7 @@ Check/install the respective development package as prompted by the
|
|||||||
configure error message.
|
configure error message.
|
||||||
|
|
||||||
Here are some common ways to retrieve most/all of the dependencies based
|
Here are some common ways to retrieve most/all of the dependencies based
|
||||||
on the packaging tool used by your distribution.
|
on the packaging tool used by your distro.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
|
@@ -51,7 +51,7 @@ most of these with just one command. On Fedora and similar, ``sudo dnf
|
|||||||
builddep mesa`` does the same.
|
builddep mesa`` does the same.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
All these dependencies are for latest Linux distributions and is tested on Ubuntu 24.xx only for now.
|
All these dependencies are for latest linux distros and is tested on ubuntu-24 only for now.
|
||||||
|
|
||||||
Also note, some packages below might not be available in your OS with the exact name, in such case you can search for it and install the distribution specific one.
|
Also note, some packages below might not be available in your OS with the exact name, in such case you can search for it and install the distribution specific one.
|
||||||
|
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
25.0,2025-04-30,25.0.5,Eric Engestrom,
|
25.0,2025-04-16,25.0.4,Eric Engestrom,
|
||||||
|
,2025-04-30,25.0.5,Eric Engestrom,
|
||||||
,2025-05-14,25.0.6,Eric Engestrom,
|
,2025-05-14,25.0.6,Eric Engestrom,
|
||||||
,2025-05-28,25.0.7,Eric Engestrom,Last planned 25.0.x release.
|
,2025-05-28,25.0.7,Eric Engestrom,Last planned 25.0.x release.
|
||||||
25.1,2025-04-30,25.1.0-rc3,Eric Engestrom,
|
25.1,2025-04-16,25.1.0-rc1,Eric Engestrom,25.1 branchpoint
|
||||||
|
,2025-04-23,25.1.0-rc2,Eric Engestrom,
|
||||||
|
,2025-04-30,25.1.0-rc3,Eric Engestrom,
|
||||||
,2025-05-07,25.1.0-rc4,Eric Engestrom,or 25.1.0 final
|
,2025-05-07,25.1.0-rc4,Eric Engestrom,or 25.1.0 final
|
||||||
|
|
@@ -3,7 +3,9 @@ Release Notes
|
|||||||
|
|
||||||
The release notes summarize what's new or changed in each Mesa release.
|
The release notes summarize what's new or changed in each Mesa release.
|
||||||
|
|
||||||
- :doc:`25.0.4 release notes <relnotes/25.0.4>`
|
- :doc:`25.1.2 release notes <relnotes/25.1.2>`
|
||||||
|
- :doc:`25.1.1 release notes <relnotes/25.1.1>`
|
||||||
|
- :doc:`25.1.0 release notes <relnotes/25.1.0>`
|
||||||
- :doc:`25.0.3 release notes <relnotes/25.0.3>`
|
- :doc:`25.0.3 release notes <relnotes/25.0.3>`
|
||||||
- :doc:`25.0.2 release notes <relnotes/25.0.2>`
|
- :doc:`25.0.2 release notes <relnotes/25.0.2>`
|
||||||
- :doc:`25.0.1 release notes <relnotes/25.0.1>`
|
- :doc:`25.0.1 release notes <relnotes/25.0.1>`
|
||||||
@@ -447,7 +449,9 @@ The release notes summarize what's new or changed in each Mesa release.
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
25.0.4 <relnotes/25.0.4>
|
25.1.2 <relnotes/25.1.2>
|
||||||
|
25.1.1 <relnotes/25.1.1>
|
||||||
|
25.1.0 <relnotes/25.1.0>
|
||||||
25.0.3 <relnotes/25.0.3>
|
25.0.3 <relnotes/25.0.3>
|
||||||
25.0.2 <relnotes/25.0.2>
|
25.0.2 <relnotes/25.0.2>
|
||||||
25.0.1 <relnotes/25.0.1>
|
25.0.1 <relnotes/25.0.1>
|
||||||
|
@@ -1,256 +0,0 @@
|
|||||||
Mesa 25.0.4 Release Notes / 2025-04-17
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Mesa 25.0.4 is a bug fix release which fixes bugs found since the 25.0.3 release.
|
|
||||||
|
|
||||||
Mesa 25.0.4 implements the OpenGL 4.6 API, but the version reported by
|
|
||||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
|
||||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
|
||||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
|
||||||
4.6 is **only** available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
|
|
||||||
Mesa 25.0.4 implements the Vulkan 1.4 API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
|
|
||||||
SHA checksums
|
|
||||||
-------------
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
SHA256: 76293cf4372ca4e4e73fd6c36c567b917b608a4db9d11bd2e33068199a7df04d mesa-25.0.4.tar.xz
|
|
||||||
SHA512: 562a97bd0374ff2a76f71c848df4fe542f1fc66c420a9101eb4bb1947d00eee4417d9c6f2d1be19638663753785c19384f8a6dc078c3187448ab79413d906152 mesa-25.0.4.tar.xz
|
|
||||||
|
|
||||||
|
|
||||||
New features
|
|
||||||
------------
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
|
|
||||||
Bug fixes
|
|
||||||
---------
|
|
||||||
|
|
||||||
- RADV: Performance regression in Elden Ring on GFX8/Polaris
|
|
||||||
- RADV: Performance regression in Elden Ring on GFX8/Polaris
|
|
||||||
- Confidential issue #12324
|
|
||||||
- Confidential issue #12946
|
|
||||||
- The Last of Us Part I GPU hang on gfx1201
|
|
||||||
- brw: new Xe2 CTS failures
|
|
||||||
- [NVK] NAK assert in The Last of Us Part 2 shader
|
|
||||||
- [ANV][LNL] - Lost Records: Bloom & Rage (1902960) - Title hangs on launch and subsequently crashes to desktop.
|
|
||||||
- [BMG] Intel b580 battlemage: Fort Solis (Unreal Engine game) boots to menu, hangs while loading after hitting continue from the main menu
|
|
||||||
- [ANV][LNL] - NINJA GAIDEN 2 Black (3287520) - Environment assets are incorrectly rendered or missing.
|
|
||||||
- [ANV][LNL] - The Headliners (3059070) - Title hangs a few minutes after launch.
|
|
||||||
- anv, regression: Invisibly blinking cliffs & rocks in Satisfactory DX12 on BMG
|
|
||||||
- vk/overlay: output_file option failing
|
|
||||||
- [bisected, LNL] brw: 341e5117ecbc ("brw/nir: Treat load_const as convergent") regresses arb_gpu_shader5-interpolateAtOffset on LNL
|
|
||||||
- vulkan regression mesa 24.3.4 to 25.0.0.rc3 with broadcom
|
|
||||||
- radv: nir_opt_varyings.c:2766: deduplicate_outputs: Assertion \`list_index == 0' failed.
|
|
||||||
- vulkan/wsi: memory leak from wsi_CreateSwapchainKHR
|
|
||||||
|
|
||||||
|
|
||||||
Changes
|
|
||||||
-------
|
|
||||||
|
|
||||||
Aaron Ruby (2):
|
|
||||||
|
|
||||||
- gfxstream: Make the virtgpu device discovery for LinuxVirtGpu more robust
|
|
||||||
- gfxstream: Add common interfaces in the VirtGpuDevice to query DrmInfo and PciBusInfo
|
|
||||||
|
|
||||||
Alyssa Rosenzweig (4):
|
|
||||||
|
|
||||||
- nir/lower_blend: refactor logicop variables
|
|
||||||
- nir/lower_blend: disable logic ops for unsupported formats
|
|
||||||
- panfrost: invert and rename no_ubo_to_push flag
|
|
||||||
- panfrost: do not push "true" UBOs
|
|
||||||
|
|
||||||
Benjamin Lee (2):
|
|
||||||
|
|
||||||
- panvk/csf: fix uninitialized read in utrace_clone_init_builder
|
|
||||||
- panfrost/pps: fix omitting several counters
|
|
||||||
|
|
||||||
Benjamin Otte (1):
|
|
||||||
|
|
||||||
- lavapipe: Don't advertise support for multiplane drm formats
|
|
||||||
|
|
||||||
Boris Brezillon (2):
|
|
||||||
|
|
||||||
- vulkan/state: Fix input attachment map state initialization/copy
|
|
||||||
- vk/pass: Add input attachment location info
|
|
||||||
|
|
||||||
Caio Oliveira (1):
|
|
||||||
|
|
||||||
- nir/load_store_vectorize: Skip new bit-sizes that are unaligned with high_offset
|
|
||||||
|
|
||||||
Caterina Shablia (2):
|
|
||||||
|
|
||||||
- panfrost: don't overwrite push uniforms and sysvals UBO with user's UBO
|
|
||||||
- panfrost: update nr_uniform_buffers before dispatching XFB
|
|
||||||
|
|
||||||
Connor Abbott (1):
|
|
||||||
|
|
||||||
- tu: Fix layer_count with dynamic rendering + multiview
|
|
||||||
|
|
||||||
David Rosca (4):
|
|
||||||
|
|
||||||
- radeonsi/vcn: Disable AV1 unidir compound with rate control
|
|
||||||
- radv/video: Fix msg header total size
|
|
||||||
- radv/video: Fix encode session info for VCN3+
|
|
||||||
- radeonsi/vpe: Use float division to get scaling ratio
|
|
||||||
|
|
||||||
Eric Engestrom (7):
|
|
||||||
|
|
||||||
- docs: add sha sum for 25.0.3
|
|
||||||
- [25.0 only] update more ci expectations
|
|
||||||
- .pick_status.json: Update to 7c5389695bdf106acaab6ccc69535f25c1d7a8e6
|
|
||||||
- ci: rename ci-tron priority tag to avoid conflict with the generic fdo runners
|
|
||||||
- .pick_status.json: Update to 2f00daf67a7990da68dfc4a8e5f2019daecb7a59
|
|
||||||
- .pick_status.json: Update to 58321cf2e57279079bf742be1063ac2900ea2436
|
|
||||||
- .pick_status.json: Update to 555821ff93118d4a6ea441127cd0427a95743d47
|
|
||||||
|
|
||||||
Eric R. Smith (2):
|
|
||||||
|
|
||||||
- panfrost,lima: use index size in panfrost minmax_cache
|
|
||||||
- panfrost: fix transaction elimination crc valid calculation
|
|
||||||
|
|
||||||
Erik Faye-Lund (4):
|
|
||||||
|
|
||||||
- panfrost: fixup typo in 16x sample-pattern
|
|
||||||
- nir/lower_tex: use texture_mask instead of shifting on use
|
|
||||||
- panvk: set shared_addr_format
|
|
||||||
- panvk: claim official conformance on v10
|
|
||||||
|
|
||||||
Faith Ekstrand (3):
|
|
||||||
|
|
||||||
- nak: Allow predicates in nir_intrinsic_as_uniform
|
|
||||||
- nvk/nvkmd: Check the correct flag for the Kepler GART workaround
|
|
||||||
- nil: Multiply by array_stride_B instead of adding
|
|
||||||
|
|
||||||
Felix DeGrood (1):
|
|
||||||
|
|
||||||
- vk/overlay-layer: fix regression in non-control pathway
|
|
||||||
|
|
||||||
Georg Lehmann (2):
|
|
||||||
|
|
||||||
- spirv: clamp/sign-extend non 32bit ldexp exponents
|
|
||||||
- spirv: fix cooperative matrix by value function params
|
|
||||||
|
|
||||||
Gurchetan Singh (3):
|
|
||||||
|
|
||||||
- gfxstream: check device exists before using it
|
|
||||||
- gfxstream: refactor device initialization
|
|
||||||
- gfxstream: follow the semantics desired by distro VK loader
|
|
||||||
|
|
||||||
Ian Romanick (4):
|
|
||||||
|
|
||||||
- brw/algebraic: Constant folding for BROADCAST and SHUFFLE
|
|
||||||
- brw/nir: Fix source handling of nir_intrinsic_load_barycentric_at_offset
|
|
||||||
- brw/algebraic: Optimize derivative of convergent value
|
|
||||||
- brw/nir: Use offset() for all uses of offs in emit_pixel_interpolater_alu_at_offset
|
|
||||||
|
|
||||||
Jan Alexander Steffens (heftig) (1):
|
|
||||||
|
|
||||||
- gfxstream: Use proper log format for 32-bit Vulkan
|
|
||||||
|
|
||||||
Job Noorman (1):
|
|
||||||
|
|
||||||
- ir3/ra: assign interval offsets to new defs after shared RA
|
|
||||||
|
|
||||||
Jose Maria Casanova Crespo (1):
|
|
||||||
|
|
||||||
- v3dv: avoid TFU reading unmapped pages beyond the end of the buffers
|
|
||||||
|
|
||||||
Juan A. Suarez Romero (1):
|
|
||||||
|
|
||||||
- v3dv: don't check if DRM device is master
|
|
||||||
|
|
||||||
Kenneth Graunke (4):
|
|
||||||
|
|
||||||
- brw: Track the largest VGRF size in liveness analysis
|
|
||||||
- brw: Use live->max_vgrf_size in register coalescing
|
|
||||||
- brw: Use live->max_vgrf_size in pre-RA scheduling
|
|
||||||
- brw: Don't assert about MAX_VGRF_SIZE in brw_opt_split_virtual_grfs()
|
|
||||||
|
|
||||||
Lars-Ivar Hesselberg Simonsen (2):
|
|
||||||
|
|
||||||
- panvk: Add barrier for interleaved ZS copy cmds
|
|
||||||
- vk/sync: Fix execution only barriers
|
|
||||||
|
|
||||||
Lionel Landwerlin (3):
|
|
||||||
|
|
||||||
- brw: fix shuffle with scalar/uniform index
|
|
||||||
- anv: fix self dependency computation
|
|
||||||
- brw: fix Wa_22013689345 emission
|
|
||||||
|
|
||||||
Marek Olšák (5):
|
|
||||||
|
|
||||||
- radeonsi: work around a primitive restart bug on gfx10-10.3
|
|
||||||
- radeonsi: make si_shader_selector::main_shader_part_* an iterable union
|
|
||||||
- radeonsi: add ACO-specific main shader parts
|
|
||||||
- ac/surface: make gfx12_estimate_size reusable by gfx6
|
|
||||||
- ac/surface: select 3D tile mode without overallocating too much for gfx6-8
|
|
||||||
|
|
||||||
Mike Blumenkrantz (4):
|
|
||||||
|
|
||||||
- gallium/util: check nr_samples in pipe_surface_equal()
|
|
||||||
- tu: check for valid descriptor set when binding descriptors
|
|
||||||
- zink: don't set shared block stride without KHR_workgroup_memory_explicit_layout
|
|
||||||
- zink: stop setting ArrayStride on image arrays
|
|
||||||
|
|
||||||
Natalie Vock (1):
|
|
||||||
|
|
||||||
- aco: Make private_segment_buffer/scratch_offset per-resume
|
|
||||||
|
|
||||||
Patrick Lerda (9):
|
|
||||||
|
|
||||||
- r600: move stores to the end of shader when required
|
|
||||||
- r600: fix textures with swizzles limited to zero and one
|
|
||||||
- r600: fallback to util_blitter_draw_rectangle when required
|
|
||||||
- r600: fix pa_su_vtx_cntl rounding mode
|
|
||||||
- r600: fix points clipping
|
|
||||||
- i915: fix i915_set_vertex_buffers() related refcnt imbalance and remove redundancies
|
|
||||||
- i915: fix slab_create() related memory leaks
|
|
||||||
- i915: fix nir_to_tgsi() related memory leak
|
|
||||||
- i915: fix draw_create_fragment_shader() related memory leak
|
|
||||||
|
|
||||||
Pierre-Eric Pelloux-Prayer (1):
|
|
||||||
|
|
||||||
- winsys/amdgpu: disable VM_ALWAYS_VALID
|
|
||||||
|
|
||||||
Rob Clark (1):
|
|
||||||
|
|
||||||
- tu/vdrm: Fix userspace fence cmds
|
|
||||||
|
|
||||||
Ryan Mckeever (1):
|
|
||||||
|
|
||||||
- pan/format: Update format flags to follow HW spec
|
|
||||||
|
|
||||||
Samuel Pitoiset (4):
|
|
||||||
|
|
||||||
- radv: fix ignoring conditional rendering with vkCmdResolveImage()
|
|
||||||
- radv: determine if HiZ/HiS is enabled earlier on GFX12
|
|
||||||
- radv: add a workaround for buggy HiZ/HiS on GFX12
|
|
||||||
- radv: apply the workaround for buggy HiZ/HiS on GFX12 for DGC
|
|
||||||
|
|
||||||
Sviatoslav Peleshko (1):
|
|
||||||
|
|
||||||
- vulkan/wsi/headless: Remove unnecessary wsi_configure_image()
|
|
||||||
|
|
||||||
Tapani Pälli (3):
|
|
||||||
|
|
||||||
- compiler/glsl: check that bias is not used outside fragment stage
|
|
||||||
- mesa: clamp texbuf query size to MAX_TEXTURE_BUFFER_SIZE
|
|
||||||
- mesa: various fixes for ClearTexImage/ClearTexSubImage
|
|
||||||
|
|
||||||
Timothy Arceri (1):
|
|
||||||
|
|
||||||
- glsl: fix regression in ubo cloning
|
|
||||||
|
|
||||||
Timur Kristóf (4):
|
|
||||||
|
|
||||||
- nir/xfb: Preserve some xfb information when gathering from intrinsics.
|
|
||||||
- nir/opt_varyings: Fix assertion when deduplicating TCS outputs.
|
|
||||||
- radv: Use buffers_written mask when gathering XFB info.
|
|
||||||
- radv: Call nir_opt_undef too after nir_opt_varyings.
|
|
4109
docs/relnotes/25.1.0.rst
Normal file
4109
docs/relnotes/25.1.0.rst
Normal file
File diff suppressed because it is too large
Load Diff
213
docs/relnotes/25.1.1.rst
Normal file
213
docs/relnotes/25.1.1.rst
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
Mesa 25.1.1 Release Notes / 2025-05-21
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Mesa 25.1.1 is a bug fix release which fixes bugs found since the 25.1.0 release.
|
||||||
|
|
||||||
|
Mesa 25.1.1 implements the OpenGL 4.6 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||||
|
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||||
|
4.6 is **only** available if requested at context creation.
|
||||||
|
Compatibility contexts may report a lower version depending on each driver.
|
||||||
|
|
||||||
|
Mesa 25.1.1 implements the Vulkan 1.4 API, but the version reported by
|
||||||
|
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||||
|
depends on the particular driver being used.
|
||||||
|
|
||||||
|
SHA checksums
|
||||||
|
-------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
SHA256: cf942a18b7b9e9b88524dcbf0b31fed3cde18e6d52b3375b0ab6587a14415bce mesa-25.1.1.tar.xz
|
||||||
|
SHA512: 8000fec61da3b7c0355b74458c52f8faeb562398a1882d68cd31a253848edd3333072521ec52f8c5c1a62d909afd6667803d43cb54027d0af3d944f1add27aae mesa-25.1.1.tar.xz
|
||||||
|
|
||||||
|
|
||||||
|
New features
|
||||||
|
------------
|
||||||
|
|
||||||
|
- None
|
||||||
|
|
||||||
|
|
||||||
|
Bug fixes
|
||||||
|
---------
|
||||||
|
|
||||||
|
- radv: VK_EXT_primitive_topology_list_restart bug
|
||||||
|
- [RADV][GFX9] Recent Mesa-git broken on AMD Vega 64 with ring sdma0 timeouts when launching DXVK games
|
||||||
|
- ACO: IR Validation error "SDWA operand selection size" triggered by compute shader on VEGA20
|
||||||
|
- RADV: Gibberish output with llama.cpp (Vulkan compute) on Radeon VII (Vega20) with Mesa 25.1.0, works on 25.0.5
|
||||||
|
- Blending broken in game SkinDeep
|
||||||
|
- Radeon R5 (Mullins) H264 VA-API encoding acceleration doesn't work
|
||||||
|
- nvk: lib_rs_gen.py requires \`rustfmt`
|
||||||
|
- radv: vkd3d-proton test failure with predication + EXT_dgc
|
||||||
|
- mesa-25.0.4 aborts Xserver due to ACO "Unsupported opcode" v_lshlrev_b16
|
||||||
|
- In SkinDeep, GL_LINES causes GL_INVALID_OPERATION with radeonsi and llvmpipe
|
||||||
|
- radv: UB and artifacts when copying a \`COMBINED_IMAGE_SAMPLER` with an immutable sampler
|
||||||
|
- RADV: Dynamic state multiple viewport corruption
|
||||||
|
- [drm:amdgpu_uvd_cs_pass2 [amdgpu]] \*ERROR* )Handle 0x48780001 already in use!
|
||||||
|
- glGetInternalformativ returns incorrect information for GL_STENCIL_INDEX8
|
||||||
|
- RadeonSI: Psychonauts rendering regression since !29895
|
||||||
|
- [r600g] Rejected CS when using dolphin's GPU texture decoder
|
||||||
|
- radeonsi: Assertion \`src_bit_size == bit_size' failed. when running without MESA_GLSL_DISABLE_IO_OPT=1
|
||||||
|
- radeonsi vdpau + Packed YUY2 = assert
|
||||||
|
- Indiana Jones and The Great Circle, Graphical corruption on 9070 XT.
|
||||||
|
- glPushAttrib/glPopAttrib broken with glColorMaterial and ligthing
|
||||||
|
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------
|
||||||
|
|
||||||
|
Alessandro Astone (1):
|
||||||
|
|
||||||
|
- android: Link with libc++fs up to SDK 35
|
||||||
|
|
||||||
|
Dave Airlie (1):
|
||||||
|
|
||||||
|
- nvk: Fix compute class comparison in dispatch indirect
|
||||||
|
|
||||||
|
David Rosca (6):
|
||||||
|
|
||||||
|
- frontends/vdpau: Fix creating surfaces with 422 chroma
|
||||||
|
- ac/uvd: Add ac_uvd_alloc_stream_handle
|
||||||
|
- radv/video: Use ac_uvd_alloc_stream_handle
|
||||||
|
- radeonsi/vce: Fix bitstream buffer size
|
||||||
|
- radeonsi/vce: Only send one task per IB
|
||||||
|
- radeonsi/vce: Fix output quality and performance in speed preset
|
||||||
|
|
||||||
|
Dmitry Baryshkov (1):
|
||||||
|
|
||||||
|
- rusticl/device: relax some params for embdded profile
|
||||||
|
|
||||||
|
Ella Stanforth (1):
|
||||||
|
|
||||||
|
- v3d/compiler: Fix ub when using memcmp for texture comparisons.
|
||||||
|
|
||||||
|
Eric Engestrom (2):
|
||||||
|
|
||||||
|
- docs: add sha sum for 25.1.0
|
||||||
|
- .pick_status.json: Update to 8edee1e25b62aa0a60dfa060f68c35cf4e60f59e
|
||||||
|
|
||||||
|
Georg Lehmann (2):
|
||||||
|
|
||||||
|
- radeonsi: always lower alu bit sizes
|
||||||
|
- aco: assume sram ecc is enabled on Vega20
|
||||||
|
|
||||||
|
Gurchetan Singh (1):
|
||||||
|
|
||||||
|
- gfxstream: make sure by default descriptor is negative
|
||||||
|
|
||||||
|
Hans-Kristian Arntzen (1):
|
||||||
|
|
||||||
|
- radv: Consider that DGC might need shader reads of predicated data.
|
||||||
|
|
||||||
|
José Roberto de Souza (2):
|
||||||
|
|
||||||
|
- anv: Implement missing part of Wa_1604061319
|
||||||
|
- anv: Enable preemption due 3DPRIMITIVE in GFX 12
|
||||||
|
|
||||||
|
Lars-Ivar Hesselberg Simonsen (7):
|
||||||
|
|
||||||
|
- pan/texture: Correctly handle slice stride for MSAA
|
||||||
|
- pan/texture: Set plane size to slice size
|
||||||
|
- pan/genxml/v10: Add minus1 mod for plane width/height
|
||||||
|
- pan/genxml/v12: Add minus1 mod for plane width/height
|
||||||
|
- pan/genxml/v13: Add minus1 mod for plane width/height
|
||||||
|
- pan/texture/v10+: Set width/height in the plane descs
|
||||||
|
- panvk/v9+: Set up limited texture descs for storage use
|
||||||
|
|
||||||
|
Lionel Landwerlin (3):
|
||||||
|
|
||||||
|
- brw: fix brw_nir_move_interpolation_to_top
|
||||||
|
- vulkan/runtime: fixup assert with link_geom_stages
|
||||||
|
- anv: enable preemption setting on command/batch correctly
|
||||||
|
|
||||||
|
Marek Olšák (2):
|
||||||
|
|
||||||
|
- nir/opt_vectorize_io: fix a failure when vectorizing different bit sizes
|
||||||
|
- nir: fix gathering color interp modes in nir_lower_color_inputs
|
||||||
|
|
||||||
|
Mary Guillemard (2):
|
||||||
|
|
||||||
|
- pan/bi: Flush subnormals to zero for FROUND on v11+
|
||||||
|
- pan/bi: Lower ffract in bifrost_nir_algebraic on v11+
|
||||||
|
|
||||||
|
Matt Turner (1):
|
||||||
|
|
||||||
|
- gallivm: Use \`llvm.roundeven` in lp_build_round()
|
||||||
|
|
||||||
|
Matthieu Oechslin (1):
|
||||||
|
|
||||||
|
- r600: Take dual source blending in account when creating target mask with RATs
|
||||||
|
|
||||||
|
Mel Henning (2):
|
||||||
|
|
||||||
|
- nouveau/headers: Run rustfmt after file is closed
|
||||||
|
- nouveau/headers: Ignore PermissionError in rustfmt
|
||||||
|
|
||||||
|
Mike Blumenkrantz (1):
|
||||||
|
|
||||||
|
- zink: fix broken comparison for dummy pipe surface sizing
|
||||||
|
|
||||||
|
Natalie Vock (2):
|
||||||
|
|
||||||
|
- radv,driconf: Add radv_force_64k_sparse_alignment config
|
||||||
|
- driconf: Add workarounds for DOOM: The Dark Ages
|
||||||
|
|
||||||
|
Olivia Lee (2):
|
||||||
|
|
||||||
|
- panvk: fix driconf memory leak
|
||||||
|
- util/u_printf: fix memory leak in u_printf_singleton_add_serialized
|
||||||
|
|
||||||
|
Rhys Perry (3):
|
||||||
|
|
||||||
|
- ac/llvm: correctly split vector 8/16-bit stores
|
||||||
|
- ac/llvm: correctly set alignment of vector global load/store
|
||||||
|
- aco/gfx115: consider point sample acceleration
|
||||||
|
|
||||||
|
Rob Clark (2):
|
||||||
|
|
||||||
|
- freedreno/ir3: Fix tess/geom asan error
|
||||||
|
- freedreno: Fix shader-clock when kernel exposes UCHE_TRAP_BASE
|
||||||
|
|
||||||
|
Robert Mader (1):
|
||||||
|
|
||||||
|
- llvmpipe: Fix dmabuf import paths for DRM_FORMAT_YUYV variants
|
||||||
|
|
||||||
|
Sagar Ghuge (1):
|
||||||
|
|
||||||
|
- anv: Fix untyped data port cache pipe control dump output
|
||||||
|
|
||||||
|
Samuel Pitoiset (9):
|
||||||
|
|
||||||
|
- radv: ignore radv_disable_dcc_stores on GFX12
|
||||||
|
- radv: ignore conditional rendering with vkCmdTraceRays*
|
||||||
|
- radv: fix SDMA copies for linear 96-bits formats
|
||||||
|
- radv: fix emitting dynamic viewports/scissors when the count is static
|
||||||
|
- radv: remove the optimization for equal immutable samplers
|
||||||
|
- radv: fix fetching conditional rendering state for DGC preprocess
|
||||||
|
- radv: fix conditional rendering with DGC and non native 32-bit predicate
|
||||||
|
- radv: fix missing texel scale for unaligned linear SDMA copies
|
||||||
|
- radv: fix non-indexed draws with primitive restart enable
|
||||||
|
|
||||||
|
Tapani Pälli (3):
|
||||||
|
|
||||||
|
- mesa: add missing stencil formats to _mesa_is_stencil_format
|
||||||
|
- intel/compiler: provide a helper for null any-hit shader
|
||||||
|
- anv: use internal rt-null-ahs when any_hit is null
|
||||||
|
|
||||||
|
Thomas H.P. Andersen (1):
|
||||||
|
|
||||||
|
- driconf: update X4 Foundations executable name
|
||||||
|
|
||||||
|
Timothy Arceri (6):
|
||||||
|
|
||||||
|
- mesa: fix color material tracking
|
||||||
|
- mesa: relax EXT_texture_integer validation
|
||||||
|
- st/mesa: fix _IntegerBuffers bitfield use
|
||||||
|
- mesa/st: fix _BlendForceAlphaToOneDraw bitfield use
|
||||||
|
- mesa/st: fix _IsRGBDraw bitfield use
|
||||||
|
- mesa: fix _FP32Buffers bitfield use
|
||||||
|
|
||||||
|
llyyr (1):
|
||||||
|
|
||||||
|
- vulkan/wsi/wayland: make needs_color_surface_old check if surface exists
|
268
docs/relnotes/25.1.2.rst
Normal file
268
docs/relnotes/25.1.2.rst
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
Mesa 25.1.2 Release Notes / 2025-06-04
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Mesa 25.1.2 is a bug fix release which fixes bugs found since the 25.1.1 release.
|
||||||
|
|
||||||
|
Mesa 25.1.2 implements the OpenGL 4.6 API, but the version reported by
|
||||||
|
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||||
|
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||||
|
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||||
|
4.6 is **only** available if requested at context creation.
|
||||||
|
Compatibility contexts may report a lower version depending on each driver.
|
||||||
|
|
||||||
|
Mesa 25.1.2 implements the Vulkan 1.4 API, but the version reported by
|
||||||
|
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||||
|
depends on the particular driver being used.
|
||||||
|
|
||||||
|
SHA checksums
|
||||||
|
-------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
TBD.
|
||||||
|
|
||||||
|
|
||||||
|
New features
|
||||||
|
------------
|
||||||
|
|
||||||
|
- None
|
||||||
|
|
||||||
|
|
||||||
|
Bug fixes
|
||||||
|
---------
|
||||||
|
|
||||||
|
- Confidential issue #13281
|
||||||
|
- anv, regression: Missing terrain in It Takes Two on BMG
|
||||||
|
- "breaking-limit" benchmark will Freeze before starting.
|
||||||
|
- rusticl: CL_MEM_HOST_READ_ONLY cl_image2d reads zeroes from host on AMD Vega8
|
||||||
|
- Bug (bad code optimization?) in the GLSL (compute) shader compiler
|
||||||
|
- nvk: Broken lighting in Trine 5
|
||||||
|
- RX9070 hard crash with Mafia Definitive Edition
|
||||||
|
- RADV: Potential bug with vulkan fragment shader interpolation (on outputs from mesh shaders?)
|
||||||
|
- In the game "Foundation" a buildings areas of effect is missing
|
||||||
|
- ANV: Dota 2 May 22 2025 update crashing in vkCmdBindDescriptorSets with no validation error
|
||||||
|
- Vulkan Video engages during playback of format which is not supported by my Fiji GPU
|
||||||
|
- Weston hangs on virtio (non-accelerated version) on QEMU with Mesa main
|
||||||
|
- KVM/qemu: GDM fails to start / gnome-shell crashes after update to mesa-dri-drivers-25.0.3
|
||||||
|
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------
|
||||||
|
|
||||||
|
Adam Jackson (2):
|
||||||
|
|
||||||
|
- vtn: (Silently) handle FunctionParameterAttributeNo{Capture,Write}
|
||||||
|
- vtn/opencl: Handle OpenCLstd_F{Min,Max}_common
|
||||||
|
|
||||||
|
Calder Young (2):
|
||||||
|
|
||||||
|
- iris: Fix accidental writes to global dirty bit instead of local
|
||||||
|
- iris: set dependency between SF_CL and CC states
|
||||||
|
|
||||||
|
Christian Gmeiner (1):
|
||||||
|
|
||||||
|
- zink: Fix NIR validation error in cubemap-to-array lowering
|
||||||
|
|
||||||
|
Connor Abbott (1):
|
||||||
|
|
||||||
|
- tu: Use safe-const GS variant for VPC binning state
|
||||||
|
|
||||||
|
David Rosca (4):
|
||||||
|
|
||||||
|
- radv/video: Limit 10bit H265 decode support to stoney and newer
|
||||||
|
- frontends/va: Fix H264 top/bottom is reference flags
|
||||||
|
- radeonsi/vcn: Use picture fence in JPEG decode
|
||||||
|
- radv/video: Set correct minCodedExtent for encode
|
||||||
|
|
||||||
|
Dmitry Baryshkov (2):
|
||||||
|
|
||||||
|
- meson: stop building XA by default
|
||||||
|
- freedreno: replace fixed array for globabl_bindings with dynamic array
|
||||||
|
|
||||||
|
Eric Engestrom (4):
|
||||||
|
|
||||||
|
- docs: add sha sum for 25.1.1
|
||||||
|
- .pick_status.json: Update to 57b04e8dfda9b09fb018907ae921f3ebbc68ad3a
|
||||||
|
- .pick_status.json: Mark 09e713f46be03ec22c9f9d592c2a435e9afca3f3 as denominated
|
||||||
|
- .pick_status.json: Mark f0dde6ca7f64a25bc541b9437dc9de6fc59761a5 as denominated
|
||||||
|
|
||||||
|
Eric R. Smith (1):
|
||||||
|
|
||||||
|
- panfrost, panvk: fix G31 use of SHADER_MODE_EARLY_ZS_ALWAYS
|
||||||
|
|
||||||
|
Erik Faye-Lund (2):
|
||||||
|
|
||||||
|
- mesa/main: remove non-existing function prototype
|
||||||
|
- panfrost: do not try to use 4x4 tiles on v4 gpus
|
||||||
|
|
||||||
|
Faith Ekstrand (4):
|
||||||
|
|
||||||
|
- nvk: Allocate the correct VAB size on Kepler
|
||||||
|
- nouveau/mme: Don't install the HW tests
|
||||||
|
- nvk: Only allow importing mappable dma-bufs to HOST_VISIBLE types
|
||||||
|
- vulkan/pipeline: Hash null descriptor robustness info
|
||||||
|
|
||||||
|
Georg Lehmann (3):
|
||||||
|
|
||||||
|
- aco: clamp exponent of 16bit ldexp
|
||||||
|
- nir/opt_if: don't replace constant uses with other uniform values
|
||||||
|
- nir/opt_if: limit rewrite_uniform_uses iand recursion
|
||||||
|
|
||||||
|
Gurchetan Singh (1):
|
||||||
|
|
||||||
|
- gfxstream: get rid of logspam in virtualized case
|
||||||
|
|
||||||
|
Iago Toral Quiroga (1):
|
||||||
|
|
||||||
|
- broadcom/compiler: handle moving last ubo load in the block correctly
|
||||||
|
|
||||||
|
Jonathan Gray (1):
|
||||||
|
|
||||||
|
- vulkan: add missing include for FALLTHROUGH
|
||||||
|
|
||||||
|
Jordan Justen (2):
|
||||||
|
|
||||||
|
- intel/dev: Add BMG PCI IDs 0xe220-0xe223
|
||||||
|
- intel/dev: Add PTL PCI IDs 0xb084-0xb087
|
||||||
|
|
||||||
|
Juan A. Suarez Romero (2):
|
||||||
|
|
||||||
|
- v3d,v3dv: set max supertiles to 256
|
||||||
|
- v3dv: consider render area when configuring supertiles
|
||||||
|
|
||||||
|
Karol Herbst (6):
|
||||||
|
|
||||||
|
- nir: fix use-after-free on function parameter names
|
||||||
|
- vtn: fix use-after-free on function parameter names
|
||||||
|
- zink: set unordered_read/write after buffer_barrier in set_global_binding
|
||||||
|
- rusticl/kernel: rework validation in clSetKernelExecInfo
|
||||||
|
- rusticl/kernel: implement CL_INVALID_ARG_VALUE for image args in clSetKernelArg
|
||||||
|
- rusticl/memory: properly set pipe_image_view::access
|
||||||
|
|
||||||
|
Lars-Ivar Hesselberg Simonsen (4):
|
||||||
|
|
||||||
|
- panvk/v10+: Remove unnecessary alloc in dispatch_precomp
|
||||||
|
- panvk/v10+: Limit direct dispatch WLS allocation
|
||||||
|
- panvk/jm: Apply direct dispatch WLS instance limit
|
||||||
|
- panfrost: Apply direct dispatch WLS instance limit
|
||||||
|
|
||||||
|
LingMan (1):
|
||||||
|
|
||||||
|
- entaviv/isa: Silence warnings about non snake case names
|
||||||
|
|
||||||
|
Lionel Landwerlin (5):
|
||||||
|
|
||||||
|
- anv/brw: stop turning load_push_constants into load_uniform
|
||||||
|
- hasvk/elk: stop turning load_push_constants into load_uniform
|
||||||
|
- anv: don't use pipeline layout at descriptor bind
|
||||||
|
- brw: don't generate invalid instructions
|
||||||
|
- brw: fix brw_nir_fs_needs_null_rt helper
|
||||||
|
|
||||||
|
Marek Olšák (2):
|
||||||
|
|
||||||
|
- winsys/amdgpu: fix running out of 32bit address space with high FPS
|
||||||
|
- glsl: fix sampler and image type checking in lower_precision
|
||||||
|
|
||||||
|
Mary Guillemard (2):
|
||||||
|
|
||||||
|
- pan/genxml: Fix typo for NEXT_SB_ENTRY
|
||||||
|
- pan/bi: Stop writing pan_shader_info::vs::idvs on non VS stages
|
||||||
|
|
||||||
|
Mauro Rossi (4):
|
||||||
|
|
||||||
|
- android: fix llvmpipe build rules
|
||||||
|
- llvmpipe: Define LP_NIR_SHADER_DUMP_DIR differently on Android
|
||||||
|
- llvmpipe: Use mkdir instead of std::filesystem::create_directory on Android
|
||||||
|
- Revert "android: Link with libc++fs up to SDK 35"
|
||||||
|
|
||||||
|
Maíra Canal (1):
|
||||||
|
|
||||||
|
- v3d: make sure all jobs are done before destroying the context
|
||||||
|
|
||||||
|
Mel Henning (5):
|
||||||
|
|
||||||
|
- nak: Fix a perf regression in tex lowering
|
||||||
|
- nak/spill_values: Follow phis from src to dest
|
||||||
|
- nvk: Call ensure_slm for nvk_cmd_dispatch_shader
|
||||||
|
- nak: Forbid reordering labeled OpNop
|
||||||
|
- nak: Don't swap f2fp sources in legalize
|
||||||
|
|
||||||
|
Mike Blumenkrantz (8):
|
||||||
|
|
||||||
|
- llvmpipe: disable conditional rendering mem for blits
|
||||||
|
- lavapipe: handle counterOffset in vkCmdDrawIndirectByteCountEXT
|
||||||
|
- tc: fix detection of in-flight resource usage when sync is used
|
||||||
|
- zink: also check for host-visible on staging uploads
|
||||||
|
- zink: fix queue transition check in check_for_layout_update()
|
||||||
|
- d3d10umd: stop using pipe_surface::width/height
|
||||||
|
- zink: unlock instance mutex if creation fails
|
||||||
|
- lavapipe: undo fb remapping before poisoning memory at end of renderpass
|
||||||
|
|
||||||
|
Natalie Vock (1):
|
||||||
|
|
||||||
|
- radv/rt: Report 256 byte alignment for scratch
|
||||||
|
|
||||||
|
Olivia Lee (9):
|
||||||
|
|
||||||
|
- pan/csf: add cs_maybe mechanism to retroactively patch cs contents
|
||||||
|
- pan/csf: rename cs_exception_handler to cs_function
|
||||||
|
- panvk/csf: set up shared register dump regions for cs functions
|
||||||
|
- panvk: track whether we are in a vk_meta command
|
||||||
|
- panvk: fix case where vk_meta is used after PROVOKING_VERTEX_MODE_LAST
|
||||||
|
- panvk/csf: fix case where vk_meta is used before PROVOKING_VERTEX_MODE_LAST
|
||||||
|
- panvk/csf: fix provoking vertex mode in partial secondary cmdbufs
|
||||||
|
- panfrost: fix assertion failure compiling image conversion shaders
|
||||||
|
- panfrost: legalize afbc before zs and rt clears
|
||||||
|
|
||||||
|
Patrick Lerda (1):
|
||||||
|
|
||||||
|
- r600: fix pop-free clipping
|
||||||
|
|
||||||
|
Paulo Zanoni (2):
|
||||||
|
|
||||||
|
- anv/trtt: don't avoid the TR-TT submission when there is stuff to signal
|
||||||
|
- intel/isl: don't clamp num_elements to (1 << 27)
|
||||||
|
|
||||||
|
Qiang Yu (1):
|
||||||
|
|
||||||
|
- nir/opt_varyings: fix mesh shader miss promote varying to flat
|
||||||
|
|
||||||
|
Rhys Perry (1):
|
||||||
|
|
||||||
|
- nir: fix unpack_unorm_2x16/unpack_snorm_2x16 constant folding
|
||||||
|
|
||||||
|
Rob Clark (1):
|
||||||
|
|
||||||
|
- ci: Disable fd-farm
|
||||||
|
|
||||||
|
Robert Mader (2):
|
||||||
|
|
||||||
|
- egl: Remove check for GL or GLES
|
||||||
|
- egl: Fixes for eglQueryContext and RESET_NOTIFICATION_STRATEGY
|
||||||
|
|
||||||
|
Samuel Pitoiset (4):
|
||||||
|
|
||||||
|
- radv: fix capture/replay with sparse images and descriptor buffer
|
||||||
|
- radv: add radv_disable_hiz_his_gfx12 and enable for Mafia Definitive Edition
|
||||||
|
- radv,radeonsi: emit UPDATE_DB_SUMMARIZER_TIMEOUT on GFX12
|
||||||
|
- radv: set radv_zero_vram=true for GPUScore: Breaking limit
|
||||||
|
|
||||||
|
Sviatoslav Peleshko (1):
|
||||||
|
|
||||||
|
- intel/brw: Use correct instruction for value change check when coalescing
|
||||||
|
|
||||||
|
Timothy Arceri (3):
|
||||||
|
|
||||||
|
- mesa: update validation when draw buffer changes
|
||||||
|
- mesa: extend linear_as_nearest work around
|
||||||
|
- util: add workaround for the game Foundation
|
||||||
|
|
||||||
|
Yao Zi (1):
|
||||||
|
|
||||||
|
- radeonsi: Fix violation of aliasing rules in radeon_ws_bo_reference
|
||||||
|
|
||||||
|
Yiwei Zhang (3):
|
||||||
|
|
||||||
|
- kopper: Revert "kopper: Explicitly choose zink"
|
||||||
|
- panvk: fix memory binding for wsi image alias
|
||||||
|
- vulkan/wsi: include missing barrier for transferring to blit dst image
|
@@ -1,22 +0,0 @@
|
|||||||
removed clover frontend
|
|
||||||
VK_EXT_vertex_input_dynamic_state/vertexInputDynamicState on panvk
|
|
||||||
pushDescriptor on panvk
|
|
||||||
VK_EXT_vertex_input_dynamic_state on panvk
|
|
||||||
VK_EXT_vertex_attribute_divisor on panvk
|
|
||||||
supportsNonZeroFirstInstance on panvk
|
|
||||||
GL_ARB_blend_func_extended on v3d
|
|
||||||
dualSrcBlend on v3dv
|
|
||||||
VK_KHR_maintenance4 on panvk/v10+
|
|
||||||
VK_KHR_maintenance5 on panvk/v10+
|
|
||||||
VK_EXT_direct_mode_display on panvk
|
|
||||||
VK_EXT_extended_dynamic_state[2] on panvk
|
|
||||||
Vulkan 1.2 on panvk/v10+
|
|
||||||
VK_KHR_shader_quad_control on panvk/v10+
|
|
||||||
multiDrawIndirect on panvk/v10+
|
|
||||||
VK_KHR_draw_indirect_count on panvk/v10+
|
|
||||||
VK_KHR_shader_integer_dot_product on panvk
|
|
||||||
VK_KHR_shader_terminate_invocation on panvk
|
|
||||||
VK_EXT_shader_demote_to_helper_invocation on panvk
|
|
||||||
VK_EXT_shader_replicated_composites on panvk
|
|
||||||
VK_EXT_depth_bias_control on panvk
|
|
||||||
VK_KHR_shader_bfloat16 on anv/gfx125+
|
|
@@ -132,6 +132,7 @@ each directory.
|
|||||||
- **frontends** - These implement various libraries using the
|
- **frontends** - These implement various libraries using the
|
||||||
device drivers
|
device drivers
|
||||||
|
|
||||||
|
- **clover** - OpenCL frontend
|
||||||
- **d3d10umd** - D3D10 frontend for Windows only. It's similar to Microsoft WARP, but using LLVMpipe/Softpipe.
|
- **d3d10umd** - D3D10 frontend for Windows only. It's similar to Microsoft WARP, but using LLVMpipe/Softpipe.
|
||||||
- **dri** - Meta frontend for DRI drivers, see mesa/state_tracker
|
- **dri** - Meta frontend for DRI drivers, see mesa/state_tracker
|
||||||
- **glx** - Meta frontend for GLX
|
- **glx** - Meta frontend for GLX
|
||||||
|
@@ -413,7 +413,7 @@ Our documentation is written as `reStructuredText`_ files in the
|
|||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: sh
|
||||||
|
|
||||||
# Install dependencies (adapt for your distribution)
|
# Install dependencies (adapt for your distro)
|
||||||
apk add coreutils graphviz py3-clang clang-dev musl-dev linux-headers
|
apk add coreutils graphviz py3-clang clang-dev musl-dev linux-headers
|
||||||
pip3 install sphinx===5.1.1 mako===1.2.3 hawkmoth===0.16.0
|
pip3 install sphinx===5.1.1 mako===1.2.3 hawkmoth===0.16.0
|
||||||
|
|
||||||
|
@@ -502,12 +502,6 @@ struct drm_amdgpu_userq_fence_info {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct drm_amdgpu_userq_wait {
|
struct drm_amdgpu_userq_wait {
|
||||||
/**
|
|
||||||
* @waitq_id: Queue handle used by the userq wait IOCTL to retrieve the
|
|
||||||
* wait queue and maintain the fence driver references in it.
|
|
||||||
*/
|
|
||||||
__u32 waitq_id;
|
|
||||||
__u32 pad;
|
|
||||||
/**
|
/**
|
||||||
* @syncobj_handles: The list of syncobj handles submitted by the user queue
|
* @syncobj_handles: The list of syncobj handles submitted by the user queue
|
||||||
* job to get the va/value pairs.
|
* job to get the va/value pairs.
|
||||||
@@ -1460,9 +1454,6 @@ struct drm_amdgpu_info_device {
|
|||||||
__u32 csa_size;
|
__u32 csa_size;
|
||||||
/* context save area base virtual alignment for gfx11 */
|
/* context save area base virtual alignment for gfx11 */
|
||||||
__u32 csa_alignment;
|
__u32 csa_alignment;
|
||||||
/* Userq IP mask (1 << AMDGPU_HW_IP_*) */
|
|
||||||
__u32 userq_ip_mask;
|
|
||||||
__u32 pad;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct drm_amdgpu_info_hw_ip {
|
struct drm_amdgpu_info_hw_ip {
|
||||||
|
@@ -113,3 +113,11 @@ opencl_headers = files(
|
|||||||
'CL/opencl.h',
|
'CL/opencl.h',
|
||||||
'CL/opencl.hpp',
|
'CL/opencl.hpp',
|
||||||
)
|
)
|
||||||
|
# Only install the headers if we are building a stand alone implementation and
|
||||||
|
# not an ICD enabled implementation
|
||||||
|
if with_gallium_clover and not with_opencl_icd
|
||||||
|
install_headers(
|
||||||
|
opencl_headers,
|
||||||
|
subdir: 'CL'
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
@@ -282,11 +282,19 @@ CHIPSET(0xe211, bmg, "BMG G21", "Intel(R) Graphics")
|
|||||||
CHIPSET(0xe212, bmg, "BMG G21", "Intel(R) Graphics")
|
CHIPSET(0xe212, bmg, "BMG G21", "Intel(R) Graphics")
|
||||||
CHIPSET(0xe215, bmg, "BMG", "Intel(R) Graphics")
|
CHIPSET(0xe215, bmg, "BMG", "Intel(R) Graphics")
|
||||||
CHIPSET(0xe216, bmg, "BMG", "Intel(R) Graphics")
|
CHIPSET(0xe216, bmg, "BMG", "Intel(R) Graphics")
|
||||||
|
CHIPSET(0xe220, bmg, "BMG", "Intel(R) Graphics")
|
||||||
|
CHIPSET(0xe221, bmg, "BMG", "Intel(R) Graphics")
|
||||||
|
CHIPSET(0xe222, bmg, "BMG", "Intel(R) Graphics")
|
||||||
|
CHIPSET(0xe223, bmg, "BMG", "Intel(R) Graphics")
|
||||||
|
|
||||||
CHIPSET(0xb080, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb080, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb081, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb081, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb082, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb082, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb083, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb083, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
|
CHIPSET(0xb084, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
|
CHIPSET(0xb085, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
|
CHIPSET(0xb086, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
|
CHIPSET(0xb087, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb08f, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb08f, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb090, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb090, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
CHIPSET(0xb0a0, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
CHIPSET(0xb0a0, ptl, "PTL", "Intel(R) Graphics", FORCE_PROBE)
|
||||||
|
41
meson.build
41
meson.build
@@ -743,7 +743,24 @@ if get_option('vmware-mks-stats')
|
|||||||
pre_args += '-DVMX86_STATS=1'
|
pre_args += '-DVMX86_STATS=1'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
_opencl = get_option('gallium-opencl')
|
||||||
_rtti = get_option('cpp_rtti')
|
_rtti = get_option('cpp_rtti')
|
||||||
|
if _opencl != 'disabled'
|
||||||
|
warning('Clover will be removed in Mesa 25.2')
|
||||||
|
|
||||||
|
if not with_gallium
|
||||||
|
error('OpenCL Clover implementation requires at least one gallium driver.')
|
||||||
|
endif
|
||||||
|
if not _rtti
|
||||||
|
error('The Clover OpenCL state tracker requires rtti')
|
||||||
|
endif
|
||||||
|
|
||||||
|
with_gallium_clover = true
|
||||||
|
with_opencl_icd = _opencl == 'icd'
|
||||||
|
else
|
||||||
|
with_gallium_clover = false
|
||||||
|
with_opencl_icd = false
|
||||||
|
endif
|
||||||
|
|
||||||
with_gallium_rusticl = get_option('gallium-rusticl')
|
with_gallium_rusticl = get_option('gallium-rusticl')
|
||||||
if with_gallium_rusticl
|
if with_gallium_rusticl
|
||||||
@@ -812,7 +829,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
dep_clc = null_dep
|
dep_clc = null_dep
|
||||||
if with_clc
|
if with_gallium_clover or with_clc
|
||||||
dep_clc = dependency('libclc')
|
dep_clc = dependency('libclc')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -1699,6 +1716,15 @@ if with_amd_vk or with_gallium_radeonsi or with_gallium_r600
|
|||||||
llvm_modules += 'asmparser'
|
llvm_modules += 'asmparser'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
if with_gallium_clover
|
||||||
|
llvm_modules += [
|
||||||
|
'linker', 'coverage', 'instrumentation', 'ipo', 'irreader',
|
||||||
|
'lto', 'option', 'objcarcopts', 'profiledata'
|
||||||
|
]
|
||||||
|
# all-targets is needed to support static linking LLVM build with multiple targets
|
||||||
|
# windowsdriver is needded with LLVM>=15, but we don't know what LLVM verrsion we are using yet
|
||||||
|
llvm_optional_modules += ['all-targets', 'frontendopenmp', 'windowsdriver']
|
||||||
|
endif
|
||||||
if with_clc
|
if with_clc
|
||||||
llvm_modules += ['coverage', 'target', 'linker', 'irreader', 'option', 'libdriver', 'lto']
|
llvm_modules += ['coverage', 'target', 'linker', 'irreader', 'option', 'libdriver', 'lto']
|
||||||
# all-targets is needed to support static linking LLVM build with multiple targets.
|
# all-targets is needed to support static linking LLVM build with multiple targets.
|
||||||
@@ -1724,6 +1750,8 @@ if with_amd_vk or with_gallium_radeonsi
|
|||||||
_llvm_version = '>= 18.0.0'
|
_llvm_version = '>= 18.0.0'
|
||||||
elif with_clc or llvm_with_orcjit
|
elif with_clc or llvm_with_orcjit
|
||||||
_llvm_version = '>= 15.0.0'
|
_llvm_version = '>= 15.0.0'
|
||||||
|
elif with_gallium_clover
|
||||||
|
_llvm_version = '>= 11.0.0'
|
||||||
else
|
else
|
||||||
_llvm_version = '>= 5.0.0'
|
_llvm_version = '>= 5.0.0'
|
||||||
endif
|
endif
|
||||||
@@ -1743,7 +1771,7 @@ if _llvm.allowed()
|
|||||||
modules : llvm_modules,
|
modules : llvm_modules,
|
||||||
optional_modules : llvm_optional_modules,
|
optional_modules : llvm_optional_modules,
|
||||||
required : (
|
required : (
|
||||||
with_amd_vk or with_gallium_radeonsi or with_clc
|
with_amd_vk or with_gallium_radeonsi or with_gallium_clover or with_clc
|
||||||
or _llvm.enabled()
|
or _llvm.enabled()
|
||||||
),
|
),
|
||||||
static : not _shared_llvm,
|
static : not _shared_llvm,
|
||||||
@@ -1797,6 +1825,8 @@ elif with_swrast_vk
|
|||||||
error('lavapipe requires LLVM and is enabled, but LLVM is disabled.')
|
error('lavapipe requires LLVM and is enabled, but LLVM is disabled.')
|
||||||
elif with_any_llvmpipe
|
elif with_any_llvmpipe
|
||||||
error('llvmpipe requires LLVM and is enabled, but LLVM is disabled.')
|
error('llvmpipe requires LLVM and is enabled, but LLVM is disabled.')
|
||||||
|
elif with_gallium_clover
|
||||||
|
error('The OpenCL "Clover" state tracker requires LLVM, but LLVM is disabled.')
|
||||||
elif with_clc
|
elif with_clc
|
||||||
error('The CLC compiler requires LLVM, but LLVM is disabled.')
|
error('The CLC compiler requires LLVM, but LLVM is disabled.')
|
||||||
else
|
else
|
||||||
@@ -1846,7 +1876,7 @@ if dep_spirv_tools.found()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
dep_clang = null_dep
|
dep_clang = null_dep
|
||||||
if with_clc
|
if with_clc or with_gallium_clover
|
||||||
llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir')
|
llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir')
|
||||||
|
|
||||||
dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
|
dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
|
||||||
@@ -1861,7 +1891,7 @@ if with_clc
|
|||||||
if dep_llvm.version().version_compare('>= 15.0')
|
if dep_llvm.version().version_compare('>= 15.0')
|
||||||
clang_modules += 'clangSupport'
|
clang_modules += 'clangSupport'
|
||||||
endif
|
endif
|
||||||
if dep_llvm.version().version_compare('>= 16.0')
|
if dep_llvm.version().version_compare('>= 16.0') or with_gallium_clover
|
||||||
clang_modules += 'clangASTMatchers'
|
clang_modules += 'clangASTMatchers'
|
||||||
endif
|
endif
|
||||||
if dep_llvm.version().version_compare('>= 18.0')
|
if dep_llvm.version().version_compare('>= 18.0')
|
||||||
@@ -2384,6 +2414,9 @@ if with_gallium
|
|||||||
if with_gallium_st_nine
|
if with_gallium_st_nine
|
||||||
gallium_frontends += 'nine'
|
gallium_frontends += 'nine'
|
||||||
endif
|
endif
|
||||||
|
if with_gallium_clover
|
||||||
|
gallium_frontends += 'clover'
|
||||||
|
endif
|
||||||
if with_gallium_rusticl
|
if with_gallium_rusticl
|
||||||
gallium_frontends += 'rusticl'
|
gallium_frontends += 'rusticl'
|
||||||
endif
|
endif
|
||||||
|
@@ -127,6 +127,7 @@ option(
|
|||||||
option(
|
option(
|
||||||
'gallium-xa',
|
'gallium-xa',
|
||||||
type : 'feature',
|
type : 'feature',
|
||||||
|
value : 'disabled',
|
||||||
description : 'enable gallium xa frontend.',
|
description : 'enable gallium xa frontend.',
|
||||||
deprecated: true,
|
deprecated: true,
|
||||||
)
|
)
|
||||||
@@ -146,6 +147,15 @@ option(
|
|||||||
description : 'build gallium D3D10 WDDM UMD frontend.',
|
description : 'build gallium D3D10 WDDM UMD frontend.',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
option(
|
||||||
|
'gallium-opencl',
|
||||||
|
type : 'combo',
|
||||||
|
choices : ['icd', 'standalone', 'disabled'],
|
||||||
|
value : 'disabled',
|
||||||
|
description : 'build gallium "clover" OpenCL frontend.',
|
||||||
|
deprecated: true,
|
||||||
|
)
|
||||||
|
|
||||||
option(
|
option(
|
||||||
'gallium-rusticl',
|
'gallium-rusticl',
|
||||||
type : 'boolean',
|
type : 'boolean',
|
||||||
@@ -156,7 +166,7 @@ option(
|
|||||||
option(
|
option(
|
||||||
'gallium-rusticl-enable-drivers',
|
'gallium-rusticl-enable-drivers',
|
||||||
type : 'array',
|
type : 'array',
|
||||||
value : ['auto', 'asahi', 'radeonsi'],
|
value : ['auto', 'asahi'],
|
||||||
description : 'List of gallium drivers for which rusticl will be enabled ' +
|
description : 'List of gallium drivers for which rusticl will be enabled ' +
|
||||||
'by default',
|
'by default',
|
||||||
)
|
)
|
||||||
@@ -572,8 +582,8 @@ option(
|
|||||||
type : 'integer',
|
type : 'integer',
|
||||||
min : 25,
|
min : 25,
|
||||||
max : 10000,
|
max : 10000,
|
||||||
value : 34,
|
value : 25,
|
||||||
description : 'Android Platform SDK version. Default: Android14 version.'
|
description : 'Android Platform SDK version. Default: Nougat version.'
|
||||||
)
|
)
|
||||||
|
|
||||||
option(
|
option(
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user