Compare commits
109 Commits
22.1
...
mesa-22.0.
Author | SHA1 | Date | |
---|---|---|---|
|
148aac1b3b | ||
|
949b25d6fd | ||
|
1dcb8306b1 | ||
|
f0ba075c41 | ||
|
8facc12855 | ||
|
5cc0bcf6d7 | ||
|
b3f333348d | ||
|
4fee724faf | ||
|
f47fdc49a9 | ||
|
76b498bd80 | ||
|
9db0bfb073 | ||
|
23032ee9db | ||
|
94f5c307cb | ||
|
de55b090e4 | ||
|
38c88f36ff | ||
|
ace12c4da3 | ||
|
383369f1bd | ||
|
e4f1fafea9 | ||
|
bf5e7bcebb | ||
|
0b51f5e3ca | ||
|
9c94e7e724 | ||
|
60ad4707d4 | ||
|
a736424506 | ||
|
07a9bc76d3 | ||
|
e8d25b50c9 | ||
|
bd29a0689b | ||
|
183e19f23a | ||
|
9b9bc8ad64 | ||
|
ea23bb04f4 | ||
|
e280130626 | ||
|
d1e61f595d | ||
|
6f56bad4dd | ||
|
c454ff42f0 | ||
|
0906f9f7d2 | ||
|
6353a869ca | ||
|
fdd351cc81 | ||
|
5998d19a96 | ||
|
4aa73d5310 | ||
|
1d25a226fa | ||
|
fa4d9f5934 | ||
|
2a03c296fd | ||
|
527bac358d | ||
|
277d7fe83d | ||
|
e76b049b2b | ||
|
bd23929d01 | ||
|
47c9c42764 | ||
|
db7f26a944 | ||
|
d191aa607c | ||
|
c9215c391a | ||
|
53f532bac2 | ||
|
7885a3d1b1 | ||
|
081ea7fc89 | ||
|
fc450c2f54 | ||
|
1c3a61979b | ||
|
0c22f3ffaf | ||
|
295022cb75 | ||
|
1e7d39f9db | ||
|
95f87609de | ||
|
0fd825b4f4 | ||
|
fcd93800bb | ||
|
3241c61b68 | ||
|
e791cc3ca5 | ||
|
21dfddc2f6 | ||
|
1830da60e8 | ||
|
ea3afa5690 | ||
|
8cca40e8a3 | ||
|
2b73963911 | ||
|
8d42870798 | ||
|
cc1511acd7 | ||
|
a32927b187 | ||
|
1758082912 | ||
|
d653651b49 | ||
|
7ba68c86f7 | ||
|
166fc8e9f3 | ||
|
c1822e7222 | ||
|
fb8a9be463 | ||
|
b0ad08de15 | ||
|
c820bbced0 | ||
|
b8e9c345d0 | ||
|
3b1563dcfb | ||
|
e93350a833 | ||
|
716fc5280a | ||
|
2e1387c752 | ||
|
a910e58ad8 | ||
|
54f49993d1 | ||
|
2b282fb3b5 | ||
|
4e67d2aad4 | ||
|
8f5fb1eb10 | ||
|
4587268d2b | ||
|
a04818a500 | ||
|
59b2c1ddde | ||
|
2ce020120a | ||
|
ba2d22e95f | ||
|
5ff5f3cbf7 | ||
|
5a7a564d7c | ||
|
2c7d0e1b49 | ||
|
83eef372a2 | ||
|
0a1f166f4d | ||
|
68242654f8 | ||
|
c7bd1f0720 | ||
|
88762cf59b | ||
|
6420dc86cf | ||
|
a58a01050c | ||
|
b6e296f823 | ||
|
fabb6b5c5e | ||
|
0ec3de0563 | ||
|
b2be43a192 | ||
|
9e17fcbed2 | ||
|
c69a870f86 |
@@ -16,14 +16,26 @@ max_line_length = 78
|
||||
[{Makefile*,*.mk}]
|
||||
indent_style = tab
|
||||
|
||||
[*.py]
|
||||
[{*.py,SCons*}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.pl]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.m4]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.html]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.rst]
|
||||
indent_style = space
|
||||
indent_size = 3
|
||||
|
1118
.gitlab-ci.yml
1118
.gitlab-ci.yml
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,9 @@
|
||||
# reliable to be run in parallel with other tests due to CPU-side timing.
|
||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
||||
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/4575
|
||||
dEQP-VK.wsi.display.get_display_plane_capabilities
|
||||
|
||||
# piglit: WGL is Windows-only
|
||||
wgl@.*
|
||||
|
||||
|
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
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_ON="i 1"
|
||||
SNMP_OFF="i 4"
|
||||
|
||||
snmpset -v2c -r 3 -t 30 -cmesaci $BM_POE_ADDRESS $SNMP_KEY $SNMP_OFF
|
@@ -1,21 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
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
|
@@ -156,10 +156,6 @@ class CrosServoRun:
|
||||
"Detected spontaneous reboot, restarting run...")
|
||||
return 2
|
||||
|
||||
if re.search("arm-smmu 5040000.iommu: TLB sync timed out -- SMMU may be deadlocked", line):
|
||||
self.print_error("Detected cheza MMU fail, restarting run...")
|
||||
return 2
|
||||
|
||||
result = re.search("hwci: mesa: (\S*)", line)
|
||||
if result:
|
||||
if result.group(1) == "pass":
|
||||
|
@@ -20,6 +20,18 @@ if [ -z "$BM_POE_ADDRESS" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$BM_POE_USERNAME" ]; then
|
||||
echo "Must set BM_POE_USERNAME in your gitlab-runner config.toml [[runners]] environment"
|
||||
echo "This is the PoE switch username."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$BM_POE_PASSWORD" ]; then
|
||||
echo "Must set BM_POE_PASSWORD in your gitlab-runner config.toml [[runners]] environment"
|
||||
echo "This is the PoE switch password."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$BM_POE_INTERFACE" ]; then
|
||||
echo "Must set BM_POE_INTERFACE in your gitlab-runner config.toml [[runners]] environment"
|
||||
echo "This is the PoE switch interface where the device is connected."
|
||||
@@ -95,25 +107,11 @@ fi
|
||||
|
||||
# Install kernel modules (it could be either in /lib/modules or
|
||||
# /usr/lib/modules, but we want to install in the latter)
|
||||
[ -d $BM_BOOTFS/usr/lib/modules ] && rsync -a $BM_BOOTFS/usr/lib/modules/ /nfs/usr/lib/modules/
|
||||
[ -d $BM_BOOTFS/lib/modules ] && rsync -a $BM_BOOTFS/lib/modules/ /nfs/lib/modules/
|
||||
[ -d $BM_BOOTFS/usr/lib/modules ] && rsync -a --delete $BM_BOOTFS/usr/lib/modules/ /nfs/usr/lib/modules/
|
||||
[ -d $BM_BOOTFS/lib/modules ] && rsync -a --delete $BM_BOOTFS/lib/modules/ /nfs/usr/lib/modules/
|
||||
|
||||
# Install kernel image + bootloader files
|
||||
rsync -aL --delete $BM_BOOTFS/boot/ /tftp/
|
||||
|
||||
# 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
|
||||
rsync -a --delete $BM_BOOTFS/boot/ /tftp/
|
||||
|
||||
# Create the rootfs in the NFS directory
|
||||
mkdir -p /nfs/results
|
||||
@@ -125,7 +123,7 @@ echo "$BM_CMDLINE" > /tftp/cmdline.txt
|
||||
printf "$BM_BOOTCONFIG" >> /tftp/config.txt
|
||||
|
||||
set +e
|
||||
ATTEMPTS=10
|
||||
ATTEMPTS=2
|
||||
while [ $((ATTEMPTS--)) -gt 0 ]; do
|
||||
python3 $BM/poe_run.py \
|
||||
--dev="$BM_SERIAL" \
|
||||
|
@@ -66,10 +66,6 @@ class PoERun:
|
||||
self.print_error("Memory overflow in the binner; GPU hang")
|
||||
return 1
|
||||
|
||||
if re.search("nouveau 57000000.gpu: bus: MMIO read of 00000000 FAULT at 137000", line):
|
||||
self.print_error("nouveau jetson boot bug, retrying.")
|
||||
return 2
|
||||
|
||||
result = re.search("hwci: mesa: (\S*)", line)
|
||||
if result:
|
||||
if result.group(1) == "pass":
|
||||
|
@@ -13,7 +13,6 @@ cp $CI_COMMON/init*.sh $rootfs_dst/
|
||||
cp "${CI_JOB_JWT_FILE}" "${rootfs_dst}${CI_JOB_JWT_FILE}"
|
||||
|
||||
cp $CI_COMMON/capture-devcoredump.sh $rootfs_dst/
|
||||
cp $CI_COMMON/intel-gpu-freq.sh $rootfs_dst/
|
||||
|
||||
set +x
|
||||
|
||||
|
@@ -1,525 +0,0 @@
|
||||
# Shared between windows and Linux
|
||||
.build-common:
|
||||
extends: .ci-run-policy
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
artifacts:
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
when: always
|
||||
paths:
|
||||
- _build/meson-logs/*.txt
|
||||
- _build/meson-logs/strace
|
||||
- shader-db
|
||||
|
||||
# Just Linux
|
||||
.build-linux:
|
||||
extends: .build-common
|
||||
variables:
|
||||
CCACHE_COMPILERCHECK: "content"
|
||||
CCACHE_COMPRESS: "true"
|
||||
CCACHE_DIR: /cache/mesa/ccache
|
||||
# Use ccache transparently, and print stats before/after
|
||||
before_script:
|
||||
- !reference [default, before_script]
|
||||
- export PATH="/usr/lib/ccache:$PATH"
|
||||
- export CCACHE_BASEDIR="$PWD"
|
||||
- echo -e "\e[0Ksection_start:$(date +%s):ccache_before[collapsed=true]\r\e[0Kccache stats before build"
|
||||
- ccache --show-stats
|
||||
- echo -e "\e[0Ksection_end:$(date +%s):ccache_before\r\e[0K"
|
||||
after_script:
|
||||
- echo -e "\e[0Ksection_start:$(date +%s):ccache_after[collapsed=true]\r\e[0Kccache stats after build"
|
||||
- ccache --show-stats
|
||||
- echo -e "\e[0Ksection_end:$(date +%s):ccache_after\r\e[0K"
|
||||
- !reference [default, after_script]
|
||||
|
||||
.build-windows:
|
||||
extends: .build-common
|
||||
tags:
|
||||
- windows
|
||||
- docker
|
||||
- "1809"
|
||||
- mesa
|
||||
cache:
|
||||
key: ${CI_JOB_NAME}
|
||||
paths:
|
||||
- subprojects/packagecache
|
||||
|
||||
.meson-build:
|
||||
extends:
|
||||
- .build-linux
|
||||
- .use-debian/x86_build
|
||||
stage: build-x86_64
|
||||
variables:
|
||||
LLVM_VERSION: 11
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
|
||||
debian-testing:
|
||||
extends:
|
||||
- .meson-build
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D platforms=x11
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-va=enabled
|
||||
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915"
|
||||
VULKAN_DRIVERS: "swrast,amd,intel"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
EXTRA_OPTION: >
|
||||
-D valgrind=false
|
||||
MINIO_ARTIFACT_NAME: mesa-amd64
|
||||
script:
|
||||
- .gitlab-ci/lava/lava-pytest.sh
|
||||
- .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
artifacts:
|
||||
reports:
|
||||
junit: artifacts/ci_scripts_report.xml
|
||||
|
||||
debian-testing-asan:
|
||||
extends:
|
||||
- debian-testing
|
||||
variables:
|
||||
C_ARGS: >
|
||||
-Wno-error=stringop-truncation
|
||||
EXTRA_OPTION: >
|
||||
-D b_sanitize=address
|
||||
-D valgrind=false
|
||||
-D tools=dlclose-skip
|
||||
MINIO_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
|
||||
debian-testing-msan:
|
||||
extends:
|
||||
- debian-clang
|
||||
variables:
|
||||
# l_undef is incompatible with msan
|
||||
EXTRA_OPTION:
|
||||
-D b_sanitize=memory
|
||||
-D b_lundef=false
|
||||
MINIO_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Don't run all the tests yet:
|
||||
# GLSL has some issues in sexpression reading.
|
||||
# gtest has issues in its test initialization.
|
||||
MESON_TEST_ARGS: "--suite glcpp --suite gallium --suite format"
|
||||
# Freedreno dropped because freedreno tools fail at msan.
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||
VULKAN_DRIVERS: intel,amd,broadcom,virtio-experimental
|
||||
|
||||
debian-clover-testing:
|
||||
extends:
|
||||
- .meson-build
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=disabled
|
||||
-D egl=disabled
|
||||
-D gbm=disabled
|
||||
GALLIUM_ST: >
|
||||
-D gallium-opencl=icd
|
||||
-D opencl-spirv=true
|
||||
GALLIUM_DRIVERS: "swrast"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
EXTRA_OPTION: >
|
||||
-D valgrind=false
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
|
||||
debian-gallium:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-extra-hud=true
|
||||
-D gallium-vdpau=enabled
|
||||
-D gallium-xvmc=enabled
|
||||
-D gallium-omx=bellagio
|
||||
-D gallium-va=enabled
|
||||
-D gallium-xa=enabled
|
||||
-D gallium-nine=true
|
||||
-D gallium-opencl=disabled
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
|
||||
VULKAN_DRIVERS: swrast
|
||||
EXTRA_OPTION: >
|
||||
-D osmesa=true
|
||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,xvmc,lima,panfrost,asahi
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/run-shader-db.sh
|
||||
|
||||
# Test a release build with -Werror so new warnings don't sneak in.
|
||||
debian-release:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-extra-hud=true
|
||||
-D gallium-vdpau=enabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=enabled
|
||||
-D gallium-xa=enabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-opencl=disabled
|
||||
-D llvm=enabled
|
||||
GALLIUM_DRIVERS: "i915,iris,nouveau,kmsro,freedreno,r300,svga,swrast,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,crocus"
|
||||
VULKAN_DRIVERS: "amd,imagination-experimental"
|
||||
BUILDTYPE: "release"
|
||||
EXTRA_OPTION: >
|
||||
-D osmesa=true
|
||||
-D tools=all
|
||||
-D intel-clc=enabled
|
||||
-D imagination-srv=true
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
|
||||
fedora-release:
|
||||
extends:
|
||||
- .meson-build
|
||||
- .use-fedora/x86_build
|
||||
variables:
|
||||
BUILDTYPE: "release"
|
||||
C_ARGS: >
|
||||
-Wno-error=array-bounds
|
||||
-Wno-error=maybe-uninitialized
|
||||
-Wno-error=stringop-overread
|
||||
-Wno-error=uninitialized
|
||||
CPP_ARGS: >
|
||||
-Wno-error=array-bounds
|
||||
DRI_LOADERS: >
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D glvnd=true
|
||||
-D platforms=x11,wayland
|
||||
EXTRA_OPTION: >
|
||||
-D osmesa=true
|
||||
-D selinux=true
|
||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
||||
-D intel-clc=enabled
|
||||
-D imagination-srv=true
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-extra-hud=true
|
||||
-D gallium-vdpau=enabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=enabled
|
||||
-D gallium-xa=enabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-opencl=icd
|
||||
-D gles1=disabled
|
||||
-D gles2=enabled
|
||||
-D llvm=enabled
|
||||
-D microsoft-clc=disabled
|
||||
-D shared-llvm=enabled
|
||||
-D vulkan-device-select-layer=true
|
||||
LLVM_VERSION: ""
|
||||
UNWIND: "disabled"
|
||||
VULKAN_DRIVERS: "amd,broadcom,freedreno,intel,imagination-experimental"
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
|
||||
debian-android:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/android_build
|
||||
variables:
|
||||
UNWIND: "disabled"
|
||||
C_ARGS: >
|
||||
-Wno-error=asm-operand-widths
|
||||
-Wno-error=constant-conversion
|
||||
-Wno-error=enum-conversion
|
||||
-Wno-error=initializer-overrides
|
||||
-Wno-error=missing-braces
|
||||
-Wno-error=sometimes-uninitialized
|
||||
-Wno-error=unused-function
|
||||
CPP_ARGS: >
|
||||
-Wno-error=deprecated-declarations
|
||||
DRI_LOADERS: >
|
||||
-D glx=disabled
|
||||
-D gbm=disabled
|
||||
-D egl=enabled
|
||||
-D platforms=android
|
||||
EXTRA_OPTION: >
|
||||
-D android-stub=true
|
||||
-D llvm=disabled
|
||||
-D platform-sdk-version=29
|
||||
-D valgrind=false
|
||||
GALLIUM_ST: >
|
||||
-D dri3=disabled
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=disabled
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-opencl=disabled
|
||||
LLVM_VERSION: ""
|
||||
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
||||
script:
|
||||
- PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ CROSS=aarch64-linux-android GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d VULKAN_DRIVERS=freedreno,broadcom,virtio-experimental .gitlab-ci/meson/build.sh
|
||||
# x86_64 build:
|
||||
# Can't do Intel because gen_decoder.c currently requires libexpat, which
|
||||
# is not a dependency that AOSP wants to accept. Can't do Radeon Gallium
|
||||
# drivers because they requires LLVM, which we don't have an Android build
|
||||
# of.
|
||||
- PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/pkgconfig/ CROSS=x86_64-linux-android GALLIUM_DRIVERS=iris VULKAN_DRIVERS=amd,intel .gitlab-ci/meson/build.sh
|
||||
|
||||
.meson-cross:
|
||||
extends:
|
||||
- .meson-build
|
||||
stage: build-misc
|
||||
variables:
|
||||
UNWIND: "disabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=dri
|
||||
-D gbm=enabled
|
||||
-D egl=enabled
|
||||
-D platforms=x11
|
||||
-D osmesa=false
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=disabled
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
|
||||
.meson-arm:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/arm_build
|
||||
needs:
|
||||
- debian/arm_build
|
||||
variables:
|
||||
VULKAN_DRIVERS: freedreno,broadcom
|
||||
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
tags:
|
||||
- aarch64
|
||||
|
||||
debian-armhf:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
CROSS: armhf
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D valgrind=false
|
||||
MINIO_ARTIFACT_NAME: mesa-armhf
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
|
||||
debian-arm64:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
VULKAN_DRIVERS: "freedreno,broadcom,panfrost,imagination-experimental"
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D valgrind=false
|
||||
-D imagination-srv=true
|
||||
MINIO_ARTIFACT_NAME: mesa-arm64
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/prepare-artifacts.sh
|
||||
|
||||
debian-arm64-asan:
|
||||
extends:
|
||||
- debian-arm64
|
||||
variables:
|
||||
C_ARGS: >
|
||||
-Wno-error=stringop-truncation
|
||||
EXTRA_OPTION: >
|
||||
-D llvm=disabled
|
||||
-D b_sanitize=address
|
||||
-D valgrind=false
|
||||
-D tools=dlclose-skip
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
MINIO_ARTIFACT_NAME: mesa-arm64-asan
|
||||
MESON_TEST_ARGS: "--no-suite mesa:compiler"
|
||||
|
||||
debian-arm64-build-test:
|
||||
extends:
|
||||
- .meson-arm
|
||||
- .ci-deqp-artifacts
|
||||
variables:
|
||||
VULKAN_DRIVERS: "amd"
|
||||
EXTRA_OPTION: >
|
||||
-Dtools=panfrost,imagination
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
|
||||
debian-clang:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
C_ARGS: >
|
||||
-Wno-error=constant-conversion
|
||||
-Wno-error=enum-conversion
|
||||
-Wno-error=implicit-const-int-float-conversion
|
||||
-Wno-error=initializer-overrides
|
||||
-Wno-error=sometimes-uninitialized
|
||||
-Wno-error=unused-function
|
||||
CPP_ARGS: >
|
||||
-Wno-error=c99-designator
|
||||
-Wno-error=deprecated-declarations
|
||||
-Wno-error=implicit-const-int-float-conversion
|
||||
-Wno-error=missing-braces
|
||||
-Wno-error=overloaded-virtual
|
||||
-Wno-error=tautological-constant-out-of-range-compare
|
||||
-Wno-error=unused-const-variable
|
||||
-Wno-error=unused-private-field
|
||||
DRI_LOADERS: >
|
||||
-D glvnd=true
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio-experimental,swrast,panfrost,imagination-experimental
|
||||
EXTRA_OPTIONS:
|
||||
-D imagination-srv=true
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
|
||||
windows-vs2019:
|
||||
extends:
|
||||
- .build-windows
|
||||
- .use-windows_build_vs2019
|
||||
- .windows-build-rules
|
||||
stage: build-misc
|
||||
script:
|
||||
- . .\.gitlab-ci\windows\mesa_build.ps1
|
||||
artifacts:
|
||||
paths:
|
||||
- _build/meson-logs/*.txt
|
||||
- _install/
|
||||
|
||||
debian-clover:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
UNWIND: "enabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=disabled
|
||||
-D egl=disabled
|
||||
-D gbm=disabled
|
||||
GALLIUM_DRIVERS: "r600,radeonsi"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=disabled
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=disabled
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-opencl=icd
|
||||
EXTRA_OPTION: >
|
||||
-D valgrind=false
|
||||
script:
|
||||
- LLVM_VERSION=9 GALLIUM_DRIVERS=r600,swrast .gitlab-ci/meson/build.sh
|
||||
- .gitlab-ci/meson/build.sh
|
||||
|
||||
debian-vulkan:
|
||||
extends: .meson-build
|
||||
variables:
|
||||
UNWIND: "disabled"
|
||||
DRI_LOADERS: >
|
||||
-D glx=disabled
|
||||
-D gbm=disabled
|
||||
-D egl=disabled
|
||||
-D platforms=x11,wayland
|
||||
-D osmesa=false
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-vdpau=disabled
|
||||
-D gallium-xvmc=disabled
|
||||
-D gallium-omx=disabled
|
||||
-D gallium-va=disabled
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-opencl=disabled
|
||||
-D b_sanitize=undefined
|
||||
-D c_args=-fno-sanitize-recover=all
|
||||
-D cpp_args=-fno-sanitize-recover=all
|
||||
UBSAN_OPTIONS: "print_stacktrace=1"
|
||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio-experimental,imagination-experimental
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D build-aco-tests=true
|
||||
-D intel-clc=enabled
|
||||
-D imagination-srv=true
|
||||
|
||||
debian-i386:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/i386_build
|
||||
variables:
|
||||
CROSS: i386
|
||||
VULKAN_DRIVERS: intel,amd,swrast,virtio-experimental
|
||||
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink,crocus"
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
|
||||
debian-s390x:
|
||||
extends:
|
||||
- debian-ppc64el
|
||||
- .use-debian/s390x_build
|
||||
- .s390x-rules
|
||||
tags:
|
||||
- kvm
|
||||
variables:
|
||||
CROSS: s390x
|
||||
GALLIUM_DRIVERS: "swrast,zink"
|
||||
# The lp_test_blend test times out with LLVM 11
|
||||
LLVM_VERSION: 9
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
|
||||
debian-ppc64el:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/ppc64el_build
|
||||
- .ppc64el-rules
|
||||
variables:
|
||||
CROSS: ppc64el
|
||||
GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl,zink"
|
||||
VULKAN_DRIVERS: "amd,swrast"
|
||||
|
||||
debian-mingw32-x86_64:
|
||||
extends: .meson-build
|
||||
stage: build-misc
|
||||
variables:
|
||||
UNWIND: "disabled"
|
||||
C_ARGS: >
|
||||
-Wno-error=format
|
||||
-Wno-error=format-extra-args
|
||||
CPP_ARGS: $C_ARGS
|
||||
GALLIUM_DRIVERS: "swrast"
|
||||
EXTRA_OPTION: >
|
||||
-Dllvm=disabled
|
||||
-Dzlib=disabled
|
||||
-Dosmesa=true
|
||||
--cross-file=.gitlab-ci/x86_64-w64-mingw32
|
@@ -26,6 +26,7 @@ for var in \
|
||||
CI_SERVER_URL \
|
||||
CROSVM_GALLIUM_DRIVER \
|
||||
CROSVM_GPU_ARGS \
|
||||
CROSVM_TEST_SCRIPT \
|
||||
DEQP_BIN_DIR \
|
||||
DEQP_CASELIST_FILTER \
|
||||
DEQP_CASELIST_INV_FILTER \
|
||||
@@ -48,7 +49,6 @@ for var in \
|
||||
FDO_UPSTREAM_REPO \
|
||||
FD_MESA_DEBUG \
|
||||
FLAKES_CHANNEL \
|
||||
FREEDRENO_HANGCHECK_MS \
|
||||
GALLIUM_DRIVER \
|
||||
GALLIVM_PERF \
|
||||
GPU_VERSION \
|
||||
@@ -60,15 +60,12 @@ for var in \
|
||||
GTEST_SKIPS \
|
||||
HWCI_FREQ_MAX \
|
||||
HWCI_KERNEL_MODULES \
|
||||
HWCI_KVM \
|
||||
HWCI_START_XORG \
|
||||
HWCI_TEST_SCRIPT \
|
||||
IR3_SHADER_DEBUG \
|
||||
JOB_ARTIFACTS_BASE \
|
||||
JOB_RESULTS_PATH \
|
||||
JOB_ROOTFS_OVERLAY_PATH \
|
||||
KERNEL_IMAGE_BASE_URL \
|
||||
KERNEL_IMAGE_NAME \
|
||||
LD_LIBRARY_PATH \
|
||||
LP_NUM_THREADS \
|
||||
MESA_BASE_TAG \
|
||||
@@ -82,9 +79,7 @@ for var in \
|
||||
MESA_IMAGE_TAG \
|
||||
MESA_TEMPLATES_COMMIT \
|
||||
MESA_VK_IGNORE_CONFORMANCE_WARNING \
|
||||
MESA_SPIRV_LOG_LEVEL \
|
||||
MINIO_HOST \
|
||||
MINIO_RESULTS_UPLOAD \
|
||||
NIR_DEBUG \
|
||||
PAN_I_WANT_A_BROKEN_VULKAN_DRIVER \
|
||||
PAN_MESA_DEBUG \
|
||||
@@ -97,7 +92,6 @@ for var in \
|
||||
PIGLIT_REPLAY_DESCRIPTION_FILE \
|
||||
PIGLIT_REPLAY_DEVICE_NAME \
|
||||
PIGLIT_REPLAY_EXTRA_ARGS \
|
||||
PIGLIT_REPLAY_LOOP_TIMES \
|
||||
PIGLIT_REPLAY_REFERENCE_IMAGES_BASE \
|
||||
PIGLIT_REPLAY_SUBCOMMAND \
|
||||
PIGLIT_RESULTS \
|
||||
|
@@ -9,7 +9,6 @@ cd /
|
||||
|
||||
mount -t proc none /proc
|
||||
mount -t sysfs none /sys
|
||||
mount -t debugfs none /sys/kernel/debug
|
||||
mount -t devtmpfs none /dev || echo possibly already mounted
|
||||
mkdir -p /dev/pts
|
||||
mount -t devpts devpts /dev/pts
|
||||
|
@@ -8,31 +8,7 @@
|
||||
set -ex
|
||||
|
||||
# Set up any devices required by the jobs
|
||||
[ -z "$HWCI_KERNEL_MODULES" ] || {
|
||||
echo -n $HWCI_KERNEL_MODULES | xargs -d, -n1 /usr/sbin/modprobe
|
||||
}
|
||||
|
||||
#
|
||||
# Load the KVM module specific to the detected CPU virtualization extensions:
|
||||
# - vmx for Intel VT
|
||||
# - svm for AMD-V
|
||||
#
|
||||
# Additionally, download the kernel image to boot the VM via HWCI_TEST_SCRIPT.
|
||||
#
|
||||
if [ "$HWCI_KVM" = "true" ]; then
|
||||
unset KVM_KERNEL_MODULE
|
||||
grep -qs '\bvmx\b' /proc/cpuinfo && KVM_KERNEL_MODULE=kvm_intel || {
|
||||
grep -qs '\bsvm\b' /proc/cpuinfo && KVM_KERNEL_MODULE=kvm_amd
|
||||
}
|
||||
|
||||
[ -z "${KVM_KERNEL_MODULE}" ] && \
|
||||
echo "WARNING: Failed to detect CPU virtualization extensions" || \
|
||||
modprobe ${KVM_KERNEL_MODULE}
|
||||
|
||||
mkdir -p /lava-files
|
||||
wget -S --progress=dot:giga -O /lava-files/${KERNEL_IMAGE_NAME} \
|
||||
"${KERNEL_IMAGE_BASE_URL}/${KERNEL_IMAGE_NAME}"
|
||||
fi
|
||||
[ -z "$HWCI_KERNEL_MODULES" ] || (echo -n $HWCI_KERNEL_MODULES | xargs -d, -n1 /usr/sbin/modprobe)
|
||||
|
||||
# Fix prefix confusion: the build installs to $CI_PROJECT_DIR, but we expect
|
||||
# it in /install
|
||||
@@ -60,16 +36,6 @@ if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||
# Disable GPU runtime power management
|
||||
GPU_AUTOSUSPEND=`find /sys/devices -name autosuspend_delay_ms | grep gpu | head -1`
|
||||
test -z "$GPU_AUTOSUSPEND" || echo -1 > $GPU_AUTOSUSPEND || true
|
||||
|
||||
# Lock Intel GPU frequency to 70% of the maximum allowed by hardware
|
||||
# and enable throttling detection & reporting.
|
||||
./intel-gpu-freq.sh -s 70% -g all -d
|
||||
fi
|
||||
|
||||
# Increase freedreno hangcheck timer because it's right at the edge of the
|
||||
# spilling tests timing out (and some traces, too)
|
||||
if [ -n "$FREEDRENO_HANGCHECK_MS" ]; then
|
||||
echo $FREEDRENO_HANGCHECK_MS | tee -a /sys/kernel/debug/dri/128/hangcheck_period_ms
|
||||
fi
|
||||
|
||||
# Start a little daemon to capture the first devcoredump we encounter. (They
|
||||
@@ -95,18 +61,18 @@ if [ -n "$HWCI_START_XORG" ]; then
|
||||
export DISPLAY=:0
|
||||
fi
|
||||
|
||||
sh -c "$HWCI_TEST_SCRIPT" && RESULT=pass || RESULT=fail
|
||||
|
||||
# Let's make sure the results are always stored in current working directory
|
||||
mv -f ${CI_PROJECT_DIR}/results ./ 2>/dev/null || true
|
||||
|
||||
[ "${RESULT}" = "fail" ] || rm -rf results/trace/$PIGLIT_REPLAY_DEVICE_NAME
|
||||
RESULT=fail
|
||||
if sh $HWCI_TEST_SCRIPT; then
|
||||
RESULT=pass
|
||||
rm -rf results/trace/$PIGLIT_REPLAY_DEVICE_NAME
|
||||
fi
|
||||
|
||||
# upload artifacts
|
||||
if [ -n "$MINIO_RESULTS_UPLOAD" ]; then
|
||||
MINIO=$(cat /proc/cmdline | tr ' ' '\n' | grep minio_results | cut -d '=' -f 2 || true)
|
||||
if [ -n "$MINIO" ]; then
|
||||
tar -czf results.tar.gz results/;
|
||||
ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}";
|
||||
ci-fairy minio cp results.tar.gz minio://"$MINIO_RESULTS_UPLOAD"/results.tar.gz;
|
||||
ci-fairy minio cp results.tar.gz minio://"$MINIO"/results.tar.gz;
|
||||
fi
|
||||
|
||||
echo "hwci: mesa: $RESULT"
|
||||
|
@@ -1,567 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# The Intel i915 GPU driver allows to change the minimum, maximum and boost
|
||||
# frequencies in steps of 50 MHz via /sys/class/drm/card<n>/<freq_info>,
|
||||
# where <n> is the DRM card index and <freq_info> one of the following:
|
||||
#
|
||||
# - gt_max_freq_mhz (enforced maximum freq)
|
||||
# - gt_min_freq_mhz (enforced minimum freq)
|
||||
# - gt_boost_freq_mhz (enforced boost freq)
|
||||
#
|
||||
# The hardware capabilities can be accessed via:
|
||||
#
|
||||
# - gt_RP0_freq_mhz (supported maximum freq)
|
||||
# - gt_RPn_freq_mhz (supported minimum freq)
|
||||
# - gt_RP1_freq_mhz (most efficient freq)
|
||||
#
|
||||
# The current frequency can be read from:
|
||||
# - gt_act_freq_mhz (the actual GPU freq)
|
||||
# - gt_cur_freq_mhz (the last requested freq)
|
||||
#
|
||||
# Copyright (C) 2022 Collabora Ltd.
|
||||
# Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
#
|
||||
# Constants
|
||||
#
|
||||
DRM_FREQ_SYSFS_PATTERN="/sys/class/drm/card%d/gt_%s_freq_mhz"
|
||||
ENF_FREQ_INFO="max min boost"
|
||||
CAP_FREQ_INFO="RP0 RPn RP1"
|
||||
ACT_FREQ_INFO="act cur"
|
||||
THROTT_DETECT_SLEEP_SEC=2
|
||||
THROTT_DETECT_PID_FILE_PATH=/tmp/thrott-detect.pid
|
||||
|
||||
#
|
||||
# Global variables.
|
||||
#
|
||||
unset INTEL_DRM_CARD_INDEX
|
||||
unset GET_ACT_FREQ GET_ENF_FREQ GET_CAP_FREQ
|
||||
unset SET_MIN_FREQ SET_MAX_FREQ
|
||||
unset MONITOR_FREQ
|
||||
unset DETECT_THROTT
|
||||
unset DRY_RUN
|
||||
|
||||
#
|
||||
# Simple printf based stderr logger.
|
||||
#
|
||||
log() {
|
||||
local msg_type=$1
|
||||
|
||||
shift
|
||||
printf "%s: %s: " "${msg_type}" "${0##*/}" >&2
|
||||
printf "$@" >&2
|
||||
printf "\n" >&2
|
||||
}
|
||||
|
||||
#
|
||||
# Helper to print sysfs path for the given card index and freq info.
|
||||
#
|
||||
# arg1: Frequency info sysfs name, one of *_FREQ_INFO constants above
|
||||
# arg2: Video card index, defaults to INTEL_DRM_CARD_INDEX
|
||||
#
|
||||
print_freq_sysfs_path() {
|
||||
printf ${DRM_FREQ_SYSFS_PATTERN} "${2:-${INTEL_DRM_CARD_INDEX}}" "$1"
|
||||
}
|
||||
|
||||
#
|
||||
# Helper to set INTEL_DRM_CARD_INDEX for the first identified Intel video card.
|
||||
#
|
||||
identify_intel_gpu() {
|
||||
local i=0 vendor path
|
||||
|
||||
while [ ${i} -lt 16 ]; do
|
||||
[ -c "/dev/dri/card$i" ] || {
|
||||
i=$((i + 1))
|
||||
continue
|
||||
}
|
||||
|
||||
path=$(print_freq_sysfs_path "" ${i})
|
||||
path=${path%/*}/device/vendor
|
||||
|
||||
[ -r "${path}" ] && read vendor < "${path}" && \
|
||||
[ "${vendor}" = "0x8086" ] && INTEL_DRM_CARD_INDEX=$i && return 0
|
||||
|
||||
i=$((i + 1))
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
#
|
||||
# Read the specified freq info from sysfs.
|
||||
#
|
||||
# arg1: Flag (y/n) to also enable printing the freq info.
|
||||
# arg2...: Frequency info sysfs name(s), see *_FREQ_INFO constants above
|
||||
# return: Global variable(s) FREQ_${arg} containing the requested information
|
||||
#
|
||||
read_freq_info() {
|
||||
local var val path print=0 ret=0
|
||||
|
||||
[ "$1" = "y" ] && print=1
|
||||
shift
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
var=FREQ_$1
|
||||
path=$(print_freq_sysfs_path "$1")
|
||||
|
||||
[ -r ${path} ] && read ${var} < ${path} || {
|
||||
log ERROR "Failed to read freq info from: %s" "${path}"
|
||||
ret=1
|
||||
continue
|
||||
}
|
||||
|
||||
[ -n "${var}" ] || {
|
||||
log ERROR "Got empty freq info from: %s" "${path}"
|
||||
ret=1
|
||||
continue
|
||||
}
|
||||
|
||||
[ ${print} -eq 1 ] && {
|
||||
eval val=\$${var}
|
||||
printf "%6s: %4s MHz\n" "$1" "${val}"
|
||||
}
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
#
|
||||
# Display requested info.
|
||||
#
|
||||
print_freq_info() {
|
||||
local req_freq
|
||||
|
||||
[ -n "${GET_CAP_FREQ}" ] && {
|
||||
printf "* Hardware capabilities\n"
|
||||
read_freq_info y ${CAP_FREQ_INFO}
|
||||
printf "\n"
|
||||
}
|
||||
|
||||
[ -n "${GET_ENF_FREQ}" ] && {
|
||||
printf "* Enforcements\n"
|
||||
read_freq_info y ${ENF_FREQ_INFO}
|
||||
printf "\n"
|
||||
}
|
||||
|
||||
[ -n "${GET_ACT_FREQ}" ] && {
|
||||
printf "* Actual\n"
|
||||
read_freq_info y ${ACT_FREQ_INFO}
|
||||
printf "\n"
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Helper to print frequency value as requested by user via '-s, --set' option.
|
||||
# arg1: user requested freq value
|
||||
#
|
||||
compute_freq_set() {
|
||||
local val
|
||||
|
||||
case "$1" in
|
||||
+)
|
||||
val=${FREQ_RP0}
|
||||
;;
|
||||
-)
|
||||
val=${FREQ_RPn}
|
||||
;;
|
||||
*%)
|
||||
val=$((${1%?} * ${FREQ_RP0} / 100))
|
||||
# Adjust freq to comply with 50 MHz increments
|
||||
val=$((val / 50 * 50))
|
||||
;;
|
||||
*[!0-9]*)
|
||||
log ERROR "Cannot set freq to invalid value: %s" "$1"
|
||||
return 1
|
||||
;;
|
||||
"")
|
||||
log ERROR "Cannot set freq to unspecified value"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
# Adjust freq to comply with 50 MHz increments
|
||||
val=$(($1 / 50 * 50))
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%s" "${val}"
|
||||
}
|
||||
|
||||
#
|
||||
# Helper for set_freq().
|
||||
#
|
||||
set_freq_max() {
|
||||
log INFO "Setting GPU max freq to %s MHz" "${SET_MAX_FREQ}"
|
||||
|
||||
read_freq_info n min || return $?
|
||||
|
||||
[ ${SET_MAX_FREQ} -gt ${FREQ_RP0} ] && {
|
||||
log ERROR "Cannot set GPU max freq (%s) to be greater than hw max freq (%s)" \
|
||||
"${SET_MAX_FREQ}" "${FREQ_RP0}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ ${SET_MAX_FREQ} -lt ${FREQ_RPn} ] && {
|
||||
log ERROR "Cannot set GPU max freq (%s) to be less than hw min freq (%s)" \
|
||||
"${SET_MIN_FREQ}" "${FREQ_RPn}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ ${SET_MAX_FREQ} -lt ${FREQ_min} ] && {
|
||||
log ERROR "Cannot set GPU max freq (%s) to be less than min freq (%s)" \
|
||||
"${SET_MAX_FREQ}" "${FREQ_min}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ -z "${DRY_RUN}" ] || return 0
|
||||
|
||||
printf "%s" ${SET_MAX_FREQ} | tee $(print_freq_sysfs_path max) \
|
||||
$(print_freq_sysfs_path boost) > /dev/null
|
||||
[ $? -eq 0 ] || {
|
||||
log ERROR "Failed to set GPU max frequency"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Helper for set_freq().
|
||||
#
|
||||
set_freq_min() {
|
||||
log INFO "Setting GPU min freq to %s MHz" "${SET_MIN_FREQ}"
|
||||
|
||||
read_freq_info n max || return $?
|
||||
|
||||
[ ${SET_MIN_FREQ} -gt ${FREQ_max} ] && {
|
||||
log ERROR "Cannot set GPU min freq (%s) to be greater than max freq (%s)" \
|
||||
"${SET_MIN_FREQ}" "${FREQ_max}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ ${SET_MIN_FREQ} -lt ${FREQ_RPn} ] && {
|
||||
log ERROR "Cannot set GPU min freq (%s) to be less than hw min freq (%s)" \
|
||||
"${SET_MIN_FREQ}" "${FREQ_RPn}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ -z "${DRY_RUN}" ] || return 0
|
||||
|
||||
printf "%s" ${SET_MIN_FREQ} > $(print_freq_sysfs_path min)
|
||||
[ $? -eq 0 ] || {
|
||||
log ERROR "Failed to set GPU min frequency"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Set min or max or both GPU frequencies to the user indicated values.
|
||||
#
|
||||
set_freq() {
|
||||
# Get hw max & min frequencies
|
||||
read_freq_info n RP0 RPn || return $?
|
||||
|
||||
[ -z "${SET_MAX_FREQ}" ] || {
|
||||
SET_MAX_FREQ=$(compute_freq_set "${SET_MAX_FREQ}")
|
||||
[ -z "${SET_MAX_FREQ}" ] && return 1
|
||||
}
|
||||
|
||||
[ -z "${SET_MIN_FREQ}" ] || {
|
||||
SET_MIN_FREQ=$(compute_freq_set "${SET_MIN_FREQ}")
|
||||
[ -z "${SET_MIN_FREQ}" ] && return 1
|
||||
}
|
||||
|
||||
#
|
||||
# Ensure correct operation order, to avoid setting min freq
|
||||
# to a value which is larger than max freq.
|
||||
#
|
||||
# E.g.:
|
||||
# crt_min=crt_max=600; new_min=new_max=700
|
||||
# > operation order: max=700; min=700
|
||||
#
|
||||
# crt_min=crt_max=600; new_min=new_max=500
|
||||
# > operation order: min=500; max=500
|
||||
#
|
||||
if [ -n "${SET_MAX_FREQ}" ] && [ -n "${SET_MIN_FREQ}" ]; then
|
||||
[ ${SET_MAX_FREQ} -lt ${SET_MIN_FREQ} ] && {
|
||||
log ERROR "Cannot set GPU max freq to be less than min freq"
|
||||
return 1
|
||||
}
|
||||
|
||||
read_freq_info n min || return $?
|
||||
|
||||
if [ ${SET_MAX_FREQ} -lt ${FREQ_min} ]; then
|
||||
set_freq_min || return $?
|
||||
set_freq_max
|
||||
else
|
||||
set_freq_max || return $?
|
||||
set_freq_min
|
||||
fi
|
||||
elif [ -n "${SET_MAX_FREQ}" ]; then
|
||||
set_freq_max
|
||||
elif [ -n "${SET_MIN_FREQ}" ]; then
|
||||
set_freq_min
|
||||
else
|
||||
log "Unexpected call to set_freq()"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Helper for detect_throttling().
|
||||
#
|
||||
get_thrott_detect_pid() {
|
||||
[ -e ${THROTT_DETECT_PID_FILE_PATH} ] || return 0
|
||||
|
||||
local pid
|
||||
read pid < ${THROTT_DETECT_PID_FILE_PATH} || {
|
||||
log ERROR "Failed to read pid from: %s" "${THROTT_DETECT_PID_FILE_PATH}"
|
||||
return 1
|
||||
}
|
||||
|
||||
local proc_path=/proc/${pid:-invalid}/cmdline
|
||||
[ -r ${proc_path} ] && grep -qs "${0##*/}" ${proc_path} && {
|
||||
printf "%s" "${pid}"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Remove orphaned PID file
|
||||
rm -rf ${THROTT_DETECT_PID_FILE_PATH}
|
||||
return 1
|
||||
}
|
||||
|
||||
#
|
||||
# Control detection and reporting of GPU throttling events.
|
||||
# arg1: start - run throttle detector in background
|
||||
# stop - stop throttle detector process, if any
|
||||
# status - verify if throttle detector is running
|
||||
#
|
||||
detect_throttling() {
|
||||
local pid
|
||||
pid=$(get_thrott_detect_pid)
|
||||
|
||||
case "$1" in
|
||||
status)
|
||||
printf "Throttling detector is "
|
||||
[ -z "${pid}" ] && printf "not running\n" && return 0
|
||||
printf "running (pid=%s)\n" ${pid}
|
||||
;;
|
||||
|
||||
stop)
|
||||
[ -z "${pid}" ] && return 0
|
||||
|
||||
log INFO "Stopping throttling detector (pid=%s)" "${pid}"
|
||||
kill ${pid}; sleep 1; kill -0 ${pid} 2>/dev/null && kill -9 ${pid}
|
||||
rm -rf ${THROTT_DETECT_PID_FILE_PATH}
|
||||
;;
|
||||
|
||||
start)
|
||||
[ -n "${pid}" ] && {
|
||||
log WARN "Throttling detector is already running (pid=%s)" ${pid}
|
||||
return 0
|
||||
}
|
||||
|
||||
(
|
||||
read_freq_info n RPn || exit $?
|
||||
|
||||
while true; do
|
||||
sleep ${THROTT_DETECT_SLEEP_SEC}
|
||||
read_freq_info n act min cur || exit $?
|
||||
|
||||
#
|
||||
# The throttling seems to occur when act freq goes below min.
|
||||
# However, it's necessary to exclude the idle states, where
|
||||
# act freq normally reaches RPn and cur goes below min.
|
||||
#
|
||||
[ ${FREQ_act} -lt ${FREQ_min} ] && \
|
||||
[ ${FREQ_act} -gt ${FREQ_RPn} ] && \
|
||||
[ ${FREQ_cur} -ge ${FREQ_min} ] && \
|
||||
printf "GPU throttling detected: act=%s min=%s cur=%s RPn=%s\n" \
|
||||
${FREQ_act} ${FREQ_min} ${FREQ_cur} ${FREQ_RPn}
|
||||
done
|
||||
) &
|
||||
|
||||
pid=$!
|
||||
log INFO "Started GPU throttling detector (pid=%s)" ${pid}
|
||||
|
||||
printf "%s\n" ${pid} > ${THROTT_DETECT_PID_FILE_PATH} || \
|
||||
log WARN "Failed to write throttle detector PID file"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#
|
||||
# Show help message.
|
||||
#
|
||||
print_usage() {
|
||||
cat <<EOF
|
||||
Usage: ${0##*/} [OPTION]...
|
||||
|
||||
A script to manage Intel GPU frequencies. Can be used for debugging performance
|
||||
problems or trying to obtain a stable frequency while benchmarking.
|
||||
|
||||
Note Intel GPUs only accept specific frequencies, usually multiples of 50 MHz.
|
||||
|
||||
Options:
|
||||
-g, --get [act|enf|cap|all]
|
||||
Get frequency information: active (default), enforced,
|
||||
hardware capabilities or all of them.
|
||||
|
||||
-s, --set [{min|max}=]{FREQUENCY[%]|+|-}
|
||||
Set min or max frequency to the given value (MHz).
|
||||
Append '%' to interpret FREQUENCY as % of hw max.
|
||||
Use '+' or '-' to set frequency to hardware max or min.
|
||||
Omit min/max prefix to set both frequencies.
|
||||
|
||||
-r, --reset Reset frequencies to hardware defaults.
|
||||
|
||||
-m, --monitor [act|enf|cap|all]
|
||||
Monitor the indicated frequencies via 'watch' utility.
|
||||
See '-g, --get' option for more details.
|
||||
|
||||
-d|--detect-thrott [start|stop|status]
|
||||
Start (default operation) the throttling detector
|
||||
as a background process. Use 'stop' or 'status' to
|
||||
terminate the detector process or verify its status.
|
||||
|
||||
--dry-run See what the script will do without applying any
|
||||
frequency changes.
|
||||
|
||||
-h, --help Display this help text and exit.
|
||||
EOF
|
||||
}
|
||||
|
||||
#
|
||||
# Parse user input for '-g, --get' option.
|
||||
# Returns 0 if a value has been provided, otherwise 1.
|
||||
#
|
||||
parse_option_get() {
|
||||
local ret=0
|
||||
|
||||
case "$1" in
|
||||
act) GET_ACT_FREQ=1;;
|
||||
enf) GET_ENF_FREQ=1;;
|
||||
cap) GET_CAP_FREQ=1;;
|
||||
all) GET_ACT_FREQ=1; GET_ENF_FREQ=1; GET_CAP_FREQ=1;;
|
||||
-*|"")
|
||||
# No value provided, using default.
|
||||
GET_ACT_FREQ=1
|
||||
ret=1
|
||||
;;
|
||||
*)
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
#
|
||||
# Validate user input for '-s, --set' option.
|
||||
#
|
||||
validate_option_set() {
|
||||
case "$1" in
|
||||
+|-|[0-9]%|[0-9][0-9]%)
|
||||
return 0
|
||||
;;
|
||||
*[!0-9]*|"")
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
#
|
||||
# Parse script arguments.
|
||||
#
|
||||
[ $# -eq 0 ] && { print_usage; exit 1; }
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-g|--get)
|
||||
parse_option_get "$2" && shift
|
||||
;;
|
||||
|
||||
-s|--set)
|
||||
shift
|
||||
case "$1" in
|
||||
min=*)
|
||||
SET_MIN_FREQ=${1#min=}
|
||||
validate_option_set "${SET_MIN_FREQ}"
|
||||
;;
|
||||
max=*)
|
||||
SET_MAX_FREQ=${1#max=}
|
||||
validate_option_set "${SET_MAX_FREQ}"
|
||||
;;
|
||||
*)
|
||||
SET_MIN_FREQ=$1
|
||||
validate_option_set "${SET_MIN_FREQ}"
|
||||
SET_MAX_FREQ=${SET_MIN_FREQ}
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
-r|--reset)
|
||||
RESET_FREQ=1
|
||||
SET_MIN_FREQ="-"
|
||||
SET_MAX_FREQ="+"
|
||||
;;
|
||||
|
||||
-m|--monitor)
|
||||
MONITOR_FREQ=act
|
||||
parse_option_get "$2" && MONITOR_FREQ=$2 && shift
|
||||
;;
|
||||
|
||||
-d|--detect-thrott)
|
||||
DETECT_THROTT=start
|
||||
case "$2" in
|
||||
start|stop|status)
|
||||
DETECT_THROTT=$2
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
--dry-run)
|
||||
DRY_RUN=1
|
||||
;;
|
||||
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
|
||||
*)
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
RET=0
|
||||
|
||||
identify_intel_gpu || {
|
||||
log INFO "No Intel GPU detected"
|
||||
exit 0
|
||||
}
|
||||
|
||||
[ -n "${SET_MIN_FREQ}${SET_MAX_FREQ}" ] && { set_freq || RET=$?; }
|
||||
print_freq_info
|
||||
|
||||
[ -n "${DETECT_THROTT}" ] && detect_throttling ${DETECT_THROTT}
|
||||
|
||||
[ -n "${MONITOR_FREQ}" ] && {
|
||||
log INFO "Entering frequency monitoring mode"
|
||||
sleep 2
|
||||
exec watch -d -n 1 "$0" -g "${MONITOR_FREQ}"
|
||||
}
|
||||
|
||||
exit ${RET}
|
@@ -157,16 +157,3 @@ CONFIG_HW_RANDOM_MTK=y
|
||||
CONFIG_MTK_DEVAPC=y
|
||||
CONFIG_PWM_MTK_DISP=y
|
||||
CONFIG_MTK_CMDQ=y
|
||||
|
||||
# For nouveau. Note that DRM must be a module so that it's loaded after NFS is up to provide the firmware.
|
||||
CONFIG_ARCH_TEGRA=y
|
||||
CONFIG_DRM_NOUVEAU=m
|
||||
CONFIG_DRM_TEGRA=m
|
||||
CONFIG_R8169=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_DRM_TEGRA_STAGING=y
|
||||
CONFIG_TEGRA_HOST1X=y
|
||||
CONFIG_ARM_TEGRA_DEVFREQ=y
|
||||
CONFIG_TEGRA_SOCTHERM=y
|
||||
CONFIG_DRM_TEGRA_DEBUG=y
|
||||
CONFIG_PWM_TEGRA=y
|
||||
|
@@ -25,10 +25,7 @@ if [[ $arch == "arm64" ]]; then
|
||||
wget ${ARTIFACTS_URL}/Image.gz
|
||||
wget ${ARTIFACTS_URL}/cheza-kernel
|
||||
|
||||
DEVICE_TREES=""
|
||||
DEVICE_TREES="$DEVICE_TREES apq8016-sbc.dtb"
|
||||
DEVICE_TREES="$DEVICE_TREES apq8096-db820c.dtb"
|
||||
DEVICE_TREES="$DEVICE_TREES tegra210-p3450-0000.dtb"
|
||||
DEVICE_TREES="apq8016-sbc.dtb apq8096-db820c.dtb"
|
||||
|
||||
for DTB in $DEVICE_TREES; do
|
||||
wget ${ARTIFACTS_URL}/$DTB
|
||||
|
@@ -2,20 +2,13 @@
|
||||
|
||||
set -ex
|
||||
|
||||
SCRIPT_DIR="$(pwd)"
|
||||
|
||||
CROSVM_VERSION=c7cd0e0114c8363b884ba56d8e12adee718dcc93
|
||||
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/chromiumos/platform/crosvm /platform/crosvm
|
||||
CROSVM_VERSION=d2b6a64dd31c92a284a905c0f2483d0b222b1220
|
||||
git clone --single-branch -b for-mesa-ci --no-checkout https://gitlab.freedesktop.org/tomeu/crosvm.git /platform/crosvm
|
||||
pushd /platform/crosvm
|
||||
git checkout "$CROSVM_VERSION"
|
||||
git submodule update --init
|
||||
# Apply all crosvm patches for Mesa CI
|
||||
cat "$SCRIPT_DIR"/.gitlab-ci/container/build-crosvm_*.patch |
|
||||
patch -p1
|
||||
|
||||
VIRGLRENDERER_VERSION=0564c9a0c2f584e004a7d4864aee3b8ec9692105
|
||||
rm -rf third_party/virglrenderer
|
||||
git clone --single-branch -b master --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
|
||||
VIRGLRENDERER_VERSION=2a5fb800c6b0ce15ad37c2c698635e3e2d27b37c
|
||||
pushd third_party/virglrenderer
|
||||
git checkout "$VIRGLRENDERER_VERSION"
|
||||
meson build/ $EXTRA_MESON_ARGS
|
||||
@@ -38,4 +31,4 @@ RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
|
||||
popd
|
||||
|
||||
rm -rf /platform/crosvm
|
||||
rm -rf $PLATFORM2_ROOT $AOSP_EXTERNAL_ROOT/minijail $THIRD_PARTY_ROOT/adhd $THIRD_PARTY_ROOT/rust-vmm /platform/crosvm
|
||||
|
@@ -1,43 +0,0 @@
|
||||
From 3c57ec558bccc67fd53363c23deea20646be5c47 Mon Sep 17 00:00:00 2001
|
||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
Date: Wed, 17 Nov 2021 10:18:04 +0100
|
||||
Subject: [PATCH] Hack syslog out
|
||||
|
||||
It's causing stability problems when running several Crosvm instances in
|
||||
parallel.
|
||||
|
||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
---
|
||||
base/src/unix/linux/syslog.rs | 2 +-
|
||||
common/sys_util/src/linux/syslog.rs | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/base/src/unix/linux/syslog.rs b/base/src/unix/linux/syslog.rs
|
||||
index 05972a3a..f0db3781 100644
|
||||
--- a/base/src/unix/linux/syslog.rs
|
||||
+++ b/base/src/unix/linux/syslog.rs
|
||||
@@ -35,7 +35,7 @@ pub struct PlatformSyslog {
|
||||
impl Syslog for PlatformSyslog {
|
||||
fn new() -> Result<Self, Error> {
|
||||
Ok(Self {
|
||||
- socket: Some(openlog_and_get_socket()?),
|
||||
+ socket: None,
|
||||
})
|
||||
}
|
||||
|
||||
diff --git a/common/sys_util/src/linux/syslog.rs b/common/sys_util/src/linux/syslog.rs
|
||||
index 05972a3a..f0db3781 100644
|
||||
--- a/common/sys_util/src/linux/syslog.rs
|
||||
+++ b/common/sys_util/src/linux/syslog.rs
|
||||
@@ -35,7 +35,7 @@ pub struct PlatformSyslog {
|
||||
impl Syslog for PlatformSyslog {
|
||||
fn new() -> Result<Self, Error> {
|
||||
Ok(Self {
|
||||
- socket: Some(openlog_and_get_socket()?),
|
||||
+ socket: None,
|
||||
})
|
||||
}
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
@@ -4,21 +4,19 @@ set -ex
|
||||
|
||||
if [ -n "${DEQP_RUNNER_GIT_TAG}${DEQP_RUNNER_GIT_REV}" ]; then
|
||||
# Build and install from source
|
||||
DEQP_RUNNER_CARGO_ARGS="--git ${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/anholt/deqp-runner.git}"
|
||||
EXTRA_CARGO_ARGS="--git ${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/anholt/deqp-runner.git} ${EXTRA_CARGO_ARGS}"
|
||||
|
||||
if [ -n "${DEQP_RUNNER_GIT_TAG}" ]; then
|
||||
DEQP_RUNNER_CARGO_ARGS="--tag ${DEQP_RUNNER_GIT_TAG} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||
EXTRA_CARGO_ARGS="--tag ${DEQP_RUNNER_GIT_TAG} ${EXTRA_CARGO_ARGS}"
|
||||
else
|
||||
DEQP_RUNNER_CARGO_ARGS="--rev ${DEQP_RUNNER_GIT_REV} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||
EXTRA_CARGO_ARGS="--rev ${DEQP_RUNNER_GIT_REV} ${EXTRA_CARGO_ARGS}"
|
||||
fi
|
||||
|
||||
DEQP_RUNNER_CARGO_ARGS="${DEQP_RUNNER_CARGO_ARGS} ${EXTRA_CARGO_ARGS}"
|
||||
else
|
||||
# Install from package registry
|
||||
DEQP_RUNNER_CARGO_ARGS="--version 0.13.1 ${EXTRA_CARGO_ARGS} -- deqp-runner"
|
||||
EXTRA_CARGO_ARGS="--version 0.11.0 ${EXTRA_CARGO_ARGS} -- deqp-runner"
|
||||
fi
|
||||
|
||||
cargo install --locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local \
|
||||
${DEQP_RUNNER_CARGO_ARGS}
|
||||
${EXTRA_CARGO_ARGS}
|
||||
|
@@ -6,15 +6,11 @@ git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
git clone \
|
||||
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
||||
-b vulkan-cts-1.3.1.1 \
|
||||
-b vulkan-cts-1.2.7.2 \
|
||||
--depth 1 \
|
||||
/VK-GL-CTS
|
||||
pushd /VK-GL-CTS
|
||||
|
||||
# Cherry-pick fix for zlib dependency
|
||||
git fetch origin main
|
||||
git cherry-pick -x ec1804831b654ac55bd2a7a5dd27a556afe05030
|
||||
|
||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
||||
# always goes through ssh or https.
|
||||
|
@@ -4,7 +4,7 @@ set -ex
|
||||
|
||||
git clone https://github.com/ValveSoftware/Fossilize.git
|
||||
cd Fossilize
|
||||
git checkout 16fba1b8b5d9310126bb02323d7bae3227338461
|
||||
git checkout 72088685d90bc814d14aad5505354ffa8a642789
|
||||
git submodule update --init
|
||||
mkdir build
|
||||
cd build
|
||||
|
@@ -28,7 +28,7 @@ if [[ -n ${DEVICE_TREES} ]]; then
|
||||
cp ${DEVICE_TREES} /lava-files/.
|
||||
fi
|
||||
|
||||
if [[ ${DEBIAN_ARCH} = "amd64" || ${DEBIAN_ARCH} = "arm64" ]]; then
|
||||
if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
|
||||
make modules
|
||||
INSTALL_MOD_PATH=/lava-files/rootfs-${DEBIAN_ARCH}/ make modules_install
|
||||
fi
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
set -ex
|
||||
|
||||
export LIBDRM_VERSION=libdrm-2.4.110
|
||||
export LIBDRM_VERSION=libdrm-2.4.109
|
||||
|
||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
|
||||
tar -xvf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
|
||||
|
@@ -4,7 +4,7 @@ set -ex
|
||||
|
||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||
pushd /piglit
|
||||
git checkout 445711587d461539a4d8f9d35a7fe996a86d3c8d
|
||||
git checkout af1785f31f65622d9b1ca1c08c75cf140bc7ed22
|
||||
patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff
|
||||
cmake -S . -B . -G Ninja -DCMAKE_BUILD_TYPE=Release $PIGLIT_OPTS $EXTRA_CMAKE_ARGS
|
||||
ninja $PIGLIT_BUILD_TARGETS
|
||||
|
@@ -1,76 +1,61 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2022 Collabora Limited
|
||||
# Author: Guilherme Gallo <guilherme.gallo@collabora.com>
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
create_gn_args() {
|
||||
# gn can be configured to cross-compile skia and its tools
|
||||
# It is important to set the target_cpu to guarantee the intended target
|
||||
# machine
|
||||
cp "${BASE_ARGS_GN_FILE}" "${SKQP_OUT_DIR}"/args.gn
|
||||
echo "target_cpu = \"${SKQP_ARCH}\"" >> "${SKQP_OUT_DIR}"/args.gn
|
||||
}
|
||||
|
||||
download_skqp_models() (
|
||||
# The download_model.py script needs a checksum file to know what models
|
||||
# version to download.
|
||||
|
||||
download_skia_source() {
|
||||
if [ -z ${SKIA_DIR+x} ]
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
# This is the most recent commit available in the skia repository with a
|
||||
# valid files.checksum
|
||||
SKIA_LAST_SKQP_CUT_COMMIT_SHA=ccf5f0d75b6a6b54756f2c62d57e3730eed8aa45
|
||||
git fetch origin "${SKIA_LAST_SKQP_CUT_COMMIT_SHA}:refs/remotes/origin/${SKIA_LAST_SKQP_CUT_COMMIT_SHA}"
|
||||
git checkout "${SKIA_LAST_SKQP_CUT_COMMIT_SHA}" -- \
|
||||
platform_tools/android/apps/skqp/src/main/assets/files.checksum
|
||||
|
||||
# Skia cloned from https://android.googlesource.com/platform/external/skqp
|
||||
# has all needed assets tracked on git-fs
|
||||
SKQP_REPO=https://android.googlesource.com/platform/external/skqp
|
||||
SKQP_BRANCH=android-cts-10.0_r11
|
||||
# The following patch transforms download_model.py from python2 to python3.
|
||||
git apply "${DOWNLOAD_MODEL_PATCH_FILE}"
|
||||
python3 tools/skqp/download_model.py
|
||||
|
||||
git clone --branch "${SKQP_BRANCH}" --depth 1 "${SKQP_REPO}" "${SKIA_DIR}"
|
||||
}
|
||||
# Copy resources from skia to skqp directory
|
||||
python3 tools/skqp/setup_resources
|
||||
)
|
||||
|
||||
set -ex
|
||||
|
||||
SCRIPT_DIR=$(realpath "$(dirname "$0")")
|
||||
SKQP_PATCH_DIR="${SCRIPT_DIR}"
|
||||
FETCH_GN_PATCH_FILE="${SCRIPT_DIR}/build-skqp_fetch-gn.patch"
|
||||
BASE_ARGS_GN_FILE="${SCRIPT_DIR}/build-skqp_base.gn"
|
||||
DOWNLOAD_MODEL_PATCH_FILE="${SCRIPT_DIR}/build-skqp_download_model.patch"
|
||||
|
||||
SKQP_ARCH=${SKQP_ARCH:-x64}
|
||||
SKIA_DIR=${SKIA_DIR:-$(mktemp -d)}
|
||||
SKQP_DIR=${SKQP_DIR:-$(mktemp -d)}
|
||||
SKQP_OUT_DIR=${SKIA_DIR}/out/${SKQP_ARCH}
|
||||
SKQP_INSTALL_DIR=/skqp
|
||||
SKQP_ASSETS_DIR="${SKQP_INSTALL_DIR}/assets"
|
||||
SKQP_BINARIES=(skqp)
|
||||
# Build list_gpu_unit_tests to update the unittests.txt file properly to the
|
||||
# target hardware.
|
||||
SKQP_BINARIES=(skqp list_gpu_unit_tests)
|
||||
|
||||
download_skia_source
|
||||
# Using a recent release version to mitigate instability during test phase
|
||||
SKIA_COMMIT_SHA="canvaskit/0.32.0"
|
||||
|
||||
git clone 'https://skia.googlesource.com/skia/' \
|
||||
--single-branch \
|
||||
-b "${SKIA_COMMIT_SHA}" \
|
||||
"${SKIA_DIR}"
|
||||
|
||||
pushd "${SKIA_DIR}"
|
||||
|
||||
# Apply all skqp patches for Mesa CI
|
||||
cat "${SKQP_PATCH_DIR}"/build-skqp_*.patch |
|
||||
patch -p1
|
||||
|
||||
# Fetch some needed build tools needed to build skia/skqp.
|
||||
# Basically, it clones repositories with commits SHAs from ${SKIA_DIR}/DEPS
|
||||
# directory.
|
||||
python tools/git-sync-deps
|
||||
git apply "${FETCH_GN_PATCH_FILE}"
|
||||
# Fetch some needed build tools needed to build skia/skqp
|
||||
# Basically, it clones repositories with commits SHAs from
|
||||
# ${SKIA_DIR}/DEPS directory
|
||||
python3 tools/git-sync-deps
|
||||
|
||||
mkdir -p "${SKQP_OUT_DIR}"
|
||||
mkdir -p "${SKQP_INSTALL_DIR}"
|
||||
@@ -83,15 +68,15 @@ bin/gn gen "${SKQP_OUT_DIR}"
|
||||
for BINARY in "${SKQP_BINARIES[@]}"
|
||||
do
|
||||
/usr/bin/ninja -C "${SKQP_OUT_DIR}" "${BINARY}"
|
||||
# Strip binary, since gn is not stripping it even when `is_debug == false`
|
||||
${STRIP_CMD:-strip} "${SKQP_OUT_DIR}/${BINARY}"
|
||||
install -m 0755 "${SKQP_OUT_DIR}/${BINARY}" "${SKQP_INSTALL_DIR}"
|
||||
done
|
||||
|
||||
# Move assets to the target directory, which will reside in rootfs.
|
||||
# Acquire assets and move them to the target directory.
|
||||
download_skqp_models
|
||||
mv platform_tools/android/apps/skqp/src/main/assets/ "${SKQP_ASSETS_DIR}"
|
||||
|
||||
popd
|
||||
rm -Rf "${SKQP_DIR}"
|
||||
rm -Rf "${SKIA_DIR}"
|
||||
|
||||
set +ex
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/BUILD.gn b/BUILD.gn
|
||||
index d2b1407..7b60c90 100644
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -144,7 +144,7 @@ config("skia_public") {
|
||||
|
||||
# Skia internal APIs, used by Skia itself and a few test tools.
|
||||
config("skia_private") {
|
||||
- visibility = [ ":*" ]
|
||||
+ visibility = [ "*" ]
|
||||
|
||||
include_dirs = [
|
||||
"include/private",
|
@@ -1,30 +1,8 @@
|
||||
cc = "clang"
|
||||
cxx = "clang++"
|
||||
cc = "gcc"
|
||||
cxx = "g++"
|
||||
|
||||
extra_cflags = [ "-DSK_ENABLE_DUMP_GPU", "-DSK_BUILD_FOR_SKQP" ]
|
||||
extra_cflags_cc = [
|
||||
"-Wno-error",
|
||||
|
||||
# skqp build process produces a lot of compilation warnings, silencing
|
||||
# most of them to remove clutter and avoid the CI job log to exceed the
|
||||
# maximum size
|
||||
|
||||
# GCC flags
|
||||
"-Wno-redundant-move",
|
||||
"-Wno-suggest-override",
|
||||
"-Wno-class-memaccess",
|
||||
"-Wno-deprecated-copy",
|
||||
"-Wno-uninitialized",
|
||||
|
||||
# Clang flags
|
||||
"-Wno-macro-redefined",
|
||||
"-Wno-anon-enum-enum-conversion",
|
||||
"-Wno-suggest-destructor-override",
|
||||
"-Wno-return-std-move-in-c++11",
|
||||
"-Wno-extra-semi-stmt",
|
||||
]
|
||||
|
||||
cc_wrapper = "ccache"
|
||||
extra_cflags_cc = [ "-static", "-Wno-error", "-Wno-macro-redefined", "-Wno-suggest-destructor-override", "-Wno-suggest-override" ]
|
||||
|
||||
is_debug = false
|
||||
|
||||
|
22
.gitlab-ci/container/build-skqp_download_model.patch
Normal file
22
.gitlab-ci/container/build-skqp_download_model.patch
Normal file
@@ -0,0 +1,22 @@
|
||||
diff --git a/tools/skqp/download_model.py b/tools/skqp/download_model.py
|
||||
index fb0020e481..a5d8a03754 100755
|
||||
--- a/tools/skqp/download_model.py
|
||||
+++ b/tools/skqp/download_model.py
|
||||
@@ -10,7 +10,7 @@ import os
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
-import urllib2
|
||||
+import urllib.request, urllib.error, urllib.parse
|
||||
|
||||
def checksum(path):
|
||||
if not os.path.exists(path):
|
||||
@@ -33,7 +33,7 @@ def download(md5, path):
|
||||
pass # ignore race condition
|
||||
url = 'https://storage.googleapis.com/skia-skqp-assets/' + md5
|
||||
with open(path, 'wb') as o:
|
||||
- shutil.copyfileobj(urllib2.urlopen(url), o)
|
||||
+ shutil.copyfileobj(urllib.request.urlopen(url), o)
|
||||
|
||||
def tmp(prefix):
|
||||
fd, path = tempfile.mkstemp(prefix=prefix)
|
13
.gitlab-ci/container/build-skqp_fetch-gn.patch
Normal file
13
.gitlab-ci/container/build-skqp_fetch-gn.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/bin/fetch-gn b/bin/fetch-gn
|
||||
index b4bb14c630..59c4591a30 100755
|
||||
--- a/bin/fetch-gn
|
||||
+++ b/bin/fetch-gn
|
||||
@@ -23,7 +23,7 @@ os.chdir(os.path.join(os.path.dirname(__file__), os.pardir))
|
||||
gnzip = os.path.join(tempfile.mkdtemp(), 'gn.zip')
|
||||
with open(gnzip, 'wb') as f:
|
||||
OS = {'darwin': 'mac', 'linux': 'linux', 'linux2': 'linux', 'win32': 'windows'}[sys.platform]
|
||||
- cpu = {'amd64': 'amd64', 'arm64': 'arm64', 'x86_64': 'amd64'}[platform.machine().lower()]
|
||||
+ cpu = {'amd64': 'amd64', 'arm64': 'arm64', 'x86_64': 'amd64', 'aarch64': 'arm64'}[platform.machine().lower()]
|
||||
|
||||
rev = 'd62642c920e6a0d1756316d225a90fd6faa9e21e'
|
||||
url = 'https://chrome-infra-packages.appspot.com/dl/gn/gn/{}-{}/+/git_revision:{}'.format(
|
@@ -1,68 +0,0 @@
|
||||
diff --git a/bin/fetch-gn b/bin/fetch-gn
|
||||
index d5e94a2..59c4591 100755
|
||||
--- a/bin/fetch-gn
|
||||
+++ b/bin/fetch-gn
|
||||
@@ -5,39 +5,44 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
-import hashlib
|
||||
import os
|
||||
+import platform
|
||||
import shutil
|
||||
import stat
|
||||
import sys
|
||||
-import urllib2
|
||||
+import tempfile
|
||||
+import zipfile
|
||||
+
|
||||
+if sys.version_info[0] < 3:
|
||||
+ from urllib2 import urlopen
|
||||
+else:
|
||||
+ from urllib.request import urlopen
|
||||
|
||||
os.chdir(os.path.join(os.path.dirname(__file__), os.pardir))
|
||||
|
||||
-dst = 'bin/gn.exe' if 'win32' in sys.platform else 'bin/gn'
|
||||
+gnzip = os.path.join(tempfile.mkdtemp(), 'gn.zip')
|
||||
+with open(gnzip, 'wb') as f:
|
||||
+ OS = {'darwin': 'mac', 'linux': 'linux', 'linux2': 'linux', 'win32': 'windows'}[sys.platform]
|
||||
+ cpu = {'amd64': 'amd64', 'arm64': 'arm64', 'x86_64': 'amd64', 'aarch64': 'arm64'}[platform.machine().lower()]
|
||||
|
||||
-sha1 = '2f27ff0b6118e5886df976da5effa6003d19d1ce' if 'linux' in sys.platform else \
|
||||
- '9be792dd9010ce303a9c3a497a67bcc5ac8c7666' if 'darwin' in sys.platform else \
|
||||
- 'eb69be2d984b4df60a8c21f598135991f0ad1742' # Windows
|
||||
+ rev = 'd62642c920e6a0d1756316d225a90fd6faa9e21e'
|
||||
+ url = 'https://chrome-infra-packages.appspot.com/dl/gn/gn/{}-{}/+/git_revision:{}'.format(
|
||||
+ OS,cpu,rev)
|
||||
+ f.write(urlopen(url).read())
|
||||
|
||||
-def sha1_of_file(path):
|
||||
- h = hashlib.sha1()
|
||||
- if os.path.isfile(path):
|
||||
- with open(path, 'rb') as f:
|
||||
- h.update(f.read())
|
||||
- return h.hexdigest()
|
||||
+gn = 'gn.exe' if 'win32' in sys.platform else 'gn'
|
||||
+with zipfile.ZipFile(gnzip, 'r') as f:
|
||||
+ f.extract(gn, 'bin')
|
||||
|
||||
-if sha1_of_file(dst) != sha1:
|
||||
- with open(dst, 'wb') as f:
|
||||
- f.write(urllib2.urlopen('https://chromium-gn.storage-download.googleapis.com/' + sha1).read())
|
||||
+gn = os.path.join('bin', gn)
|
||||
|
||||
- os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
|
||||
- stat.S_IRGRP | stat.S_IXGRP |
|
||||
- stat.S_IROTH | stat.S_IXOTH )
|
||||
+os.chmod(gn, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
|
||||
+ stat.S_IRGRP | stat.S_IXGRP |
|
||||
+ stat.S_IROTH | stat.S_IXOTH )
|
||||
|
||||
# We'll also copy to a path that depot_tools' GN wrapper will expect to find the binary.
|
||||
copy_path = 'buildtools/linux64/gn' if 'linux' in sys.platform else \
|
||||
'buildtools/mac/gn' if 'darwin' in sys.platform else \
|
||||
'buildtools/win/gn.exe'
|
||||
if os.path.isdir(os.path.dirname(copy_path)):
|
||||
- shutil.copy(dst, copy_path)
|
||||
+ shutil.copy(gn, copy_path)
|
@@ -1,142 +0,0 @@
|
||||
Patch based from diff with skia repository from commit
|
||||
013397884c73959dc07cb0a26ee742b1cdfbda8a
|
||||
|
||||
Adds support for Python3, but removes the constraint of only SHA based refs in
|
||||
DEPS
|
||||
diff --git a/tools/git-sync-deps b/tools/git-sync-deps
|
||||
index c7379c0b5c..f63d4d9ccf 100755
|
||||
--- a/tools/git-sync-deps
|
||||
+++ b/tools/git-sync-deps
|
||||
@@ -43,7 +43,7 @@ def git_executable():
|
||||
A string suitable for passing to subprocess functions, or None.
|
||||
"""
|
||||
envgit = os.environ.get('GIT_EXECUTABLE')
|
||||
- searchlist = ['git']
|
||||
+ searchlist = ['git', 'git.bat']
|
||||
if envgit:
|
||||
searchlist.insert(0, envgit)
|
||||
with open(os.devnull, 'w') as devnull:
|
||||
@@ -94,21 +94,25 @@ def is_git_toplevel(git, directory):
|
||||
try:
|
||||
toplevel = subprocess.check_output(
|
||||
[git, 'rev-parse', '--show-toplevel'], cwd=directory).strip()
|
||||
- return os.path.realpath(directory) == os.path.realpath(toplevel)
|
||||
+ return os.path.realpath(directory) == os.path.realpath(toplevel.decode())
|
||||
except subprocess.CalledProcessError:
|
||||
return False
|
||||
|
||||
|
||||
-def status(directory, checkoutable):
|
||||
- def truncate(s, length):
|
||||
+def status(directory, commithash, change):
|
||||
+ def truncate_beginning(s, length):
|
||||
+ return s if len(s) <= length else '...' + s[-(length-3):]
|
||||
+ def truncate_end(s, length):
|
||||
return s if len(s) <= length else s[:(length - 3)] + '...'
|
||||
+
|
||||
dlen = 36
|
||||
- directory = truncate(directory, dlen)
|
||||
- checkoutable = truncate(checkoutable, 40)
|
||||
- sys.stdout.write('%-*s @ %s\n' % (dlen, directory, checkoutable))
|
||||
+ directory = truncate_beginning(directory, dlen)
|
||||
+ commithash = truncate_end(commithash, 40)
|
||||
+ symbol = '>' if change else '@'
|
||||
+ sys.stdout.write('%-*s %s %s\n' % (dlen, directory, symbol, commithash))
|
||||
|
||||
|
||||
-def git_checkout_to_directory(git, repo, checkoutable, directory, verbose):
|
||||
+def git_checkout_to_directory(git, repo, commithash, directory, verbose):
|
||||
"""Checkout (and clone if needed) a Git repository.
|
||||
|
||||
Args:
|
||||
@@ -117,8 +121,7 @@ def git_checkout_to_directory(git, repo, checkoutable, directory, verbose):
|
||||
repo (string) the location of the repository, suitable
|
||||
for passing to `git clone`.
|
||||
|
||||
- checkoutable (string) a tag, branch, or commit, suitable for
|
||||
- passing to `git checkout`
|
||||
+ commithash (string) a commit, suitable for passing to `git checkout`
|
||||
|
||||
directory (string) the path into which the repository
|
||||
should be checked out.
|
||||
@@ -129,7 +132,12 @@ def git_checkout_to_directory(git, repo, checkoutable, directory, verbose):
|
||||
"""
|
||||
if not os.path.isdir(directory):
|
||||
subprocess.check_call(
|
||||
- [git, 'clone', '--quiet', repo, directory])
|
||||
+ [git, 'clone', '--quiet', '--no-checkout', repo, directory])
|
||||
+ subprocess.check_call([git, 'checkout', '--quiet', commithash],
|
||||
+ cwd=directory)
|
||||
+ if verbose:
|
||||
+ status(directory, commithash, True)
|
||||
+ return
|
||||
|
||||
if not is_git_toplevel(git, directory):
|
||||
# if the directory exists, but isn't a git repo, you will modify
|
||||
@@ -145,11 +153,11 @@ def git_checkout_to_directory(git, repo, checkoutable, directory, verbose):
|
||||
with open(os.devnull, 'w') as devnull:
|
||||
# If this fails, we will fetch before trying again. Don't spam user
|
||||
# with error infomation.
|
||||
- if 0 == subprocess.call([git, 'checkout', '--quiet', checkoutable],
|
||||
+ if 0 == subprocess.call([git, 'checkout', '--quiet', commithash],
|
||||
cwd=directory, stderr=devnull):
|
||||
# if this succeeds, skip slow `git fetch`.
|
||||
if verbose:
|
||||
- status(directory, checkoutable) # Success.
|
||||
+ status(directory, commithash, False) # Success.
|
||||
return
|
||||
|
||||
# If the repo has changed, always force use of the correct repo.
|
||||
@@ -159,18 +167,24 @@ def git_checkout_to_directory(git, repo, checkoutable, directory, verbose):
|
||||
|
||||
subprocess.check_call([git, 'fetch', '--quiet'], cwd=directory)
|
||||
|
||||
- subprocess.check_call([git, 'checkout', '--quiet', checkoutable], cwd=directory)
|
||||
+ subprocess.check_call([git, 'checkout', '--quiet', commithash], cwd=directory)
|
||||
|
||||
if verbose:
|
||||
- status(directory, checkoutable) # Success.
|
||||
+ status(directory, commithash, True) # Success.
|
||||
|
||||
|
||||
def parse_file_to_dict(path):
|
||||
dictionary = {}
|
||||
- execfile(path, dictionary)
|
||||
+ with open(path) as f:
|
||||
+ exec('def Var(x): return vars[x]\n' + f.read(), dictionary)
|
||||
return dictionary
|
||||
|
||||
|
||||
+def is_sha1_sum(s):
|
||||
+ """SHA1 sums are 160 bits, encoded as lowercase hexadecimal."""
|
||||
+ return len(s) == 40 and all(c in '0123456789abcdef' for c in s)
|
||||
+
|
||||
+
|
||||
def git_sync_deps(deps_file_path, command_line_os_requests, verbose):
|
||||
"""Grab dependencies, with optional platform support.
|
||||
|
||||
@@ -204,19 +218,19 @@ def git_sync_deps(deps_file_path, command_line_os_requests, verbose):
|
||||
raise Exception('%r is parent of %r' % (other_dir, directory))
|
||||
list_of_arg_lists = []
|
||||
for directory in sorted(dependencies):
|
||||
- if not isinstance(dependencies[directory], basestring):
|
||||
+ if not isinstance(dependencies[directory], str):
|
||||
if verbose:
|
||||
- print 'Skipping "%s".' % directory
|
||||
+ sys.stdout.write( 'Skipping "%s".\n' % directory)
|
||||
continue
|
||||
if '@' in dependencies[directory]:
|
||||
- repo, checkoutable = dependencies[directory].split('@', 1)
|
||||
+ repo, commithash = dependencies[directory].split('@', 1)
|
||||
else:
|
||||
- raise Exception("please specify commit or tag")
|
||||
+ raise Exception("please specify commit")
|
||||
|
||||
relative_directory = os.path.join(deps_file_directory, directory)
|
||||
|
||||
list_of_arg_lists.append(
|
||||
- (git, repo, checkoutable, relative_directory, verbose))
|
||||
+ (git, repo, commithash, relative_directory, verbose))
|
||||
|
||||
multithread(git_checkout_to_directory, list_of_arg_lists)
|
||||
|
@@ -1,13 +0,0 @@
|
||||
diff --git a/gn/BUILDCONFIG.gn b/gn/BUILDCONFIG.gn
|
||||
index 454334a..1797594 100644
|
||||
--- a/gn/BUILDCONFIG.gn
|
||||
+++ b/gn/BUILDCONFIG.gn
|
||||
@@ -80,7 +80,7 @@ if (current_cpu == "") {
|
||||
is_clang = is_android || is_ios || is_mac ||
|
||||
(cc == "clang" && cxx == "clang++") || clang_win != ""
|
||||
if (!is_clang && !is_win) {
|
||||
- is_clang = exec_script("gn/is_clang.py",
|
||||
+ is_clang = exec_script("//gn/is_clang.py",
|
||||
[
|
||||
cc,
|
||||
cxx,
|
@@ -2,8 +2,8 @@
|
||||
|
||||
set -ex
|
||||
|
||||
VKD3D_PROTON_VERSION="2.6"
|
||||
VKD3D_PROTON_COMMIT="3e5aab6fb3e18f81a71b339be4cb5cdf55140980"
|
||||
VKD3D_PROTON_VERSION="2.3.1"
|
||||
VKD3D_PROTON_COMMIT="3ed3526332f53d7d35cf1b685fa8096b01f26ff0"
|
||||
|
||||
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
||||
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
||||
|
@@ -10,7 +10,7 @@ fi
|
||||
|
||||
export CCACHE_COMPILERCHECK=content
|
||||
export CCACHE_COMPRESS=true
|
||||
export CCACHE_DIR=/cache/$CI_PROJECT_NAME/ccache
|
||||
export CCACHE_DIR=/cache/mesa/ccache
|
||||
export PATH=$CCACHE_PATH:$PATH
|
||||
|
||||
# CMake ignores $PATH, so we have to force CC/GCC to the ccache versions.
|
||||
|
@@ -4,25 +4,16 @@ set -ex
|
||||
|
||||
if [ $DEBIAN_ARCH = arm64 ]; then
|
||||
ARCH_PACKAGES="firmware-qcom-media
|
||||
firmware-linux-nonfree
|
||||
libfontconfig1
|
||||
libgl1
|
||||
libglu1-mesa
|
||||
libvulkan-dev
|
||||
"
|
||||
elif [ $DEBIAN_ARCH = amd64 ]; then
|
||||
ARCH_PACKAGES="firmware-amd-graphics
|
||||
inetutils-syslogd
|
||||
iptables
|
||||
libcap2
|
||||
libelf1
|
||||
libfdt1
|
||||
libllvm11
|
||||
libva2
|
||||
libva-drm2
|
||||
socat
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
"
|
||||
fi
|
||||
|
||||
@@ -36,8 +27,6 @@ INSTALL_CI_FAIRY_PACKAGES="git
|
||||
apt-get -y install --no-install-recommends \
|
||||
$ARCH_PACKAGES \
|
||||
$INSTALL_CI_FAIRY_PACKAGES \
|
||||
$EXTRA_LOCAL_PACKAGES \
|
||||
bash \
|
||||
ca-certificates \
|
||||
firmware-realtek \
|
||||
initramfs-tools \
|
||||
@@ -81,7 +70,8 @@ apt-get -y install --no-install-recommends \
|
||||
waffle-utils \
|
||||
wget \
|
||||
xinit \
|
||||
xserver-xorg-core
|
||||
xserver-xorg-core \
|
||||
xz-utils
|
||||
|
||||
# Needed for ci-fairy, this revision is able to upload files to
|
||||
# MinIO and doesn't depend on git
|
||||
@@ -104,6 +94,10 @@ chmod +x /init
|
||||
# Strip the image to a small minimal system without removing the debian
|
||||
# toolchain.
|
||||
|
||||
# xz compress firmware so it doesn't waste RAM at runtime on ramdisk systems
|
||||
find /lib/firmware -type f -print0 | \
|
||||
xargs -0r -P4 -n4 xz -T1 -C crc32
|
||||
|
||||
# Copy timezone file and remove tzdata package
|
||||
rm -rf /etc/localtime
|
||||
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
||||
@@ -172,7 +166,9 @@ UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\
|
||||
"insserv "\
|
||||
"udev "\
|
||||
"init-system-helpers "\
|
||||
"bash "\
|
||||
"cpio "\
|
||||
"xz-utils "\
|
||||
"passwd "\
|
||||
"libsemanage1 libsemanage-common "\
|
||||
"libsepol1 "\
|
||||
@@ -217,7 +213,7 @@ rm -rf var/* opt srv share
|
||||
# ca-certificates are in /etc drop the source
|
||||
rm -rf usr/share/ca-certificates
|
||||
|
||||
# No need for completions
|
||||
# No bash, no need for completions
|
||||
rm -rf usr/share/bash-completion
|
||||
|
||||
# No zsh, no need for comletions
|
||||
|
@@ -30,7 +30,7 @@ sh .gitlab-ci/container/create-android-cross-file.sh /$ndk arm-linux-androideabi
|
||||
|
||||
# Not using build-libdrm.sh because we don't want its cleanup after building
|
||||
# each arch. Fetch and extract now.
|
||||
export LIBDRM_VERSION=libdrm-2.4.110
|
||||
export LIBDRM_VERSION=libdrm-2.4.109
|
||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
|
||||
tar -xf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
|
||||
|
||||
|
@@ -9,7 +9,6 @@ echo 'deb https://deb.debian.org/debian buster main' >/etc/apt/sources.list.d/bu
|
||||
apt-get update
|
||||
|
||||
apt-get -y install \
|
||||
${EXTRA_LOCAL_PACKAGES} \
|
||||
abootimg \
|
||||
autoconf \
|
||||
automake \
|
||||
|
@@ -31,9 +31,3 @@ arch=armhf . .gitlab-ci/container/baremetal_build.sh
|
||||
# This firmware file from Debian bullseye causes hangs
|
||||
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a530_pfp.fw?id=d5f9eea5a251d43412b07f5295d03e97b89ac4a5 \
|
||||
-O /rootfs-arm64/lib/firmware/qcom/a530_pfp.fw
|
||||
|
||||
mkdir -p /baremetal-files/jetson-nano/boot/
|
||||
ln -s \
|
||||
/baremetal-files/Image \
|
||||
/baremetal-files/tegra210-p3450-0000.dtb \
|
||||
/baremetal-files/jetson-nano/boot/
|
||||
|
@@ -44,8 +44,6 @@ apt-get install -y --no-remove \
|
||||
llvm-11-dev \
|
||||
llvm-9-dev \
|
||||
ocl-icd-opencl-dev \
|
||||
python3-freezegun \
|
||||
python3-pytest \
|
||||
procps \
|
||||
spirv-tools \
|
||||
strace \
|
||||
|
@@ -64,7 +64,6 @@ apt-get install -y --no-remove \
|
||||
python3-lxml \
|
||||
python3-renderdoc \
|
||||
python3-simplejson \
|
||||
socat \
|
||||
spirv-tools \
|
||||
sysvinit-core \
|
||||
wget
|
||||
|
@@ -27,7 +27,6 @@ dnf install -y --setopt=install_weak_deps=False \
|
||||
gettext \
|
||||
kernel-headers \
|
||||
llvm-devel \
|
||||
clang-devel \
|
||||
meson \
|
||||
"pkgconfig(dri2proto)" \
|
||||
"pkgconfig(expat)" \
|
||||
@@ -64,8 +63,6 @@ dnf install -y --setopt=install_weak_deps=False \
|
||||
python3-devel \
|
||||
python3-mako \
|
||||
vulkan-headers \
|
||||
spirv-tools-devel \
|
||||
spirv-llvm-translator-devel \
|
||||
$EPHEMERAL
|
||||
|
||||
|
||||
|
@@ -1,420 +0,0 @@
|
||||
# Docker image tag helper templates
|
||||
|
||||
.incorporate-templates-commit:
|
||||
variables:
|
||||
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
|
||||
.incorporate-base-tag+templates-commit:
|
||||
variables:
|
||||
FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
|
||||
.set-image:
|
||||
extends:
|
||||
- .incorporate-templates-commit
|
||||
variables:
|
||||
MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
|
||||
image: "$MESA_IMAGE"
|
||||
|
||||
.set-image-base-tag:
|
||||
extends:
|
||||
- .set-image
|
||||
- .incorporate-base-tag+templates-commit
|
||||
variables:
|
||||
MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${FDO_DISTRIBUTION_TAG}"
|
||||
|
||||
|
||||
# Build the CI docker images.
|
||||
#
|
||||
# MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the
|
||||
# image doesn't exist yet, the container stage job generates it.
|
||||
#
|
||||
# In order to generate a new image, one should generally change the tag.
|
||||
# While removing the image from the registry would also work, that's not
|
||||
# recommended except for ephemeral images during development: Replacing
|
||||
# an image after a significant amount of time might pull in newer
|
||||
# versions of gcc/clang or other packages, which might break the build
|
||||
# with older commits using the same tag.
|
||||
#
|
||||
# After merging a change resulting in generating a new image to the
|
||||
# main repository, it's recommended to remove the image from the source
|
||||
# repository's container registry, so that the image from the main
|
||||
# repository's registry will be used there as well.
|
||||
|
||||
.container:
|
||||
stage: container
|
||||
extends:
|
||||
- .container-rules
|
||||
- .incorporate-templates-commit
|
||||
variables:
|
||||
FDO_DISTRIBUTION_VERSION: bullseye-slim
|
||||
FDO_REPO_SUFFIX: $CI_JOB_NAME
|
||||
FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
|
||||
# no need to pull the whole repo to build the container image
|
||||
GIT_STRATEGY: none
|
||||
|
||||
.use-base-image:
|
||||
extends:
|
||||
- .container
|
||||
- .incorporate-base-tag+templates-commit
|
||||
# Don't want the .container rules
|
||||
- .ci-run-policy
|
||||
|
||||
# Debian 11 based x86 build image base
|
||||
debian/x86_build-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_build-base ${DEBIAN_BASE_TAG}
|
||||
|
||||
.use-debian/x86_build-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_BUILD_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_ARTIFACTS_BASE_TAG: *debian-x86_build-base
|
||||
needs:
|
||||
- debian/x86_build-base
|
||||
|
||||
# Debian 11 based x86 main build image
|
||||
debian/x86_build:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/x86_build:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_BUILD_IMAGE_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_build
|
||||
needs:
|
||||
- debian/x86_build
|
||||
|
||||
# Debian 11 based i386 cross-build image
|
||||
debian/i386_build:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-i386_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/i386_build:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_IMAGE_PATH: "debian/i386_build"
|
||||
MESA_IMAGE_TAG: *debian-i386_build
|
||||
needs:
|
||||
- debian/i386_build
|
||||
|
||||
# Debian 11 based ppc64el cross-build image
|
||||
debian/ppc64el_build:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-ppc64el_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/ppc64el_build:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_IMAGE_PATH: "debian/ppc64el_build"
|
||||
MESA_IMAGE_TAG: *debian-ppc64el_build
|
||||
needs:
|
||||
- debian/ppc64el_build
|
||||
|
||||
# Debian 11 based s390x cross-build image
|
||||
debian/s390x_build:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-s390x_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/s390x_build:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_IMAGE_PATH: "debian/s390x_build"
|
||||
MESA_IMAGE_TAG: *debian-s390x_build
|
||||
needs:
|
||||
- debian/s390x_build
|
||||
|
||||
# Android NDK cross-build image
|
||||
debian/android_build:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
|
||||
|
||||
.use-debian/android_build:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_build-base
|
||||
MESA_IMAGE_PATH: "debian/android_build"
|
||||
MESA_IMAGE_TAG: *debian-android_build
|
||||
needs:
|
||||
- debian/android_build
|
||||
|
||||
# Debian 11 based x86 test image base
|
||||
debian/x86_test-base:
|
||||
extends: debian/x86_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_test-base ${DEBIAN_BASE_TAG}
|
||||
|
||||
.use-debian/x86_test-base:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .use-base-image
|
||||
variables:
|
||||
MESA_BASE_IMAGE: ${DEBIAN_X86_TEST_BASE_IMAGE}
|
||||
MESA_BASE_TAG: *debian-x86_test-base
|
||||
needs:
|
||||
- debian/x86_test-base
|
||||
|
||||
# Debian 11 based x86 test image for GL
|
||||
debian/x86_test-gl:
|
||||
extends: .use-debian/x86_test-base
|
||||
variables:
|
||||
FDO_DISTRIBUTION_EXEC: 'env KERNEL_URL=${KERNEL_URL} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
|
||||
KERNEL_URL: &kernel-rootfs-url "https://gitlab.freedesktop.org/gfx-ci/linux/-/archive/v5.16-for-mesa-ci-991fec6622591/linux-v5.16-for-mesa-ci-991fec6622591.tar.bz2"
|
||||
MESA_IMAGE_TAG: &debian-x86_test-gl ${DEBIAN_X86_TEST_GL_TAG}
|
||||
|
||||
.use-debian/x86_test-gl:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_test-base
|
||||
MESA_IMAGE_PATH: ${DEBIAN_X86_TEST_IMAGE_PATH}
|
||||
MESA_IMAGE_TAG: *debian-x86_test-gl
|
||||
needs:
|
||||
- debian/x86_test-gl
|
||||
|
||||
# Debian 11 based x86 test image for VK
|
||||
debian/x86_test-vk:
|
||||
extends: .use-debian/x86_test-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-x86_test-vk ${DEBIAN_X86_TEST_VK_TAG}
|
||||
|
||||
.use-debian/x86_test-vk:
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_test-base
|
||||
MESA_IMAGE_PATH: "debian/x86_test-vk"
|
||||
MESA_IMAGE_TAG: *debian-x86_test-vk
|
||||
needs:
|
||||
- debian/x86_test-vk
|
||||
|
||||
# Debian 11 based ARM build image
|
||||
debian/arm_build:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
tags:
|
||||
- aarch64
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-arm_build ${DEBIAN_BASE_TAG}
|
||||
|
||||
.use-debian/arm_build:
|
||||
extends:
|
||||
- .set-image
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "debian/arm_build"
|
||||
MESA_IMAGE_TAG: *debian-arm_build
|
||||
MESA_ARTIFACTS_TAG: *debian-arm_build
|
||||
needs:
|
||||
- debian/arm_build
|
||||
|
||||
|
||||
# Fedora 34 based x86 build image
|
||||
fedora/x86_build:
|
||||
extends:
|
||||
- .fdo.container-build@fedora
|
||||
- .container
|
||||
variables:
|
||||
FDO_DISTRIBUTION_VERSION: 34
|
||||
MESA_IMAGE_TAG: &fedora-x86_build ${FEDORA_X86_BUILD_TAG}
|
||||
|
||||
.use-fedora/x86_build:
|
||||
extends:
|
||||
- .set-image
|
||||
variables:
|
||||
MESA_IMAGE_PATH: "fedora/x86_build"
|
||||
MESA_IMAGE_TAG: *fedora-x86_build
|
||||
needs:
|
||||
- fedora/x86_build
|
||||
|
||||
|
||||
.kernel+rootfs:
|
||||
extends:
|
||||
- .ci-run-policy
|
||||
stage: container
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
KERNEL_URL: *kernel-rootfs-url
|
||||
MESA_ROOTFS_TAG: &kernel-rootfs ${KERNEL_ROOTFS_TAG}
|
||||
DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
script:
|
||||
- .gitlab-ci/container/lava_build.sh
|
||||
|
||||
kernel+rootfs_amd64:
|
||||
extends:
|
||||
- .use-debian/x86_build-base
|
||||
- .kernel+rootfs
|
||||
image: "$FDO_BASE_IMAGE"
|
||||
variables:
|
||||
DEBIAN_ARCH: "amd64"
|
||||
DISTRIBUTION_TAG: &distribution-tag-amd64 "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
|
||||
kernel+rootfs_arm64:
|
||||
extends:
|
||||
- .use-debian/arm_build
|
||||
- .kernel+rootfs
|
||||
tags:
|
||||
- aarch64
|
||||
variables:
|
||||
DEBIAN_ARCH: "arm64"
|
||||
|
||||
kernel+rootfs_armhf:
|
||||
extends:
|
||||
- kernel+rootfs_arm64
|
||||
variables:
|
||||
DEBIAN_ARCH: "armhf"
|
||||
|
||||
# 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-amd64:
|
||||
variables:
|
||||
DISTRIBUTION_TAG: *distribution-tag-amd64
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
|
||||
# x86 image with ARM64 & armhf kernel & rootfs for baremetal testing
|
||||
debian/arm_test:
|
||||
extends:
|
||||
- .fdo.container-build@debian
|
||||
- .container
|
||||
# Don't want the .container rules
|
||||
- .ci-run-policy
|
||||
needs:
|
||||
- kernel+rootfs_arm64
|
||||
- kernel+rootfs_armhf
|
||||
variables:
|
||||
FDO_DISTRIBUTION_EXEC: 'env ARTIFACTS_PREFIX=https://${MINIO_HOST}/mesa-lava ARTIFACTS_SUFFIX=${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT} CI_PROJECT_PATH=${CI_PROJECT_PATH} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} FDO_UPSTREAM_REPO=${FDO_UPSTREAM_REPO} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
|
||||
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
MESA_ARM_BUILD_TAG: *debian-arm_build
|
||||
MESA_IMAGE_TAG: &debian-arm_test ${DEBIAN_BASE_TAG}
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
|
||||
.use-debian/arm_test:
|
||||
image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
|
||||
variables:
|
||||
MESA_ARM_BUILD_TAG: *debian-arm_build
|
||||
MESA_IMAGE_PATH: "debian/arm_test"
|
||||
MESA_IMAGE_TAG: *debian-arm_test
|
||||
MESA_ROOTFS_TAG: *kernel-rootfs
|
||||
needs:
|
||||
- debian/arm_test
|
||||
|
||||
# Native Windows docker builds
|
||||
#
|
||||
# Unlike the above Linux-based builds - including MinGW builds which
|
||||
# cross-compile for Windows - which use the freedesktop ci-templates, we
|
||||
# cannot use the same scheme here. As Windows lacks support for
|
||||
# Docker-in-Docker, and Podman does not run natively on Windows, we have
|
||||
# to open-code much of the same ourselves.
|
||||
#
|
||||
# This is achieved by first running in a native Windows shell instance
|
||||
# (host PowerShell) in the container stage to build and push the image,
|
||||
# then in the build stage by executing inside Docker.
|
||||
|
||||
.windows-docker-vs2019:
|
||||
variables:
|
||||
MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}"
|
||||
MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}"
|
||||
|
||||
.windows_container_build:
|
||||
inherit:
|
||||
default: false
|
||||
extends:
|
||||
- .container
|
||||
- .windows-docker-vs2019
|
||||
rules:
|
||||
- if: '$MICROSOFT_FARM == "offline"'
|
||||
when: never
|
||||
- !reference [.container-rules, rules]
|
||||
variables:
|
||||
GIT_STRATEGY: fetch # we do actually need the full repository though
|
||||
MESA_BASE_IMAGE: None
|
||||
tags:
|
||||
- windows
|
||||
- shell
|
||||
- "1809"
|
||||
- mesa
|
||||
script:
|
||||
- .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE ${DOCKERFILE} ${MESA_BASE_IMAGE}
|
||||
|
||||
windows_build_vs2019:
|
||||
inherit:
|
||||
default: false
|
||||
extends:
|
||||
- .windows_container_build
|
||||
variables:
|
||||
MESA_IMAGE_PATH: &windows_build_image_path ${WINDOWS_X64_BUILD_PATH}
|
||||
MESA_IMAGE_TAG: &windows_build_image_tag ${WINDOWS_X64_BUILD_TAG}
|
||||
DOCKERFILE: Dockerfile_build
|
||||
timeout: 2h 30m # LLVM takes ages
|
||||
|
||||
windows_test_vs2019:
|
||||
inherit:
|
||||
default: false
|
||||
extends:
|
||||
- .windows_container_build
|
||||
rules:
|
||||
- if: '$MICROSOFT_FARM == "offline"'
|
||||
when: never
|
||||
- !reference [.ci-run-policy, rules]
|
||||
variables:
|
||||
MESA_IMAGE_PATH: &windows_test_image_path ${WINDOWS_X64_TEST_PATH}
|
||||
MESA_IMAGE_TAG: &windows_test_image_tag ${WINDOWS_X64_BUILD_TAG}--${WINDOWS_X64_TEST_TAG}
|
||||
DOCKERFILE: Dockerfile_test
|
||||
# Right now this only needs the VS install to get DXIL.dll. Maybe see about decoupling this at some point
|
||||
MESA_BASE_IMAGE_PATH: *windows_build_image_path
|
||||
MESA_BASE_IMAGE_TAG: *windows_build_image_tag
|
||||
MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_BASE_IMAGE_PATH}:${MESA_BASE_IMAGE_TAG}"
|
||||
script:
|
||||
- .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE Dockerfile_test ${MESA_BASE_IMAGE}
|
||||
needs:
|
||||
- windows_build_vs2019
|
||||
|
||||
.use-windows_build_vs2019:
|
||||
inherit:
|
||||
default: false
|
||||
extends: .windows-docker-vs2019
|
||||
image: "$MESA_IMAGE"
|
||||
variables:
|
||||
MESA_IMAGE_PATH: *windows_build_image_path
|
||||
MESA_IMAGE_TAG: *windows_build_image_tag
|
||||
needs:
|
||||
- windows_build_vs2019
|
||||
|
||||
.use-windows_test_vs2019:
|
||||
inherit:
|
||||
default: false
|
||||
extends: .windows-docker-vs2019
|
||||
image: "$MESA_IMAGE"
|
||||
variables:
|
||||
MESA_IMAGE_PATH: *windows_test_image_path
|
||||
MESA_IMAGE_TAG: *windows_test_image_tag
|
@@ -34,7 +34,6 @@ if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
||||
DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb"
|
||||
DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb"
|
||||
DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb"
|
||||
DEVICE_TREES+=" arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dtb"
|
||||
DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots.dtb"
|
||||
KERNEL_IMAGE_NAME="Image"
|
||||
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
||||
@@ -52,7 +51,7 @@ else
|
||||
DEFCONFIG="arch/x86/configs/x86_64_defconfig"
|
||||
DEVICE_TREES=""
|
||||
KERNEL_IMAGE_NAME="bzImage"
|
||||
ARCH_PACKAGES="libasound2-dev libcap-dev libfdt-dev libva-dev wayland-protocols"
|
||||
ARCH_PACKAGES="libva-dev"
|
||||
fi
|
||||
|
||||
# Determine if we're in a cross build.
|
||||
@@ -77,14 +76,12 @@ apt-get install -y --no-remove \
|
||||
${ARCH_PACKAGES} \
|
||||
automake \
|
||||
bc \
|
||||
clang \
|
||||
cmake \
|
||||
debootstrap \
|
||||
git \
|
||||
glslang-tools \
|
||||
libdrm-dev \
|
||||
libegl1-mesa-dev \
|
||||
libxext-dev \
|
||||
libfontconfig-dev \
|
||||
libgbm-dev \
|
||||
libgl-dev \
|
||||
@@ -129,7 +126,7 @@ fi
|
||||
|
||||
############### Building
|
||||
STRIP_CMD="${GCC_ARCH}-strip"
|
||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH
|
||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}
|
||||
|
||||
|
||||
############### Build apitrace
|
||||
@@ -168,26 +165,10 @@ if [[ "$DEBIAN_ARCH" = "amd64" ]]; then
|
||||
mv /va/bin/* /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/
|
||||
fi
|
||||
|
||||
############### Build Crosvm
|
||||
if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
|
||||
. .gitlab-ci/container/build-crosvm.sh
|
||||
mv /usr/local/bin/crosvm /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/
|
||||
mv /usr/local/lib/$GCC_ARCH/libvirglrenderer.* /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH/
|
||||
fi
|
||||
|
||||
############### Build libdrm
|
||||
EXTRA_MESON_ARGS+=" -D prefix=/libdrm"
|
||||
. .gitlab-ci/container/build-libdrm.sh
|
||||
|
||||
|
||||
############### 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
|
||||
|
||||
|
||||
############### Build kernel
|
||||
. .gitlab-ci/container/build-kernel.sh
|
||||
|
||||
@@ -218,6 +199,7 @@ rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
|
||||
# Dependencies pulled during the creation of the rootfs may overwrite
|
||||
# the built libdrm. Hence, we add it after the rootfs has been already
|
||||
# created.
|
||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH
|
||||
find /libdrm/ -name lib\*\.so\* | xargs cp -t /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH/.
|
||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/libdrm/
|
||||
cp -Rp /libdrm/share /lava-files/rootfs-${DEBIAN_ARCH}/libdrm/share
|
||||
|
@@ -72,11 +72,9 @@ CONFIG_PARPORT_PC=y
|
||||
CONFIG_PARPORT_SERIAL=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_CHROME_PLATFORMS=y
|
||||
CONFIG_KVM_AMD=m
|
||||
|
||||
#options for Intel devices
|
||||
CONFIG_MFD_INTEL_LPSS_PCI=y
|
||||
CONFIG_KVM_INTEL=m
|
||||
|
||||
#options for KVM guests
|
||||
CONFIG_FUSE_FS=y
|
||||
@@ -100,6 +98,3 @@ CONFIG_CRYPTO_DEV_VIRTIO=y
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_BLK_MQ_VIRTIO=y
|
||||
CONFIG_TUN=y
|
||||
CONFIG_VSOCKETS=y
|
||||
CONFIG_VIRTIO_VSOCKETS=y
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
|
@@ -2,9 +2,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
VSOCK_STDOUT=$1
|
||||
VSOCK_STDERR=$2
|
||||
VSOCK_TEMP_DIR=$3
|
||||
export DEQP_TEMP_DIR="$1"
|
||||
|
||||
mount -t proc none /proc
|
||||
mount -t sysfs none /sys
|
||||
@@ -12,31 +10,29 @@ mkdir -p /dev/pts
|
||||
mount -t devpts devpts /dev/pts
|
||||
mount -t tmpfs tmpfs /tmp
|
||||
|
||||
. ${VSOCK_TEMP_DIR}/crosvm-env.sh
|
||||
. $DEQP_TEMP_DIR/crosvm-env.sh
|
||||
|
||||
# .gitlab-ci.yml script variable is using relative paths to install directory,
|
||||
# so change to that dir before running `crosvm-script`
|
||||
cd "${CI_PROJECT_DIR}"
|
||||
|
||||
# The exception is the dEQP binary, as it needs to run from its own directory
|
||||
[ -z "${DEQP_BIN_DIR}" ] || cd "${DEQP_BIN_DIR}"
|
||||
# The exception is the dEQP binary, since it needs to run from the directory
|
||||
# it's in
|
||||
if [ -d "${DEQP_BIN_DIR}" ]
|
||||
then
|
||||
cd "${DEQP_BIN_DIR}"
|
||||
fi
|
||||
|
||||
# Use a FIFO to collect relevant error messages
|
||||
STDERR_FIFO=/tmp/crosvm-stderr.fifo
|
||||
mkfifo -m 600 ${STDERR_FIFO}
|
||||
dmesg --level crit,err,warn -w >> $DEQP_TEMP_DIR/stderr &
|
||||
|
||||
dmesg --level crit,err,warn -w > ${STDERR_FIFO} &
|
||||
DMESG_PID=$!
|
||||
|
||||
# Transfer the errors and crosvm-script output via a pair of virtio-vsocks
|
||||
socat -d -u pipe:${STDERR_FIFO} vsock-listen:${VSOCK_STDERR} &
|
||||
socat -d -U vsock-listen:${VSOCK_STDOUT} \
|
||||
system:"stdbuf -eL sh ${VSOCK_TEMP_DIR}/crosvm-script.sh 2> ${STDERR_FIFO}; echo \$? > ${VSOCK_TEMP_DIR}/exit_code",nofork
|
||||
|
||||
kill ${DMESG_PID}
|
||||
wait
|
||||
set +e
|
||||
stdbuf -oL sh $DEQP_TEMP_DIR/crosvm-script.sh 2>> $DEQP_TEMP_DIR/stderr >> $DEQP_TEMP_DIR/stdout
|
||||
echo $? > $DEQP_TEMP_DIR/exit_code
|
||||
set -e
|
||||
|
||||
sync
|
||||
sleep 1
|
||||
|
||||
poweroff -d -n -f || true
|
||||
|
||||
sleep 1 # Just in case init would exit before the kernel shuts down the VM
|
||||
|
@@ -1,125 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
set -ex
|
||||
|
||||
#
|
||||
# Helper to generate CIDs for virtio-vsock based communication with processes
|
||||
# running inside crosvm guests.
|
||||
#
|
||||
# A CID is a 32-bit Context Identifier to be assigned to a crosvm instance
|
||||
# and must be unique across the host system. For this purpose, let's take
|
||||
# the least significant 25 bits from CI_JOB_ID as a base and generate a 7-bit
|
||||
# prefix number to handle up to 128 concurrent crosvm instances per job runner.
|
||||
#
|
||||
# As a result, the following variables are set:
|
||||
# - VSOCK_CID: the crosvm unique CID to be passed as a run argument
|
||||
#
|
||||
# - VSOCK_STDOUT, VSOCK_STDERR: the port numbers the guest should accept
|
||||
# vsock connections on in order to transfer output messages
|
||||
#
|
||||
# - VSOCK_TEMP_DIR: the temporary directory path used to pass additional
|
||||
# context data towards the guest
|
||||
#
|
||||
set_vsock_context() {
|
||||
[ -n "${CI_JOB_ID}" ] || {
|
||||
echo "Missing or unset CI_JOB_ID env variable" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
local dir_prefix="/tmp-vsock."
|
||||
local cid_prefix=0
|
||||
unset VSOCK_TEMP_DIR
|
||||
|
||||
while [ ${cid_prefix} -lt 128 ]; do
|
||||
VSOCK_TEMP_DIR=${dir_prefix}${cid_prefix}
|
||||
mkdir "${VSOCK_TEMP_DIR}" >/dev/null 2>&1 && break || unset VSOCK_TEMP_DIR
|
||||
cid_prefix=$((cid_prefix + 1))
|
||||
done
|
||||
|
||||
[ -n "${VSOCK_TEMP_DIR}" ] || return 1
|
||||
|
||||
VSOCK_CID=$(((CI_JOB_ID & 0x1ffffff) | ((cid_prefix & 0x7f) << 25)))
|
||||
VSOCK_STDOUT=5001
|
||||
VSOCK_STDERR=5002
|
||||
|
||||
return 0
|
||||
}
|
||||
# This script can be called concurrently, pass arguments and env in a
|
||||
# per-instance tmp dir
|
||||
DEQP_TEMP_DIR=$(mktemp -d /tmp.XXXXXXXXXX)
|
||||
export DEQP_TEMP_DIR
|
||||
|
||||
# The dEQP binary needs to run from the directory it's in
|
||||
if [ -n "${1##*.sh}" ] && [ -z "${1##*"deqp"*}" ]; then
|
||||
DEQP_BIN_DIR=$(dirname "$1")
|
||||
export DEQP_BIN_DIR
|
||||
DEQP_BIN_DIR=$(dirname "$1")
|
||||
export DEQP_BIN_DIR
|
||||
fi
|
||||
|
||||
set_vsock_context || { echo "Could not generate crosvm vsock CID" >&2; exit 1; }
|
||||
|
||||
# Ensure cleanup on script exit
|
||||
trap 'exit ${exit_code}' INT TERM
|
||||
trap 'exit_code=$?; [ -z "${CROSVM_PID}${SOCAT_PIDS}" ] || kill ${CROSVM_PID} ${SOCAT_PIDS} >/dev/null 2>&1 || true; rm -rf ${VSOCK_TEMP_DIR}' EXIT
|
||||
|
||||
# Securely pass the current variables to the crosvm environment
|
||||
CI_COMMON="$CI_PROJECT_DIR"/install/common
|
||||
echo "Variables passed through:"
|
||||
SCRIPT_DIR=$(readlink -en "${0%/*}")
|
||||
${SCRIPT_DIR}/common/generate-env.sh | tee ${VSOCK_TEMP_DIR}/crosvm-env.sh
|
||||
"${CI_COMMON}"/generate-env.sh | tee ${DEQP_TEMP_DIR}/crosvm-env.sh
|
||||
|
||||
# Set the crosvm-script as the arguments of the current script
|
||||
echo "$@" > ${VSOCK_TEMP_DIR}/crosvm-script.sh
|
||||
CROSVM_KERNEL_ARGS="quiet console=null root=my_root rw rootfstype=virtiofs init=$CI_PROJECT_DIR/install/crosvm-init.sh ip=192.168.30.2::192.168.30.1:255.255.255.0:crosvm:eth0 -- $DEQP_TEMP_DIR"
|
||||
|
||||
# Setup networking
|
||||
/usr/sbin/iptables-legacy -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
# Set the crosvm-script as the arguments of the current script.
|
||||
echo "$@" > $DEQP_TEMP_DIR/crosvm-script.sh
|
||||
|
||||
# Start background processes to receive output from guest
|
||||
socat -u vsock-connect:${VSOCK_CID}:${VSOCK_STDERR},retry=200,interval=0.1 stderr &
|
||||
SOCAT_PIDS=$!
|
||||
socat -u vsock-connect:${VSOCK_CID}:${VSOCK_STDOUT},retry=200,interval=0.1 stdout &
|
||||
SOCAT_PIDS="${SOCAT_PIDS} $!"
|
||||
|
||||
# Prepare to start crosvm
|
||||
unset DISPLAY
|
||||
unset XDG_RUNTIME_DIR
|
||||
|
||||
CROSVM_KERN_ARGS="quiet console=null root=my_root rw rootfstype=virtiofs ip=192.168.30.2::192.168.30.1:255.255.255.0:crosvm:eth0"
|
||||
CROSVM_KERN_ARGS="${CROSVM_KERN_ARGS} init=${SCRIPT_DIR}/crosvm-init.sh -- ${VSOCK_STDOUT} ${VSOCK_STDERR} ${VSOCK_TEMP_DIR}"
|
||||
/usr/sbin/iptables-legacy -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
[ "${CROSVM_GALLIUM_DRIVER}" = "llvmpipe" ] && \
|
||||
CROSVM_LIBGL_ALWAYS_SOFTWARE=true || CROSVM_LIBGL_ALWAYS_SOFTWARE=false
|
||||
# Send output from guest to host
|
||||
touch $DEQP_TEMP_DIR/stderr $DEQP_TEMP_DIR/stdout
|
||||
tail -f $DEQP_TEMP_DIR/stderr >> /dev/stderr &
|
||||
ERR_TAIL_PID=$!
|
||||
tail -f $DEQP_TEMP_DIR/stdout >> /dev/stdout &
|
||||
OUT_TAIL_PID=$!
|
||||
|
||||
set +e -x
|
||||
trap "exit \$exit_code" INT TERM
|
||||
trap "exit_code=\$?; kill $ERR_TAIL_PID $OUT_TAIL_PID; rm -rf $DEQP_TEMP_DIR" EXIT
|
||||
|
||||
# We aren't testing the host driver here, so we don't need to validate NIR on the host
|
||||
NIR_DEBUG="novalidate" \
|
||||
LIBGL_ALWAYS_SOFTWARE=${CROSVM_LIBGL_ALWAYS_SOFTWARE} \
|
||||
GALLIUM_DRIVER=${CROSVM_GALLIUM_DRIVER} \
|
||||
crosvm run \
|
||||
--gpu "${CROSVM_GPU_ARGS}" -m 4096 -c 2 --disable-sandbox \
|
||||
--shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
|
||||
--host_ip "192.168.30.1" --netmask "255.255.255.0" --mac "AA:BB:CC:00:00:12" \
|
||||
--cid ${VSOCK_CID} -p "${CROSVM_KERN_ARGS}" \
|
||||
/lava-files/${KERNEL_IMAGE_NAME:-bzImage} > ${VSOCK_TEMP_DIR}/crosvm 2>&1 &
|
||||
# We aren't testing LLVMPipe here, so we don't need to validate NIR on the host
|
||||
NIR_DEBUG="novalidate" LIBGL_ALWAYS_SOFTWARE="true" GALLIUM_DRIVER="$CROSVM_GALLIUM_DRIVER" crosvm run \
|
||||
--gpu "$CROSVM_GPU_ARGS" \
|
||||
-m 4096 \
|
||||
-c 2 \
|
||||
--disable-sandbox \
|
||||
--shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
|
||||
--host_ip=192.168.30.1 --netmask=255.255.255.0 --mac "AA:BB:CC:00:00:12" \
|
||||
-p "$CROSVM_KERNEL_ARGS" \
|
||||
/lava-files/bzImage > $DEQP_TEMP_DIR/crosvm 2>&1
|
||||
|
||||
# Wait for crosvm process to terminate
|
||||
CROSVM_PID=$!
|
||||
wait ${CROSVM_PID}
|
||||
CROSVM_RET=$?
|
||||
unset CROSVM_PID
|
||||
RET=$(cat $DEQP_TEMP_DIR/exit_code || true)
|
||||
|
||||
[ ${CROSVM_RET} -eq 0 ] && {
|
||||
# socat background processes terminate gracefully on remote peers exit
|
||||
wait
|
||||
unset SOCAT_PIDS
|
||||
# The actual return code is the crosvm guest script's exit code
|
||||
CROSVM_RET=$(cat ${VSOCK_TEMP_DIR}/exit_code 2>/dev/null)
|
||||
# Force error when the guest script's exit code is not available
|
||||
CROSVM_RET=${CROSVM_RET:-1}
|
||||
}
|
||||
# Got no exit code from the script, show crosvm output to help with debugging
|
||||
[ -n "$RET" ] || cat $DEQP_TEMP_DIR/crosvm || true
|
||||
|
||||
# Show crosvm output on error to help with debugging
|
||||
[ ${CROSVM_RET} -eq 0 ] || {
|
||||
set +x
|
||||
echo "Dumping crosvm output.." >&2
|
||||
cat ${VSOCK_TEMP_DIR}/crosvm >&2
|
||||
set -x
|
||||
}
|
||||
|
||||
exit ${CROSVM_RET}
|
||||
exit ${RET:-1}
|
||||
|
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo -e "\e[0Ksection_start:$(date +%s):test_setup[collapsed=true]\r\e[0Kpreparing test setup"
|
||||
|
||||
set -ex
|
||||
|
||||
# Needed so configuration files can contain paths to files in /install
|
||||
@@ -22,15 +20,6 @@ export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.${VK_C
|
||||
RESULTS=`pwd`/${DEQP_RESULTS_DIR:-results}
|
||||
mkdir -p $RESULTS
|
||||
|
||||
# Ensure Mesa Shader Cache resides on tmpfs.
|
||||
SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
|
||||
SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
|
||||
|
||||
findmnt -n tmpfs ${SHADER_CACHE_HOME} || findmnt -n tmpfs ${SHADER_CACHE_DIR} || {
|
||||
mkdir -p ${SHADER_CACHE_DIR}
|
||||
mount -t tmpfs -o nosuid,nodev,size=2G,mode=1755 tmpfs ${SHADER_CACHE_DIR}
|
||||
}
|
||||
|
||||
HANG_DETECTION_CMD=""
|
||||
|
||||
if [ -z "$DEQP_SUITE" ]; then
|
||||
@@ -123,6 +112,8 @@ if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
|
||||
DEQP_SKIPS="$DEQP_SKIPS $INSTALL/$GPU_VERSION-skips.txt"
|
||||
fi
|
||||
|
||||
set +e
|
||||
|
||||
report_load() {
|
||||
echo "System load: $(cut -d' ' -f1-3 < /proc/loadavg)"
|
||||
echo "# of CPU cores: $(cat /proc/cpuinfo | grep processor | wc -l)"
|
||||
@@ -157,16 +148,7 @@ if [ -z "$DEQP_SUITE" ]; then
|
||||
if [ $DEQP_VER != vk -a $DEQP_VER != egl ]; then
|
||||
export DEQP_RUNNER_OPTIONS="$DEQP_RUNNER_OPTIONS --version-check `cat $INSTALL/VERSION | sed 's/[() ]/./g'`"
|
||||
fi
|
||||
fi
|
||||
|
||||
set +x
|
||||
echo -e "\e[0Ksection_end:$(date +%s):test_setup\r\e[0K"
|
||||
|
||||
echo -e "\e[0Ksection_start:$(date +%s):deqp[collapsed=false]\r\e[0Kdeqp-runner"
|
||||
set -x
|
||||
|
||||
set +e
|
||||
if [ -z "$DEQP_SUITE" ]; then
|
||||
deqp-runner \
|
||||
run \
|
||||
--deqp $DEQP \
|
||||
@@ -188,20 +170,14 @@ else
|
||||
--flakes $INSTALL/$GPU_VERSION-flakes.txt \
|
||||
--testlog-to-xml /deqp/executor/testlog-to-xml \
|
||||
--fraction-start $CI_NODE_INDEX \
|
||||
--fraction `expr $CI_NODE_TOTAL \* ${DEQP_FRACTION:-1}` \
|
||||
--fraction $CI_NODE_TOTAL \
|
||||
--jobs ${FDO_CI_CONCURRENT:-4} \
|
||||
$DEQP_RUNNER_OPTIONS
|
||||
fi
|
||||
|
||||
DEQP_EXITCODE=$?
|
||||
|
||||
set +x
|
||||
echo -e "\e[0Ksection_end:$(date +%s):deqp\r\e[0K"
|
||||
|
||||
report_load
|
||||
|
||||
echo -e "\e[0Ksection_start:$(date +%s):test_post_process[collapsed=true]\r\e[0Kpost-processing test results"
|
||||
set -x
|
||||
quiet report_load
|
||||
|
||||
# Remove all but the first 50 individual XML files uploaded as artifacts, to
|
||||
# save fd.o space when you break everything.
|
||||
@@ -237,6 +213,4 @@ if [ -n "$FLAKES_CHANNEL" ]; then
|
||||
--branch-title "${CI_MERGE_REQUEST_TITLE:-$CI_COMMIT_TITLE}"
|
||||
fi
|
||||
|
||||
echo -e "\e[0Ksection_end:$(date +%s):test_post_process\r\e[0K"
|
||||
|
||||
exit $DEQP_EXITCODE
|
||||
|
@@ -5,7 +5,7 @@ set -o xtrace
|
||||
|
||||
# if we run this script outside of gitlab-ci for testing, ensure
|
||||
# we got meaningful variables
|
||||
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(mktemp -d)/$CI_PROJECT_NAME}
|
||||
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(mktemp -d)/mesa}
|
||||
|
||||
if [[ -e $CI_PROJECT_DIR/.git ]]
|
||||
then
|
||||
@@ -16,8 +16,8 @@ fi
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
echo "Downloading archived master..."
|
||||
/usr/bin/wget -O $TMP_DIR/$CI_PROJECT_NAME.tar.gz \
|
||||
https://${MINIO_HOST}/git-cache/${FDO_UPSTREAM_REPO}/$CI_PROJECT_NAME.tar.gz
|
||||
/usr/bin/wget -O $TMP_DIR/mesa.tar.gz \
|
||||
https://${MINIO_HOST}/git-cache/${FDO_UPSTREAM_REPO}/mesa.tar.gz
|
||||
|
||||
# check wget error code
|
||||
if [[ $? -ne 0 ]]
|
||||
@@ -31,6 +31,6 @@ set -e
|
||||
rm -rf "$CI_PROJECT_DIR"
|
||||
echo "Extracting tarball into '$CI_PROJECT_DIR'..."
|
||||
mkdir -p "$CI_PROJECT_DIR"
|
||||
tar xzf "$TMP_DIR/$CI_PROJECT_NAME.tar.gz" -C "$CI_PROJECT_DIR"
|
||||
tar xzf "$TMP_DIR/mesa.tar.gz" -C "$CI_PROJECT_DIR"
|
||||
rm -rf "$TMP_DIR"
|
||||
chmod a+w "$CI_PROJECT_DIR"
|
||||
|
0
.gitlab-ci/gtest-runner.sh
Executable file → Normal file
0
.gitlab-ci/gtest-runner.sh
Executable file → Normal file
@@ -1,21 +1,21 @@
|
||||
variables:
|
||||
DEBIAN_X86_BUILD_BASE_IMAGE: "debian/x86_build-base"
|
||||
DEBIAN_BASE_TAG: "2022-02-21-libdrm"
|
||||
DEBIAN_BASE_TAG: "2022-01-02-deqp-runner"
|
||||
|
||||
DEBIAN_X86_BUILD_IMAGE_PATH: "debian/x86_build"
|
||||
DEBIAN_BUILD_TAG: "2022-02-21-libdrm"
|
||||
DEBIAN_BUILD_TAG: "2021-12-31-keep-cmake"
|
||||
|
||||
DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base"
|
||||
|
||||
DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl"
|
||||
DEBIAN_X86_TEST_GL_TAG: "2022-04-07-virgl-crosvm"
|
||||
DEBIAN_X86_TEST_VK_TAG: "2022-04-05-deqp-runner"
|
||||
DEBIAN_X86_TEST_GL_TAG: "2022-01-18-kernel"
|
||||
DEBIAN_X86_TEST_VK_TAG: "2022-01-02-deqp-runner"
|
||||
|
||||
FEDORA_X86_BUILD_TAG: "2022-03-18-spirv-tools-5"
|
||||
KERNEL_ROOTFS_TAG: "2022-04-07-prefix-skqp"
|
||||
FEDORA_X86_BUILD_TAG: "2021-12-31-refactor"
|
||||
KERNEL_ROOTFS_TAG: "2022-01-18-kernel"
|
||||
|
||||
WINDOWS_X64_BUILD_PATH: "windows/x64_build"
|
||||
WINDOWS_X64_BUILD_TAG: "2022-20-02-base_split"
|
||||
|
||||
WINDOWS_X64_TEST_PATH: "windows/x64_test"
|
||||
WINDOWS_X64_TEST_TAG: "2022-04-13-dozen_ci"
|
||||
WINDOWS_X64_TEST_TAG: "2022-20-02-base_split"
|
||||
|
@@ -14,23 +14,20 @@
|
||||
BASE_SYSTEM_MAINLINE_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${FDO_UPSTREAM_REPO}/${DISTRIBUTION_TAG}/${ARCH}"
|
||||
BASE_SYSTEM_FORK_HOST_PATH: "${BASE_SYSTEM_HOST_PREFIX}/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${ARCH}"
|
||||
# per-job build artifacts
|
||||
BUILD_PATH: "${PIPELINE_ARTIFACTS_BASE}/${CI_PROJECT_NAME}-${ARCH}.tar.gz"
|
||||
MESA_BUILD_PATH: "${PIPELINE_ARTIFACTS_BASE}/mesa-${ARCH}.tar.gz"
|
||||
JOB_ROOTFS_OVERLAY_PATH: "${JOB_ARTIFACTS_BASE}/job-rootfs-overlay.tar.gz"
|
||||
JOB_RESULTS_PATH: "${JOB_ARTIFACTS_BASE}/results.tar.gz"
|
||||
MINIO_RESULTS_UPLOAD: "${JOB_ARTIFACTS_BASE}"
|
||||
PIGLIT_NO_WINDOW: 1
|
||||
VISIBILITY_GROUP: "Collabora+fdo"
|
||||
script:
|
||||
- ./artifacts/lava/lava-submit.sh
|
||||
artifacts:
|
||||
name: "${CI_PROJECT_NAME}_${CI_JOB_NAME}"
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
when: always
|
||||
paths:
|
||||
- results/
|
||||
exclude:
|
||||
- results/*.shader_cache
|
||||
tags:
|
||||
- $RUNNER_TAG
|
||||
after_script:
|
||||
- wget -q "https://${JOB_RESULTS_PATH}" -O- | tar -xz
|
||||
|
||||
|
@@ -1,34 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2022 Collabora Limited
|
||||
# Author: Guilherme Gallo <guilherme.gallo@collabora.com>
|
||||
#
|
||||
# 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.
|
||||
|
||||
# This script runs unit/integration tests related with LAVA CI tools
|
||||
|
||||
set -ex
|
||||
|
||||
TEST_DIR=${CI_PROJECT_DIR}/.gitlab-ci/tests
|
||||
|
||||
PYTHONPATH="${TEST_DIR}:${PYTHONPATH}" python3 -m \
|
||||
pytest "${TEST_DIR}" \
|
||||
-W ignore::DeprecationWarning \
|
||||
--junitxml=artifacts/ci_scripts_report.xml
|
@@ -16,11 +16,7 @@ mkdir -p results/job-rootfs-overlay/
|
||||
|
||||
cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
|
||||
cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
|
||||
cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
|
||||
|
||||
# Prepare env vars for upload.
|
||||
KERNEL_IMAGE_BASE_URL="https://${BASE_SYSTEM_HOST_PATH}" \
|
||||
artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
|
||||
artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
|
||||
|
||||
tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
|
||||
ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
|
||||
@@ -31,10 +27,10 @@ tail -f results/lava.log &
|
||||
artifacts/lava/lava_job_submitter.py \
|
||||
--dump-yaml \
|
||||
--pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
|
||||
--rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
|
||||
--kernel-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
|
||||
--build-url "${FDO_HTTP_CACHE_URI:-}https://${BUILD_PATH}" \
|
||||
--base-system-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
|
||||
--mesa-build-url "${FDO_HTTP_CACHE_URI:-}https://${MESA_BUILD_PATH}" \
|
||||
--job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
|
||||
--job-artifacts-base ${JOB_ARTIFACTS_BASE} \
|
||||
--job-timeout ${JOB_TIMEOUT:-30} \
|
||||
--first-stage-init artifacts/ci-common/init-stage1.sh \
|
||||
--ci-project-dir ${CI_PROJECT_DIR} \
|
||||
|
@@ -31,27 +31,25 @@ import time
|
||||
import traceback
|
||||
import urllib.parse
|
||||
import xmlrpc
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from os import getenv
|
||||
|
||||
import lavacli
|
||||
import yaml
|
||||
from lavacli.utils import loader
|
||||
|
||||
# Timeout in seconds to decide if the device from the dispatched LAVA job has
|
||||
# Timeout in minutes to decide if the device from the dispatched LAVA job has
|
||||
# hung or not due to the lack of new log output.
|
||||
DEVICE_HANGING_TIMEOUT_SEC = int(getenv("LAVA_DEVICE_HANGING_TIMEOUT_SEC", 5*60))
|
||||
DEVICE_HANGING_TIMEOUT_MIN = 5
|
||||
|
||||
# How many seconds the script should wait before try a new polling iteration to
|
||||
# check if the dispatched LAVA job is running or waiting in the job queue.
|
||||
WAIT_FOR_DEVICE_POLLING_TIME_SEC = int(getenv("LAVA_WAIT_FOR_DEVICE_POLLING_TIME_SEC", 10))
|
||||
WAIT_FOR_DEVICE_POLLING_TIME_SEC = 10
|
||||
|
||||
# How many seconds to wait between log output LAVA RPC calls.
|
||||
LOG_POLLING_TIME_SEC = int(getenv("LAVA_LOG_POLLING_TIME_SEC", 5))
|
||||
LOG_POLLING_TIME_SEC = 5
|
||||
|
||||
# How many retries should be made when a timeout happen.
|
||||
NUMBER_OF_RETRIES_TIMEOUT_DETECTION = int(getenv("LAVA_NUMBER_OF_RETRIES_TIMEOUT_DETECTION", 2))
|
||||
NUMBER_OF_RETRIES_TIMEOUT_DETECTION = 2
|
||||
|
||||
|
||||
def print_log(msg):
|
||||
@@ -63,7 +61,14 @@ def fatal_err(msg):
|
||||
|
||||
|
||||
def hide_sensitive_data(yaml_data, hide_tag="HIDEME"):
|
||||
return "".join(line for line in yaml_data.splitlines(True) if hide_tag not in line)
|
||||
out_data = ""
|
||||
|
||||
for line in yaml_data.splitlines(True):
|
||||
if hide_tag in line:
|
||||
continue
|
||||
out_data += line
|
||||
|
||||
return out_data
|
||||
|
||||
|
||||
def generate_lava_yaml(args):
|
||||
@@ -74,7 +79,7 @@ def generate_lava_yaml(args):
|
||||
'visibility': { 'group': [ args.visibility_group ] },
|
||||
'priority': 75,
|
||||
'context': {
|
||||
'extra_nfsroot_args': ' init=/init rootwait usbcore.quirks=0bda:8153:k'
|
||||
'extra_nfsroot_args': ' init=/init rootwait minio_results={}'.format(args.job_artifacts_base)
|
||||
},
|
||||
'timeouts': {
|
||||
'job': {
|
||||
@@ -93,10 +98,10 @@ def generate_lava_yaml(args):
|
||||
'to': 'tftp',
|
||||
'os': 'oe',
|
||||
'kernel': {
|
||||
'url': '{}/{}'.format(args.kernel_url_prefix, args.kernel_image_name),
|
||||
'url': '{}/{}'.format(args.base_system_url_prefix, args.kernel_image_name),
|
||||
},
|
||||
'nfsrootfs': {
|
||||
'url': '{}/lava-rootfs.tgz'.format(args.rootfs_url_prefix),
|
||||
'url': '{}/lava-rootfs.tgz'.format(args.base_system_url_prefix),
|
||||
'compression': 'gz',
|
||||
}
|
||||
}
|
||||
@@ -104,7 +109,7 @@ def generate_lava_yaml(args):
|
||||
deploy['kernel']['type'] = args.kernel_image_type
|
||||
if args.dtb:
|
||||
deploy['dtb'] = {
|
||||
'url': '{}/{}.dtb'.format(args.kernel_url_prefix, args.dtb)
|
||||
'url': '{}/{}.dtb'.format(args.base_system_url_prefix, args.dtb)
|
||||
}
|
||||
|
||||
# always boot over NFS
|
||||
@@ -160,7 +165,7 @@ def generate_lava_yaml(args):
|
||||
|
||||
init_lines += [
|
||||
'mkdir -p {}'.format(args.ci_project_dir),
|
||||
'wget -S --progress=dot:giga -O- {} | tar -xz -C {}'.format(args.build_url, args.ci_project_dir),
|
||||
'wget -S --progress=dot:giga -O- {} | tar -xz -C {}'.format(args.mesa_build_url, args.ci_project_dir),
|
||||
'wget -S --progress=dot:giga -O- {} | tar -xz -C /'.format(args.job_rootfs_overlay_url),
|
||||
f'echo "export CI_JOB_JWT_FILE={args.jwt_file}" >> /set-job-env-vars.sh',
|
||||
'exec /init-stage2.sh',
|
||||
@@ -206,6 +211,7 @@ def _call_proxy(fn, *args):
|
||||
fatal_err("A protocol error occurred (Err {} {})".format(err.errcode, err.errmsg))
|
||||
else:
|
||||
time.sleep(15)
|
||||
pass
|
||||
except xmlrpc.client.Fault as err:
|
||||
traceback.print_exc()
|
||||
fatal_err("FATAL: Fault: {} (code: {})".format(err.faultString, err.faultCode))
|
||||
@@ -216,8 +222,8 @@ def get_job_results(proxy, job_id, test_suite, test_case):
|
||||
results_yaml = _call_proxy(proxy.results.get_testjob_results_yaml, job_id)
|
||||
results = yaml.load(results_yaml, Loader=loader(False))
|
||||
for res in results:
|
||||
metadata = res["metadata"]
|
||||
if "result" not in metadata or metadata["result"] != "fail":
|
||||
metadata = res['metadata']
|
||||
if not 'result' in metadata or metadata['result'] != 'fail':
|
||||
continue
|
||||
if 'error_type' in metadata and metadata['error_type'] == "Infrastructure":
|
||||
print_log("LAVA job {} failed with Infrastructure Error. Retry.".format(job_id))
|
||||
@@ -254,7 +260,8 @@ def follow_job_execution(proxy, job_id):
|
||||
last_time_logs = datetime.now()
|
||||
while not finished:
|
||||
(finished, data) = _call_proxy(proxy.scheduler.jobs.logs, job_id, line_count)
|
||||
if logs := yaml.load(str(data), Loader=loader(False)):
|
||||
logs = yaml.load(str(data), Loader=loader(False))
|
||||
if logs:
|
||||
# Reset the timeout
|
||||
last_time_logs = datetime.now()
|
||||
for line in logs:
|
||||
@@ -263,7 +270,7 @@ def follow_job_execution(proxy, job_id):
|
||||
line_count += len(logs)
|
||||
|
||||
else:
|
||||
time_limit = timedelta(seconds=DEVICE_HANGING_TIMEOUT_SEC)
|
||||
time_limit = timedelta(minutes=DEVICE_HANGING_TIMEOUT_MIN)
|
||||
if datetime.now() - last_time_logs > time_limit:
|
||||
print_log("LAVA job {} doesn't advance (machine got hung?). Retry.".format(job_id))
|
||||
return False
|
||||
@@ -291,7 +298,21 @@ def submit_job(proxy, job_file):
|
||||
return _call_proxy(proxy.scheduler.jobs.submit, job_file)
|
||||
|
||||
|
||||
def retriable_follow_job(proxy, yaml_file):
|
||||
def main(args):
|
||||
proxy = setup_lava_proxy()
|
||||
|
||||
yaml_file = generate_lava_yaml(args)
|
||||
|
||||
if args.dump_yaml:
|
||||
print(hide_sensitive_data(generate_lava_yaml(args)))
|
||||
|
||||
if args.validate_only:
|
||||
ret = validate_job(proxy, yaml_file)
|
||||
if not ret:
|
||||
fatal_err("Error in LAVA job definition")
|
||||
print("LAVA job definition validated successfully")
|
||||
return
|
||||
|
||||
retry_count = NUMBER_OF_RETRIES_TIMEOUT_DETECTION
|
||||
|
||||
while retry_count >= 0:
|
||||
@@ -311,45 +332,17 @@ def retriable_follow_job(proxy, yaml_file):
|
||||
|
||||
show_job_data(proxy, job_id)
|
||||
|
||||
if get_job_results(proxy, job_id, "0_mesa", "mesa") == True:
|
||||
break
|
||||
else:
|
||||
# The script attempted all the retries. The job seemed to fail.
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def main(args):
|
||||
proxy = setup_lava_proxy()
|
||||
|
||||
yaml_file = generate_lava_yaml(args)
|
||||
|
||||
if args.dump_yaml:
|
||||
print(hide_sensitive_data(generate_lava_yaml(args)))
|
||||
|
||||
if args.validate_only:
|
||||
ret = validate_job(proxy, yaml_file)
|
||||
if not ret:
|
||||
fatal_err("Error in LAVA job definition")
|
||||
print("LAVA job definition validated successfully")
|
||||
return
|
||||
|
||||
if not retriable_follow_job(proxy, yaml_file):
|
||||
fatal_err(
|
||||
"Job failed after it exceeded the number of"
|
||||
f"{NUMBER_OF_RETRIES_TIMEOUT_DETECTION} retries."
|
||||
)
|
||||
|
||||
if get_job_results(proxy, job_id, "0_mesa", "mesa") == True:
|
||||
break
|
||||
|
||||
def create_parser():
|
||||
parser = argparse.ArgumentParser("LAVA job submitter")
|
||||
|
||||
parser.add_argument("--pipeline-info")
|
||||
parser.add_argument("--rootfs-url-prefix")
|
||||
parser.add_argument("--kernel-url-prefix")
|
||||
parser.add_argument("--build-url")
|
||||
parser.add_argument("--base-system-url-prefix")
|
||||
parser.add_argument("--mesa-build-url")
|
||||
parser.add_argument("--job-rootfs-overlay-url")
|
||||
parser.add_argument("--job-artifacts-base")
|
||||
parser.add_argument("--job-timeout", type=int)
|
||||
parser.add_argument("--first-stage-init")
|
||||
parser.add_argument("--ci-project-dir")
|
||||
|
@@ -17,15 +17,6 @@ export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.${VK_C
|
||||
RESULTS=`pwd`/${PIGLIT_RESULTS_DIR:-results}
|
||||
mkdir -p $RESULTS
|
||||
|
||||
# Ensure Mesa Shader Cache resides on tmpfs.
|
||||
SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
|
||||
SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
|
||||
|
||||
findmnt -n tmpfs ${SHADER_CACHE_HOME} || findmnt -n tmpfs ${SHADER_CACHE_DIR} || {
|
||||
mkdir -p ${SHADER_CACHE_DIR}
|
||||
mount -t tmpfs -o nosuid,nodev,size=2G,mode=1755 tmpfs ${SHADER_CACHE_DIR}
|
||||
}
|
||||
|
||||
if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
|
||||
# deqp is to use virpipe, and virgl_test_server llvmpipe
|
||||
export GALLIUM_DRIVER="$GALLIUM_DRIVER"
|
||||
|
@@ -188,13 +188,6 @@ fi
|
||||
|
||||
ci-fairy minio login $MINIO_ARGS --token-file "${CI_JOB_JWT_FILE}"
|
||||
|
||||
# The replayer doesn't do any size or checksum verification for the traces in
|
||||
# the replayer db, so if we had to restart the system due to intermittent device
|
||||
# errors (or tried to cache replayer-db between runs, which would be nice to
|
||||
# have), you could get a corrupted local trace that would spuriously fail the
|
||||
# run.
|
||||
rm -rf replayer-db
|
||||
|
||||
eval $RUN_CMD
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
|
@@ -47,7 +47,6 @@ 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/valve artifacts/
|
||||
|
||||
if [ -n "$MINIO_ARTIFACT_NAME" ]; then
|
||||
# Pass needed files to the test stage
|
||||
|
@@ -1,40 +1,12 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2022 Collabora Limited
|
||||
# Author: Guilherme Gallo <guilherme.gallo@collabora.com>
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
copy_tests_files() (
|
||||
# Copy either unit test or render test files from a specific driver given by
|
||||
# GPU VERSION variable.
|
||||
# If there is no test file at the expected location, this function will
|
||||
# return error_code 1
|
||||
SKQP_BACKEND="${1}"
|
||||
SKQP_FILE_PREFIX="${INSTALL}/${GPU_VERSION}-skqp"
|
||||
|
||||
if echo "${SKQP_BACKEND}" | grep -qE 'vk|gl(es)?'
|
||||
if echo "${SKQP_BACKEND}" | grep -qE 'gl(es)?'
|
||||
then
|
||||
SKQP_RENDER_TESTS_FILE="${SKQP_FILE_PREFIX}-${SKQP_BACKEND}_rendertests.txt"
|
||||
[ -f "${SKQP_RENDER_TESTS_FILE}" ] || return 1
|
||||
cp "${SKQP_RENDER_TESTS_FILE}" "${SKQP_ASSETS_DIR}"/skqp/rendertests.txt
|
||||
return 0
|
||||
fi
|
||||
@@ -43,75 +15,37 @@ copy_tests_files() (
|
||||
# that is why it needs to be a special case.
|
||||
if echo "${SKQP_BACKEND}" | grep -qE "unitTest"
|
||||
then
|
||||
SKQP_UNIT_TESTS_FILE="${SKQP_FILE_PREFIX}_unittests.txt"
|
||||
[ -f "${SKQP_UNIT_TESTS_FILE}" ] || return 1
|
||||
cp "${SKQP_UNIT_TESTS_FILE}" "${SKQP_ASSETS_DIR}"/skqp/unittests.txt
|
||||
cp "${SKQP_FILE_PREFIX}_unittests.txt" "${SKQP_ASSETS_DIR}"/skqp/unittests.txt
|
||||
fi
|
||||
)
|
||||
|
||||
test_vk_backend() {
|
||||
if echo "${SKQP_BACKENDS}" | grep -qE 'vk'
|
||||
then
|
||||
if [ -n "$VK_DRIVER" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "VK_DRIVER environment variable is missing."
|
||||
VK_DRIVERS=$(ls "$INSTALL"/share/vulkan/icd.d/ | cut -f 1 -d '_')
|
||||
if [ -n "${VK_DRIVERS}" ]
|
||||
then
|
||||
echo "Please set VK_DRIVER to the correct driver from the list:"
|
||||
echo "${VK_DRIVERS}"
|
||||
fi
|
||||
echo "No Vulkan tests will be executed, but it was requested in SKQP_BACKENDS variable. Exiting."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Vulkan environment is not configured, but it was not requested by the job
|
||||
return 1
|
||||
}
|
||||
|
||||
setup_backends() {
|
||||
if test_vk_backend
|
||||
then
|
||||
export VK_ICD_FILENAMES="$INSTALL"/share/vulkan/icd.d/"$VK_DRIVER"_icd."${VK_CPU:-$(uname -m)}".json
|
||||
fi
|
||||
}
|
||||
|
||||
set -ex
|
||||
|
||||
# Needed so configuration files can contain paths to files in /install
|
||||
ln -sf "$CI_PROJECT_DIR"/install /install
|
||||
|
||||
INSTALL=${PWD}/install
|
||||
|
||||
if [ -z "$GPU_VERSION" ]; then
|
||||
echo 'GPU_VERSION must be set to something like "llvmpipe" or
|
||||
"freedreno-a630" (it will serve as a component to find the path for files
|
||||
residing in src/**/ci/*.txt)'
|
||||
exit 1
|
||||
echo 'GPU_VERSION must be set to something like "llvmpipe" or "freedreno-a630" (the name used in .gitlab-ci/gpu-version-*.txt)'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LD_LIBRARY_PATH=$INSTALL:$LD_LIBRARY_PATH
|
||||
setup_backends
|
||||
|
||||
SKQP_ASSETS_DIR=/skqp/assets
|
||||
SKQP_RESULTS_DIR="${SKQP_RESULTS_DIR:-$PWD/results}"
|
||||
SKQP_RESULTS_DIR="${SKQP_RESULTS_DIR:-results}"
|
||||
|
||||
mkdir -p "${SKQP_ASSETS_DIR}"/skqp
|
||||
mkdir "${SKQP_ASSETS_DIR}"/skqp
|
||||
|
||||
SKQP_EXITCODE=0
|
||||
for SKQP_BACKEND in ${SKQP_BACKENDS}
|
||||
do
|
||||
set -e
|
||||
if ! copy_tests_files "${SKQP_BACKEND}"
|
||||
then
|
||||
echo "No override test file found for ${SKQP_BACKEND}. Using the default one."
|
||||
fi
|
||||
copy_tests_files "${SKQP_BACKEND}"
|
||||
|
||||
set +e
|
||||
SKQP_BACKEND_RESULTS_DIR="${SKQP_RESULTS_DIR}"/"${SKQP_BACKEND}"
|
||||
mkdir -p "${SKQP_BACKEND_RESULTS_DIR}"
|
||||
/skqp/skqp "${SKQP_ASSETS_DIR}" "${SKQP_BACKEND_RESULTS_DIR}" "${SKQP_BACKEND}_"
|
||||
/skqp/skqp "${SKQP_ASSETS_DIR}" '' "${SKQP_BACKEND_RESULTS_DIR}" "${SKQP_BACKEND}_"
|
||||
BACKEND_EXITCODE=$?
|
||||
|
||||
if [ ! $BACKEND_EXITCODE -eq 0 ]
|
||||
@@ -135,17 +69,15 @@ then
|
||||
echo "https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/${SKQP_RESULTS_DIR}/unitTest/unit_tests.txt"
|
||||
fi
|
||||
|
||||
REPORT_FILES=$(mktemp)
|
||||
find "${SKQP_RESULTS_DIR}"/**/report.html -type f > "${REPORT_FILES}"
|
||||
while read -r REPORT
|
||||
for REPORT in "${SKQP_RESULTS_DIR}"/**/report.html
|
||||
do
|
||||
BACKEND_NAME=$(echo "${REPORT}" | sed 's@.*/\([^/]*\)/report.html@\1@')
|
||||
echo "See skqp ${BACKEND_NAME} render tests report at:"
|
||||
echo "https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/${REPORT}"
|
||||
done < "${REPORT_FILES}"
|
||||
done
|
||||
|
||||
# If there is no report available, tell the user that something is wrong.
|
||||
if [ ! -s "${REPORT_FILES}" ]
|
||||
if [ ! -f "${REPORT}" ]
|
||||
then
|
||||
echo "No skqp report available. Probably some fatal error has occured during the skqp execution."
|
||||
fi
|
||||
|
@@ -150,8 +150,6 @@
|
||||
rules:
|
||||
- if: '$FD_FARM == "offline"'
|
||||
when: never
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- *ignore_scheduled_pipelines
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
@@ -179,11 +177,9 @@
|
||||
rules:
|
||||
- if: '$FD_FARM == "offline"'
|
||||
when: never
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
# If the triggerer has access to the restricted traces and if it is pre-merge
|
||||
- if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu)$/") &&
|
||||
($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
|
||||
($GITLAB_USER_LOGIN != "marge-bot" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME)'
|
||||
when: never
|
||||
- *ignore_scheduled_pipelines
|
||||
- changes:
|
||||
@@ -207,11 +203,9 @@
|
||||
rules:
|
||||
- if: '$FD_FARM == "offline"'
|
||||
when: never
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- *ignore_scheduled_pipelines
|
||||
# Run only on pre-merge pipelines from Marge
|
||||
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
|
||||
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
@@ -227,30 +221,10 @@
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.nouveau-rules:
|
||||
stage: nouveau
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
- changes:
|
||||
*gallium_core_file_list
|
||||
when: on_success
|
||||
- changes:
|
||||
- src/nouveau/**/*
|
||||
- src/gallium/drivers/nouveau/**/*
|
||||
- src/gallium/winsys/kmsro/**/*
|
||||
- src/gallium/winsys/nouveau/**/*
|
||||
when: on_success
|
||||
- when: never
|
||||
|
||||
.panfrost-midgard-rules:
|
||||
stage: arm
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -277,8 +251,6 @@
|
||||
stage: arm
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -374,8 +346,6 @@
|
||||
stage: amd
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -404,37 +374,10 @@
|
||||
when: on_success
|
||||
- when: never
|
||||
|
||||
# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the
|
||||
# rules duplication manually
|
||||
.virgl-lava-rules-performance:
|
||||
stage: layered-backends
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
# Run only on pre-merge pipelines from Marge
|
||||
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: manual
|
||||
- changes:
|
||||
*gallium_core_file_list
|
||||
when: manual
|
||||
- changes:
|
||||
*llvmpipe_file_list
|
||||
when: manual
|
||||
- changes:
|
||||
*virgl_file_list
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.radeonsi-rules:
|
||||
stage: amd
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -456,8 +399,6 @@
|
||||
stage: amd
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -511,8 +452,6 @@
|
||||
stage: intel
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -532,10 +471,8 @@
|
||||
stage: intel
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
# Run only on pre-merge pipelines from Marge
|
||||
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
|
||||
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
@@ -552,8 +489,6 @@
|
||||
stage: intel
|
||||
rules:
|
||||
- *ignore_scheduled_pipelines
|
||||
- if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
|
||||
when: never
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
when: on_success
|
||||
@@ -587,8 +522,6 @@
|
||||
# rules duplication manually
|
||||
.windows-build-rules:
|
||||
rules:
|
||||
- if: '$MICROSOFT_FARM == "offline"'
|
||||
when: never
|
||||
- *ignore_scheduled_pipelines
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
@@ -623,8 +556,6 @@
|
||||
|
||||
.windows-test-rules:
|
||||
rules:
|
||||
- if: '$MICROSOFT_FARM == "offline"'
|
||||
when: never
|
||||
- *ignore_scheduled_pipelines
|
||||
- changes:
|
||||
*mesa_core_file_list
|
||||
|
@@ -1,314 +0,0 @@
|
||||
.test:
|
||||
extends:
|
||||
- .ci-run-policy
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
variables:
|
||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
||||
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
|
||||
- echo -e "\e[0Ksection_start:$(date +%s):ldd_section[collapsed=true]\r\e[0KChecking ldd on driver build"
|
||||
- LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
|
||||
- echo -e "\e[0Ksection_end:$(date +%s):ldd_section\r\e[0K"
|
||||
artifacts:
|
||||
when: always
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results/
|
||||
|
||||
.test-gl:
|
||||
extends:
|
||||
- .test
|
||||
- .use-debian/x86_test-gl
|
||||
needs:
|
||||
- debian/x86_test-gl
|
||||
- debian-testing
|
||||
|
||||
.test-vk:
|
||||
extends:
|
||||
- .test
|
||||
- .use-debian/x86_test-vk
|
||||
needs:
|
||||
- debian-testing
|
||||
- debian/x86_test-vk
|
||||
|
||||
.test-cl:
|
||||
extends:
|
||||
- .test
|
||||
- .use-debian/x86_test-gl
|
||||
needs:
|
||||
- debian/x86_test-gl
|
||||
- debian-clover-testing
|
||||
|
||||
.vkd3d-proton-test:
|
||||
artifacts:
|
||||
when: on_failure
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results/vkd3d-proton.log
|
||||
script:
|
||||
- ./install/vkd3d-proton/run.sh
|
||||
|
||||
.piglit-test:
|
||||
artifacts:
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
variables:
|
||||
PIGLIT_NO_WINDOW: 1
|
||||
HWCI_TEST_SCRIPT: "/install/piglit/piglit-runner.sh"
|
||||
script:
|
||||
- install/piglit/piglit-runner.sh
|
||||
|
||||
.piglit-traces-test:
|
||||
extends:
|
||||
- .piglit-test
|
||||
cache:
|
||||
key: ${CI_JOB_NAME}
|
||||
paths:
|
||||
- replayer-db/
|
||||
artifacts:
|
||||
when: on_failure
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
paths:
|
||||
- results/summary/
|
||||
- results/*.txt
|
||||
variables:
|
||||
PIGLIT_REPLAY_EXTRA_ARGS: --keep-image --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_host=minio-packet.freedesktop.org --minio_bucket=mesa-tracie-public --role-session-name=${CI_PROJECT_PATH}:${CI_JOB_ID} --jwt-file=${CI_JOB_JWT_FILE}
|
||||
script:
|
||||
- install/piglit/piglit-traces.sh
|
||||
|
||||
.deqp-test:
|
||||
script:
|
||||
- ./install/deqp-runner.sh
|
||||
artifacts:
|
||||
exclude:
|
||||
- results/*.shader_cache
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
|
||||
.deqp-test-vk:
|
||||
extends:
|
||||
- .deqp-test
|
||||
variables:
|
||||
DEQP_VER: vk
|
||||
|
||||
.fossilize-test:
|
||||
script:
|
||||
- ./install/fossilize-runner.sh
|
||||
artifacts:
|
||||
when: on_failure
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results/
|
||||
|
||||
.baremetal-test:
|
||||
extends:
|
||||
- .ci-run-policy
|
||||
- .test
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
stage: test
|
||||
before_script:
|
||||
- !reference [default, before_script]
|
||||
# Use this instead of gitlab's artifacts download because it hits packet.net
|
||||
# instead of fd.o. Set FDO_HTTP_CACHE_URI to an http cache for your test lab to
|
||||
# improve it even more (see https://docs.mesa3d.org/ci/bare-metal.html for
|
||||
# setup).
|
||||
- wget ${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${MINIO_ARTIFACT_NAME}.tar.gz -S --progress=dot:giga -O- | tar -xz
|
||||
artifacts:
|
||||
when: always
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- results/
|
||||
- serial*.txt
|
||||
exclude:
|
||||
- results/*.shader_cache
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
|
||||
.baremetal-test-armhf:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
variables:
|
||||
BM_ROOTFS: /rootfs-armhf
|
||||
MINIO_ARTIFACT_NAME: mesa-armhf
|
||||
|
||||
.baremetal-test-arm64:
|
||||
extends:
|
||||
- .baremetal-test
|
||||
variables:
|
||||
BM_ROOTFS: /rootfs-arm64
|
||||
MINIO_ARTIFACT_NAME: mesa-arm64
|
||||
|
||||
.baremetal-arm64-asan-test:
|
||||
variables:
|
||||
DEQP_RUNNER_OPTIONS: "--env LD_PRELOAD=libasan.so.6:/install/lib/libdlclose-skip.so"
|
||||
MINIO_ARTIFACT_NAME: mesa-arm64-asan
|
||||
needs:
|
||||
- debian/arm_test
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
|
||||
.baremetal-deqp-test:
|
||||
variables:
|
||||
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
|
||||
FDO_CI_CONCURRENT: 0 # Default to number of CPUs
|
||||
|
||||
.baremetal-skqp-test:
|
||||
variables:
|
||||
HWCI_START_XORG: 1
|
||||
HWCI_TEST_SCRIPT: "/install/skqp-runner.sh"
|
||||
|
||||
# For Valve's bare-metal testing farm jobs.
|
||||
.b2c-test:
|
||||
# It would be nice to use ci-templates within Mesa CI for this job's
|
||||
# image:, but the integration is not possible for the current
|
||||
# use-case. Within this job, two containers are managed. 1) the
|
||||
# gitlab runner container from which the job is submitted to the
|
||||
# DUT, and 2) the test container (e.g. debian/x86_test-vk) within
|
||||
# which the test cases will run on the DUT. Since ci-templates and
|
||||
# the associated image setting macros in this file rely on variables
|
||||
# like FDO_DISTRIBUTION_TAG for *the* image, there is no way to
|
||||
# depend on more than one image per job. So, the job container is
|
||||
# built as part of the CI in the boot2container project.
|
||||
image: registry.freedesktop.org/mupuf/valve-infra/mesa-trigger:2022-03-03.2
|
||||
extends:
|
||||
- .use-debian/x86_test-vk
|
||||
variables:
|
||||
# No need by default to pull the whole repo
|
||||
GIT_STRATEGY: none
|
||||
# boot2container initrd configuration parameters.
|
||||
B2C_KERNEL_URL: 'https://gitlab.freedesktop.org/mupuf/valve-infra/-/package_files/117/download' # 5.16-for-mesa-ci
|
||||
B2C_INITRAMFS_URL: 'https://gitlab.freedesktop.org/mupuf/boot2container/-/releases/v0.9.4/downloads/initramfs.linux_amd64.cpio.xz'
|
||||
B2C_JOB_SUCCESS_REGEX: '\[.*\]: Execution is over, pipeline status: 0\r$'
|
||||
B2C_JOB_WARN_REGEX: 'null'
|
||||
B2C_LOG_LEVEL: 6
|
||||
B2C_POWEROFF_DELAY: 15
|
||||
B2C_SESSION_END_REGEX: '^.*It''s now safe to turn off your computer\r$'
|
||||
B2C_SESSION_REBOOT_REGEX: 'GPU hang detected!'
|
||||
B2C_TIMEOUT_BOOT_MINUTES: 240
|
||||
B2C_TIMEOUT_BOOT_RETRIES: 2
|
||||
B2C_TIMEOUT_FIRST_MINUTES: 5
|
||||
B2C_TIMEOUT_FIRST_RETRIES: 3
|
||||
B2C_TIMEOUT_MINUTES: 2
|
||||
B2C_TIMEOUT_OVERALL_MINUTES: 240
|
||||
B2C_TIMEOUT_RETRIES: 0
|
||||
|
||||
# As noted in the top description, we make a distinction between the
|
||||
# container used by gitlab-runner to queue the work, and the container
|
||||
# used by the DUTs/test machines. To make this distinction quite clear,
|
||||
# we rename the MESA_IMAGE variable into IMAGE_UNDER_TEST.
|
||||
IMAGE_UNDER_TEST: "$MESA_IMAGE"
|
||||
|
||||
INSTALL_TARBALL: "./artifacts/install.tar"
|
||||
CI_VALVE_ARTIFACTS: "./artifacts/valve"
|
||||
CI_COMMON_SCRIPTS: "./artifacts/ci-common"
|
||||
GENERATE_ENV_SCRIPT: "${CI_COMMON_SCRIPTS}/generate-env.sh"
|
||||
B2C_JOB_TEMPLATE: "${CI_VALVE_ARTIFACTS}/b2c.yml.jinja2.jinja2"
|
||||
JOB_FOLDER: "job_folder"
|
||||
before_script:
|
||||
# We don't want the tarball unpacking of .test, but will take the JWT bits.
|
||||
- !reference [default, before_script]
|
||||
- |
|
||||
set -x
|
||||
|
||||
# Useful as a hook point for runner admins. You may edit the
|
||||
# config.toml for the Gitlab runner and use a bind-mount to
|
||||
# populate the hook script with some executable commands. This
|
||||
# allows quicker feedback than resubmitting pipelines and
|
||||
# potentially having to wait for a debug build of Mesa to
|
||||
# complete.
|
||||
if [ -x /runner-before-script.sh ]; then
|
||||
echo "Executing runner before-script hook..."
|
||||
sh /runner-before-script.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Runner hook failed, goodbye"
|
||||
exit $?
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -s "$INSTALL_TARBALL" ] || exit 1
|
||||
[ -d "$CI_VALVE_ARTIFACTS" ] || exit 1
|
||||
[ -d "$CI_COMMON_SCRIPTS" ] || exit 1
|
||||
|
||||
|
||||
B2C_TEST_SCRIPT="bash -c 'source ./set-job-env-vars.sh ; ${B2C_TEST_SCRIPT}'"
|
||||
|
||||
# The Valve CI gateway receives jobs in a YAML format. Create a
|
||||
# job description from the CI environment.
|
||||
python3 "$CI_VALVE_ARTIFACTS"/generate_b2c.py \
|
||||
--ci-job-id "${CI_JOB_ID}" \
|
||||
--container-cmd "${B2C_TEST_SCRIPT}" \
|
||||
--initramfs-url "${B2C_INITRAMFS_URL}" \
|
||||
--job-success-regex "${B2C_JOB_SUCCESS_REGEX}" \
|
||||
--job-warn-regex "${B2C_JOB_WARN_REGEX}" \
|
||||
--kernel-url "${B2C_KERNEL_URL}" \
|
||||
--log-level "${B2C_LOG_LEVEL}" \
|
||||
--poweroff-delay "${B2C_POWEROFF_DELAY}" \
|
||||
--session-end-regex "${B2C_SESSION_END_REGEX}" \
|
||||
--session-reboot-regex "${B2C_SESSION_REBOOT_REGEX}" \
|
||||
--tags "${CI_RUNNER_TAGS}" \
|
||||
--template "${B2C_JOB_TEMPLATE}" \
|
||||
--timeout-boot-minutes "${B2C_TIMEOUT_BOOT_MINUTES}" \
|
||||
--timeout-boot-retries "${B2C_TIMEOUT_BOOT_RETRIES}" \
|
||||
--timeout-first-minutes "${B2C_TIMEOUT_FIRST_MINUTES}" \
|
||||
--timeout-first-retries "${B2C_TIMEOUT_FIRST_RETRIES}" \
|
||||
--timeout-minutes "${B2C_TIMEOUT_MINUTES}" \
|
||||
--timeout-overall-minutes "${B2C_TIMEOUT_OVERALL_MINUTES}" \
|
||||
--timeout-retries "${B2C_TIMEOUT_RETRIES}" \
|
||||
--job-volume-exclusions "${B2C_JOB_VOLUME_EXCLUSIONS}" \
|
||||
--local-container "${IMAGE_UNDER_TEST}" \
|
||||
${B2C_EXTRA_VOLUME_ARGS} \
|
||||
--working-dir "$CI_PROJECT_DIR"
|
||||
|
||||
cat b2c.yml.jinja2
|
||||
|
||||
rm -rf ${JOB_FOLDER} || true
|
||||
mkdir -v ${JOB_FOLDER}
|
||||
# Create a script to regenerate the CI environment when this job
|
||||
# begins running on the remote DUT.
|
||||
set +x
|
||||
"$CI_COMMON_SCRIPTS"/generate-env.sh > ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
chmod +x ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
echo "Variables passed through:"
|
||||
cat ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
echo "export CI_JOB_JWT=${CI_JOB_JWT}" >> ${JOB_FOLDER}/set-job-env-vars.sh
|
||||
set -x
|
||||
|
||||
# Extract the Mesa distribution into the location expected by
|
||||
# the Mesa CI deqp-runner scripts.
|
||||
tar x -C ${JOB_FOLDER} -f $INSTALL_TARBALL
|
||||
|
||||
script: |
|
||||
slugify () {
|
||||
echo "$1" | sed -r s/[~\^]+//g | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z
|
||||
}
|
||||
|
||||
# Submit the job to Valve's CI gateway service with the CI
|
||||
# provisioned job_folder.
|
||||
env PYTHONUNBUFFERED=1 executorctl \
|
||||
run -w b2c.yml.jinja2 -j $(slugify "$CI_JOB_NAME") -s ${JOB_FOLDER}
|
||||
|
||||
ls -l
|
||||
# Anything our job places in results/ will be collected by the
|
||||
# Gitlab coordinator for status presentation. results/junit.xml
|
||||
# will be parsed by the UI for more detailed explanations of
|
||||
# test execution.
|
||||
needs:
|
||||
- debian/x86_test-vk
|
||||
- debian-testing
|
||||
artifacts:
|
||||
when: always
|
||||
name: "mesa_${CI_JOB_NAME}"
|
||||
paths:
|
||||
- ${JOB_FOLDER}/results
|
||||
reports:
|
||||
junit: ${JOB_FOLDER}/results/junit.xml
|
@@ -1,250 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (C) 2022 Collabora Limited
|
||||
# Author: Guilherme Gallo <guilherme.gallo@collabora.com>
|
||||
#
|
||||
# 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.
|
||||
|
||||
import xmlrpc.client
|
||||
from contextlib import nullcontext as does_not_raise
|
||||
from datetime import datetime
|
||||
from itertools import repeat
|
||||
from typing import Tuple
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
from freezegun import freeze_time
|
||||
from lava.lava_job_submitter import (
|
||||
DEVICE_HANGING_TIMEOUT_SEC,
|
||||
follow_job_execution,
|
||||
hide_sensitive_data,
|
||||
retriable_follow_job,
|
||||
)
|
||||
|
||||
|
||||
def jobs_logs_response(finished=False, msg=None) -> Tuple[bool, str]:
|
||||
timed_msg = {"dt": str(datetime.now()), "msg": "New message"}
|
||||
logs = [timed_msg] if msg is None else msg
|
||||
|
||||
return finished, yaml.safe_dump(logs)
|
||||
|
||||
|
||||
def result_get_testjob_results_response() -> str:
|
||||
result = {"result": "test"}
|
||||
results = [{"metadata": result}]
|
||||
|
||||
return yaml.safe_dump(results)
|
||||
|
||||
|
||||
def result_get_testcase_results_response() -> str:
|
||||
result = {"result": "pass"}
|
||||
test_cases = [result]
|
||||
|
||||
return yaml.safe_dump(test_cases)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_proxy():
|
||||
def create_proxy_mock(**kwargs):
|
||||
proxy_mock = MagicMock()
|
||||
proxy_submit_mock = proxy_mock.scheduler.jobs.submit
|
||||
proxy_submit_mock.return_value = "1234"
|
||||
|
||||
proxy_results_mock = proxy_mock.results.get_testjob_results_yaml
|
||||
proxy_results_mock.return_value = result_get_testjob_results_response()
|
||||
|
||||
proxy_test_cases_mock = proxy_mock.results.get_testcase_results_yaml
|
||||
proxy_test_cases_mock.return_value = result_get_testcase_results_response()
|
||||
|
||||
proxy_logs_mock = proxy_mock.scheduler.jobs.logs
|
||||
proxy_logs_mock.return_value = jobs_logs_response()
|
||||
for key, value in kwargs.items():
|
||||
setattr(proxy_logs_mock, key, value)
|
||||
|
||||
return proxy_mock
|
||||
|
||||
yield create_proxy_mock
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_proxy_waiting_time(mock_proxy):
|
||||
def update_mock_proxy(frozen_time, **kwargs):
|
||||
wait_time = kwargs.pop("wait_time", 0)
|
||||
proxy_mock = mock_proxy(**kwargs)
|
||||
proxy_job_state = proxy_mock.scheduler.job_state
|
||||
proxy_job_state.return_value = {"job_state": "Running"}
|
||||
proxy_job_state.side_effect = frozen_time.tick(wait_time)
|
||||
|
||||
return proxy_mock
|
||||
|
||||
return update_mock_proxy
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_sleep():
|
||||
"""Mock time.sleep to make test faster"""
|
||||
with patch("time.sleep", return_value=None):
|
||||
yield
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def frozen_time(mock_sleep):
|
||||
with freeze_time() as frozen_time:
|
||||
yield frozen_time
|
||||
|
||||
|
||||
@pytest.mark.parametrize("exception", [RuntimeError, SystemError, KeyError])
|
||||
def test_submit_and_follow_respects_exceptions(mock_sleep, mock_proxy, exception):
|
||||
with pytest.raises(exception):
|
||||
follow_job_execution(mock_proxy(side_effect=exception), "")
|
||||
|
||||
|
||||
def generate_n_logs(n=1, tick_sec=1):
|
||||
"""Simulate a log partitionated in n components"""
|
||||
with freeze_time(datetime.now()) as time_travel:
|
||||
while True:
|
||||
# Simulate a scenario where the target job is waiting for being started
|
||||
for _ in range(n - 1):
|
||||
time_travel.tick(tick_sec)
|
||||
yield jobs_logs_response(finished=False, msg=[])
|
||||
|
||||
time_travel.tick(tick_sec)
|
||||
yield jobs_logs_response(finished=True)
|
||||
|
||||
|
||||
NETWORK_EXCEPTION = xmlrpc.client.ProtocolError("", 0, "test", {})
|
||||
XMLRPC_FAULT = xmlrpc.client.Fault(0, "test")
|
||||
|
||||
PROXY_SCENARIOS = {
|
||||
"finish case": (generate_n_logs(1), does_not_raise(), True),
|
||||
"works at last retry": (
|
||||
generate_n_logs(n=3, tick_sec=DEVICE_HANGING_TIMEOUT_SEC + 1),
|
||||
does_not_raise(),
|
||||
True,
|
||||
),
|
||||
"timed out more times than retry attempts": (
|
||||
generate_n_logs(n=4, tick_sec=DEVICE_HANGING_TIMEOUT_SEC + 1),
|
||||
does_not_raise(),
|
||||
False,
|
||||
),
|
||||
"long log case, no silence": (
|
||||
generate_n_logs(n=1000, tick_sec=0),
|
||||
does_not_raise(),
|
||||
True,
|
||||
),
|
||||
"very long silence": (
|
||||
generate_n_logs(n=4, tick_sec=100000),
|
||||
does_not_raise(),
|
||||
False,
|
||||
),
|
||||
# If a protocol error happens, _call_proxy will retry without affecting timeouts
|
||||
"unstable connection, ProtocolError followed by final message": (
|
||||
(NETWORK_EXCEPTION, jobs_logs_response(finished=True)),
|
||||
does_not_raise(),
|
||||
True,
|
||||
),
|
||||
# After an arbitrary number of retries, _call_proxy should call sys.exit
|
||||
"unreachable case, subsequent ProtocolErrors": (
|
||||
repeat(NETWORK_EXCEPTION),
|
||||
pytest.raises(SystemExit),
|
||||
False,
|
||||
),
|
||||
"XMLRPC Fault": ([XMLRPC_FAULT], pytest.raises(SystemExit, match="1"), False),
|
||||
}
|
||||
|
||||
|
||||
@patch("time.sleep", return_value=None) # mock sleep to make test faster
|
||||
@pytest.mark.parametrize(
|
||||
"side_effect, expectation, has_finished",
|
||||
PROXY_SCENARIOS.values(),
|
||||
ids=PROXY_SCENARIOS.keys(),
|
||||
)
|
||||
def test_retriable_follow_job(
|
||||
mock_sleep, side_effect, expectation, has_finished, mock_proxy
|
||||
):
|
||||
with expectation:
|
||||
result = retriable_follow_job(mock_proxy(side_effect=side_effect), "")
|
||||
assert has_finished == result
|
||||
|
||||
|
||||
WAIT_FOR_JOB_SCENARIOS = {
|
||||
"one log run taking (sec):": (generate_n_logs(1), True),
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("wait_time", (0, DEVICE_HANGING_TIMEOUT_SEC * 2))
|
||||
@pytest.mark.parametrize(
|
||||
"side_effect, has_finished",
|
||||
WAIT_FOR_JOB_SCENARIOS.values(),
|
||||
ids=WAIT_FOR_JOB_SCENARIOS.keys(),
|
||||
)
|
||||
def test_simulate_a_long_wait_to_start_a_job(
|
||||
frozen_time,
|
||||
wait_time,
|
||||
side_effect,
|
||||
has_finished,
|
||||
mock_proxy_waiting_time,
|
||||
):
|
||||
start_time = datetime.now()
|
||||
result = retriable_follow_job(
|
||||
mock_proxy_waiting_time(
|
||||
frozen_time, side_effect=side_effect, wait_time=wait_time
|
||||
),
|
||||
"",
|
||||
)
|
||||
|
||||
end_time = datetime.now()
|
||||
delta_time = end_time - start_time
|
||||
|
||||
assert has_finished == result
|
||||
assert delta_time.total_seconds() >= wait_time
|
||||
|
||||
|
||||
SENSITIVE_DATA_SCENARIOS = {
|
||||
"no sensitive data tagged": (
|
||||
["bla bla", "mytoken: asdkfjsde1341=="],
|
||||
["bla bla", "mytoken: asdkfjsde1341=="],
|
||||
"HIDEME",
|
||||
),
|
||||
"sensitive data tagged": (
|
||||
["bla bla", "mytoken: asdkfjsde1341== # HIDEME"],
|
||||
["bla bla"],
|
||||
"HIDEME",
|
||||
),
|
||||
"sensitive data tagged with custom word": (
|
||||
["bla bla", "mytoken: asdkfjsde1341== # DELETETHISLINE", "third line"],
|
||||
["bla bla", "third line"],
|
||||
"DELETETHISLINE",
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"input, expectation, tag",
|
||||
SENSITIVE_DATA_SCENARIOS.values(),
|
||||
ids=SENSITIVE_DATA_SCENARIOS.keys(),
|
||||
)
|
||||
def test_hide_sensitive_data(input, expectation, tag):
|
||||
yaml_data = yaml.safe_dump(input)
|
||||
yaml_result = hide_sensitive_data(yaml_data, tag)
|
||||
result = yaml.safe_load(yaml_result)
|
||||
|
||||
assert result == expectation
|
@@ -1,63 +0,0 @@
|
||||
version: 1
|
||||
|
||||
# Rules to match for a machine to qualify
|
||||
target:
|
||||
{% if tags %}
|
||||
{% set b2ctags = tags.split(',') %}
|
||||
tags:
|
||||
{% for tag in b2ctags %}
|
||||
- '{{ tag | trim }}'
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
timeouts:
|
||||
first_console_activity: # This limits the time it can take to receive the first console log
|
||||
minutes: {{ timeout_first_minutes }}
|
||||
retries: {{ timeout_first_retries }}
|
||||
console_activity: # Reset every time we receive a message from the logs
|
||||
minutes: {{ timeout_minutes }}
|
||||
retries: {{ timeout_retries }}
|
||||
boot_cycle:
|
||||
minutes: {{ timeout_boot_minutes }}
|
||||
retries: {{ timeout_boot_retries }}
|
||||
overall: # Maximum time the job can take, not overrideable by the "continue" deployment
|
||||
minutes: {{ timeout_overall_minutes }}
|
||||
retries: 0
|
||||
# no retries possible here
|
||||
|
||||
console_patterns:
|
||||
session_end:
|
||||
regex: >-
|
||||
{{ session_end_regex }}
|
||||
session_reboot:
|
||||
regex: >-
|
||||
{{ session_reboot_regex }}
|
||||
job_success:
|
||||
regex: >-
|
||||
{{ job_success_regex }}
|
||||
|
||||
# Environment to deploy
|
||||
deployment:
|
||||
# Initial boot
|
||||
start:
|
||||
kernel:
|
||||
url: '{{ kernel_url }}'
|
||||
cmdline: >
|
||||
SALAD.machine_id={{ '{{' }} machine_id }}
|
||||
console={{ '{{' }} local_tty_device }},115200 earlyprintk=vga,keep
|
||||
loglevel={{ log_level }} amdgpu.gpu_recovery=0 no_hash_pointers
|
||||
b2c.container="-ti --tls-verify=false docker://{{ '{{' }} fdo_proxy_registry }}/mupuf/valve-infra/machine_registration:latest check"
|
||||
b2c.ntp_peer=10.42.0.1 b2c.pipefail b2c.cache_device=auto b2c.poweroff_delay={{ poweroff_delay }}
|
||||
b2c.minio="gateway,{{ '{{' }} minio_url }},{{ '{{' }} job_bucket_access_key }},{{ '{{' }} job_bucket_secret_key }}"
|
||||
b2c.volume="{{ '{{' }} job_bucket }}-results,mirror=gateway/{{ '{{' }} job_bucket }},pull_on=pipeline_start,push_on=changes,overwrite{% for excl in job_volume_exclusions %},exclude={{ excl }}{% endfor %},expiration=pipeline_end,preserve"
|
||||
{% for volume in volumes %}
|
||||
b2c.volume={{ volume }}
|
||||
{% endfor %}
|
||||
b2c.container="-v {{ '{{' }} job_bucket }}-results:{{ working_dir }} -w {{ working_dir }} {% for mount_volume in mount_volumes %} -v {{ mount_volume }}{% endfor %} --tls-verify=false docker://{{ local_container }} {{ container_cmd }}"
|
||||
{% if cmdline_extras is defined %}
|
||||
{{ cmdline_extras }}
|
||||
{% endif %}
|
||||
|
||||
initramfs:
|
||||
url: '{{ initramfs_url }}'
|
||||
|
@@ -1,101 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright © 2022 Valve Corporation
|
||||
#
|
||||
# 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.
|
||||
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from argparse import ArgumentParser
|
||||
from os import environ, path
|
||||
|
||||
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument('--ci-job-id')
|
||||
parser.add_argument('--container-cmd')
|
||||
parser.add_argument('--initramfs-url')
|
||||
parser.add_argument('--job-success-regex')
|
||||
parser.add_argument('--job-warn-regex')
|
||||
parser.add_argument('--kernel-url')
|
||||
parser.add_argument('--log-level', type=int)
|
||||
parser.add_argument('--poweroff-delay', type=int)
|
||||
parser.add_argument('--session-end-regex')
|
||||
parser.add_argument('--session-reboot-regex')
|
||||
parser.add_argument('--tags', nargs='?', default='')
|
||||
parser.add_argument('--template', default='b2c.yml.jinja2.jinja2')
|
||||
parser.add_argument('--timeout-boot-minutes', type=int)
|
||||
parser.add_argument('--timeout-boot-retries', type=int)
|
||||
parser.add_argument('--timeout-first-minutes', type=int)
|
||||
parser.add_argument('--timeout-first-retries', type=int)
|
||||
parser.add_argument('--timeout-minutes', type=int)
|
||||
parser.add_argument('--timeout-overall-minutes', type=int)
|
||||
parser.add_argument('--timeout-retries', type=int)
|
||||
parser.add_argument('--job-volume-exclusions', nargs='?', default='')
|
||||
parser.add_argument('--volume', action='append')
|
||||
parser.add_argument('--mount-volume', action='append')
|
||||
parser.add_argument('--local-container', default=environ.get('B2C_LOCAL_CONTAINER', 'alpine:latest'))
|
||||
parser.add_argument('--working-dir')
|
||||
args = parser.parse_args()
|
||||
|
||||
env = Environment(loader=FileSystemLoader(path.dirname(args.template)),
|
||||
trim_blocks=True, lstrip_blocks=True)
|
||||
|
||||
template = env.get_template(path.basename(args.template))
|
||||
|
||||
values = {}
|
||||
values['ci_job_id'] = args.ci_job_id
|
||||
values['container_cmd'] = args.container_cmd
|
||||
values['initramfs_url'] = args.initramfs_url
|
||||
values['job_success_regex'] = args.job_success_regex
|
||||
values['job_warn_regex'] = args.job_warn_regex
|
||||
values['kernel_url'] = args.kernel_url
|
||||
values['log_level'] = args.log_level
|
||||
values['poweroff_delay'] = args.poweroff_delay
|
||||
values['session_end_regex'] = args.session_end_regex
|
||||
values['session_reboot_regex'] = args.session_reboot_regex
|
||||
values['tags'] = args.tags
|
||||
values['template'] = args.template
|
||||
values['timeout_boot_minutes'] = args.timeout_boot_minutes
|
||||
values['timeout_boot_retries'] = args.timeout_boot_retries
|
||||
values['timeout_first_minutes'] = args.timeout_first_minutes
|
||||
values['timeout_first_retries'] = args.timeout_first_retries
|
||||
values['timeout_minutes'] = args.timeout_minutes
|
||||
values['timeout_overall_minutes'] = args.timeout_overall_minutes
|
||||
values['timeout_retries'] = args.timeout_retries
|
||||
if len(args.job_volume_exclusions) > 0:
|
||||
exclusions = args.job_volume_exclusions.split(",")
|
||||
values['job_volume_exclusions'] = [excl for excl in exclusions if len(excl) > 0]
|
||||
if args.volume is not None:
|
||||
values['volumes'] = args.volume
|
||||
if args.mount_volume is not None:
|
||||
values['mount_volumes'] = args.mount_volume
|
||||
values['working_dir'] = args.working_dir
|
||||
|
||||
assert(len(args.local_container) > 0)
|
||||
values['local_container'] = args.local_container.replace(
|
||||
# Use the gateway's pull-through registry cache to reduce load on fd.o.
|
||||
'registry.freedesktop.org', '{{ fdo_proxy_registry }}'
|
||||
)
|
||||
|
||||
if 'B2C_KERNEL_CMDLINE_EXTRAS' in environ:
|
||||
values['cmdline_extras'] = environ['B2C_KERNEL_CMDLINE_EXTRAS']
|
||||
|
||||
f = open(path.splitext(path.basename(args.template))[0], "w")
|
||||
f.write(template.render(values))
|
||||
f.close()
|
@@ -1,31 +0,0 @@
|
||||
$dxil_dll = cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 -no_logo && where dxil.dll" 2>&1
|
||||
if ($dxil_dll -notmatch "dxil.dll$") {
|
||||
Write-Output "Couldn't get path to dxil.dll"
|
||||
exit 1
|
||||
}
|
||||
$env:Path = "$(Split-Path $dxil_dll);$env:Path"
|
||||
|
||||
# VK_ICD_FILENAMES environment variable is not used when running with
|
||||
# elevated privileges. Add a key to the registry instead.
|
||||
$hkey_path = "HKLM:\SOFTWARE\Khronos\Vulkan\Drivers\"
|
||||
$hkey_name = Join-Path -Path $pwd -ChildPath "_install\share\vulkan\icd.d\dzn_icd.x86_64.json"
|
||||
New-Item -Path $hkey_path -force
|
||||
New-ItemProperty -Path $hkey_path -Name $hkey_name -Value 0 -PropertyType DWORD
|
||||
|
||||
$results = New-Item -ItemType Directory results
|
||||
$deqp_options = @("--deqp-surface-width", 256, "--deqp-surface-height", 256, "--deqp-surface-type", "pbuffer", "--deqp-gl-config-name", "rgba8888d24s8ms0", "--deqp-visibility", "hidden")
|
||||
$deqp_module = "C:\deqp\external\vulkancts\modules\vulkan\deqp-vk.exe"
|
||||
$caselist = "C:\deqp\mustpass\vk-master.txt"
|
||||
$baseline = ".\_install\warp-fails.txt"
|
||||
$includes = @("-t", "dEQP-VK.api.*", "-t", "dEQP-VK.info.*", "-t", "dEQP-VK.draw.*", "-t", "dEQP-VK.query_pool.*", "-t", "dEQP-VK.memory.*")
|
||||
|
||||
$env:DZN_DEBUG = "warp"
|
||||
deqp-runner run --deqp $($deqp_module) --output $($results) --caselist $($caselist) --baseline $($baseline) $($includes) --testlog-to-xml C:\deqp\executor\testlog-to-xml.exe --jobs 4 -- $($deqp_options)
|
||||
$deqpstatus = $?
|
||||
|
||||
$template = "See https://$($env:CI_PROJECT_ROOT_NAMESPACE).pages.freedesktop.org/-/$($env:CI_PROJECT_NAME)/-/jobs/$($env:CI_JOB_ID)/artifacts/results/{{testcase}}.xml"
|
||||
deqp-runner junit --testsuite dEQP --results "$($results)/failures.csv" --output "$($results)/junit.xml" --limit 50 --template $template
|
||||
|
||||
if (!$deqpstatus) {
|
||||
Exit 1
|
||||
}
|
@@ -6,48 +6,10 @@ $env:PYTHONUTF8=1
|
||||
|
||||
Get-Date
|
||||
Write-Host "Compiling Mesa"
|
||||
$builddir = New-Item -Force -ItemType Directory -Name "_build"
|
||||
$installdir = New-Item -Force -ItemType Directory -Name "_install"
|
||||
$builddir=$builddir.FullName
|
||||
$installdir=$installdir.FullName
|
||||
$sourcedir=$PWD
|
||||
|
||||
Remove-Item -Recurse -Force $builddir
|
||||
Remove-Item -Recurse -Force $installdir
|
||||
New-Item -ItemType Directory -Path $builddir
|
||||
New-Item -ItemType Directory -Path $installdir
|
||||
|
||||
Write-Output builddir:$builddir
|
||||
Write-Output installdir:$installdir
|
||||
Write-Output sourcedir:$sourcedir
|
||||
|
||||
$installPath=& "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -version 16.0 -property installationpath
|
||||
Write-Output "vswhere.exe installPath: $installPath"
|
||||
$installPath="C:\BuildTools"
|
||||
Write-Output "Final installPath: $installPath"
|
||||
Import-Module (Join-Path $installPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
|
||||
Enter-VsDevShell -VsInstallPath $installPath -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo -host_arch=amd64'
|
||||
|
||||
Push-Location $builddir
|
||||
|
||||
meson --default-library=shared -Dzlib:default_library=static --buildtype=release -Db_ndebug=false `
|
||||
-Db_vscrt=mt --cmake-prefix-path="C:\llvm-10" `
|
||||
--pkg-config-path="C:\llvm-10\lib\pkgconfig;C:\llvm-10\share\pkgconfig;C:\spirv-tools\lib\pkgconfig" `
|
||||
--prefix="$installdir" `
|
||||
-Dllvm=enabled -Dshared-llvm=disabled `
|
||||
"-Dvulkan-drivers=swrast,amd,microsoft-experimental" "-Dgallium-drivers=swrast,d3d12,zink" `
|
||||
-Dshared-glapi=enabled -Dgles2=enabled -Dmicrosoft-clc=enabled -Dstatic-libclc=all -Dspirv-to-dxil=true `
|
||||
-Dbuild-tests=true -Dwerror=true -Dwarning_level=2 -Dzlib:warning_level=1 -Dlibelf:warning_level=1 `
|
||||
$sourcedir
|
||||
|
||||
if ($?) {
|
||||
ninja install -j32
|
||||
}
|
||||
|
||||
if ($?) {
|
||||
meson test --num-processes 32
|
||||
}
|
||||
|
||||
$builddir = New-Item -ItemType Directory -Name "_build"
|
||||
$installdir = New-Item -ItemType Directory -Name "_install"
|
||||
Push-Location $builddir.FullName
|
||||
cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && meson --default-library=shared -Dzlib:default_library=static --buildtype=release -Db_ndebug=false -Dc_std=c17 -Dcpp_std=vc++latest -Db_vscrt=mt --cmake-prefix-path=`"C:\llvm-10`" --pkg-config-path=`"C:\llvm-10\lib\pkgconfig;C:\llvm-10\share\pkgconfig;C:\spirv-tools\lib\pkgconfig`" --prefix=`"$installdir`" -Dllvm=enabled -Dshared-llvm=disabled -Dvulkan-drivers=swrast,amd -Dgallium-drivers=swrast,d3d12,zink -Dshared-glapi=enabled -Dgles2=enabled -Dmicrosoft-clc=enabled -Dstatic-libclc=all -Dspirv-to-dxil=true -Dbuild-tests=true -Dwerror=true -Dwarning_level=2 -Dzlib:warning_level=1 -Dlibelf:warning_level=1 && ninja -j32 install && meson test --num-processes 32"
|
||||
$buildstatus = $?
|
||||
Pop-Location
|
||||
|
||||
@@ -63,6 +25,4 @@ Copy-Item ".\.gitlab-ci\windows\piglit_run.ps1" -Destination $installdir
|
||||
Copy-Item ".\.gitlab-ci\windows\spirv2dxil_check.ps1" -Destination $installdir
|
||||
Copy-Item ".\.gitlab-ci\windows\spirv2dxil_run.ps1" -Destination $installdir
|
||||
|
||||
Copy-Item ".\.gitlab-ci\windows\deqp_runner_run.ps1" -Destination $installdir
|
||||
|
||||
Get-ChildItem -Recurse -Filter "ci" | Get-ChildItem -Filter "*.txt" | Copy-Item -Destination $installdir
|
||||
|
@@ -66,59 +66,5 @@ Push-Location -Path C:\spirv-samples\
|
||||
git checkout 7ac0ad5a7fe0ec884faba1dc2916028d0268eeef
|
||||
Pop-Location
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning Vulkan and GL Conformance Tests"
|
||||
$deqp_source = "C:\src\VK-GL-CTS\"
|
||||
git clone --no-progress --single-branch https://github.com/lfrb/VK-GL-CTS.git -b windows-flush $deqp_source
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone deqp repository"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Push-Location -Path $deqp_source
|
||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
||||
# always goes through ssh or https.
|
||||
py .\external\fetch_sources.py --insecure
|
||||
Pop-Location
|
||||
|
||||
Get-Date
|
||||
$deqp_build = New-Item -ItemType Directory -Path "C:\deqp"
|
||||
Push-Location -Path $deqp_build.FullName
|
||||
Write-Host "Compiling deqp"
|
||||
cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && cmake -S $($deqp_source) -B . -GNinja -DCMAKE_BUILD_TYPE=Release -DDEQP_TARGET=default && ninja -j32"
|
||||
$buildstatus = $?
|
||||
Pop-Location
|
||||
if (!$buildstatus -Or !$installstatus) {
|
||||
Write-Host "Failed to compile or install deqp"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
# Copy test result templates
|
||||
Copy-Item -Path "$($deqp_source)\doc\testlog-stylesheet\testlog.css" -Destination $deqp_build
|
||||
Copy-Item -Path "$($deqp_source)\doc\testlog-stylesheet\testlog.xsl" -Destination $deqp_build
|
||||
|
||||
# Copy Vulkan must-pass list
|
||||
$deqp_mustpass = New-Item -ItemType Directory -Path $deqp_build -Name "mustpass"
|
||||
$root_mustpass = Join-Path -Path $deqp_source -ChildPath "external\vulkancts\mustpass\master"
|
||||
$files = Get-Content "$($root_mustpass)\vk-default.txt"
|
||||
foreach($file in $files) {
|
||||
Get-Content "$($root_mustpass)\$($file)" | Add-Content -Path "$($deqp_mustpass)\vk-master.txt"
|
||||
}
|
||||
Remove-Item -Force -Recurse $deqp_source
|
||||
|
||||
Get-Date
|
||||
$url = 'https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe';
|
||||
Write-Host ('Downloading {0} ...' -f $url);
|
||||
Invoke-WebRequest -Uri $url -OutFile 'rustup-init.exe';
|
||||
Write-Host "Installing rust toolchain"
|
||||
C:\rustup-init.exe -y;
|
||||
Remove-Item C:\rustup-init.exe;
|
||||
|
||||
Get-Date
|
||||
Write-Host "Installing deqp-runner"
|
||||
$env:Path += ";$($env:USERPROFILE)\.cargo\bin"
|
||||
cargo install --git https://gitlab.freedesktop.org/anholt/deqp-runner.git
|
||||
|
||||
Get-Date
|
||||
Write-Host "Complete"
|
||||
|
56316
.pick_status.json
56316
.pick_status.json
File diff suppressed because it is too large
Load Diff
18
CODEOWNERS
18
CODEOWNERS
@@ -98,14 +98,6 @@ meson.build @dbaker @eric
|
||||
/src/*/vulkan/*_wsi_display.c @keithp
|
||||
|
||||
|
||||
######
|
||||
# CI #
|
||||
######
|
||||
|
||||
# Broadcom
|
||||
/src/broadcom/ci/ @jasuarez @chema
|
||||
|
||||
|
||||
###########
|
||||
# Drivers #
|
||||
###########
|
||||
@@ -114,19 +106,9 @@ meson.build @dbaker @eric
|
||||
/src/asahi/ @alyssa
|
||||
/src/gallium/drivers/asahi/ @alyssa
|
||||
|
||||
# Broadcom
|
||||
/src/broadcom/ @itoral @apinheiro
|
||||
/src/gallium/drivers/v3d/ @itoral @chema @jasuarez
|
||||
/src/gallium/drivers/vc4/ @itoral @chema @jasuarez
|
||||
|
||||
# Freedreno
|
||||
/src/gallium/drivers/freedreno/ @robclark
|
||||
|
||||
# Imagination
|
||||
/include/drm-uapi/pvr_drm.h @CreativeCylon @frankbinns @rajnesh-kanwal
|
||||
/src/imagination/ @CreativeCylon @frankbinns @rajnesh-kanwal
|
||||
/src/imagination/rogue/ @simon-perretta-img
|
||||
|
||||
# Intel
|
||||
/include/drm-uapi/i915_drm.h @kwg @llandwerlin @jekstrand @idr
|
||||
/include/pci_ids/i*_pci_ids.h @kwg @llandwerlin @jekstrand @idr
|
||||
|
@@ -40,7 +40,7 @@ import docutils.utils
|
||||
import docutils.parsers.rst.states as states
|
||||
|
||||
CURRENT_GL_VERSION = '4.6'
|
||||
CURRENT_VK_VERSION = '1.3'
|
||||
CURRENT_VK_VERSION = '1.2'
|
||||
|
||||
TEMPLATE = Template(textwrap.dedent("""\
|
||||
${header}
|
||||
|
@@ -1,23 +1,3 @@
|
||||
# Copyright © 2020-2021 Collabora Ltd
|
||||
#
|
||||
# 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 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.
|
||||
|
||||
import os
|
||||
import pathlib
|
||||
from urllib.parse import urlparse
|
||||
|
@@ -3,7 +3,7 @@ Bare-metal CI
|
||||
|
||||
The bare-metal scripts run on a system with gitlab-runner and Docker,
|
||||
connected to potentially multiple bare-metal boards that run tests of
|
||||
Mesa. Currently "fastboot", "ChromeOS Servo", and POE-powered devices are
|
||||
Mesa. Currently only "fastboot" and "ChromeOS Servo" devices are
|
||||
supported.
|
||||
|
||||
In comparison with LAVA, this doesn't involve maintaining a separate
|
||||
@@ -25,17 +25,11 @@ 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.
|
||||
gitlab-runner system, since the initramfs is what contains the Mesa
|
||||
testing payload.
|
||||
|
||||
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 freereno-a530).
|
||||
The boards should have networking, so that we can extract the dEQP .xml
|
||||
results to artifacts on GitLab.
|
||||
|
||||
Requirements (servo)
|
||||
--------------------
|
||||
@@ -74,64 +68,6 @@ call "servo"::
|
||||
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
|
||||
-----
|
||||
|
||||
|
@@ -74,7 +74,7 @@ release = 'latest'
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = 'en'
|
||||
language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
|
@@ -31,7 +31,6 @@ import tempfile
|
||||
INPUT_PATHS = [
|
||||
'src/compiler/nir/nir.h',
|
||||
'src/intel/isl',
|
||||
'src/vulkan/runtime',
|
||||
]
|
||||
|
||||
TEMPLATE_DOXYFILE = Template("""
|
||||
@@ -58,7 +57,6 @@ EXPAND_ONLY_PREDEF = YES
|
||||
# Defines required to keep doxygen from tripping on our attribute macros
|
||||
PREDEFINED = PACKED=
|
||||
PREDEFINED += ATTRIBUTE_CONST=
|
||||
PREDEFINED += MUST_CHECK=
|
||||
""")
|
||||
|
||||
def run_doxygen(output_path, input_paths=[]):
|
||||
|
@@ -1,23 +0,0 @@
|
||||
RADV
|
||||
====
|
||||
|
||||
RADV is a Vulkan driver for AMD GCN/RDNA GPUs.
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
For a list of environment variables to debug RADV, please see
|
||||
:ref:`radv env-vars` for a list.
|
||||
|
||||
Hardware Documentation
|
||||
----------------------
|
||||
|
||||
You can find a list of documentation for the various generations of
|
||||
AMD hardware on the `X.Org wiki
|
||||
<https://www.x.org/wiki/RadeonFeature/#documentation>`_.
|
||||
|
||||
ACO
|
||||
---
|
||||
|
||||
ACO is the shader-compiler used in RADV. You read its documentation
|
||||
`here <https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/amd/compiler/README.md>`_.
|
@@ -1,86 +0,0 @@
|
||||
VirGL
|
||||
=====
|
||||
|
||||
What is VirGL?
|
||||
--------------
|
||||
|
||||
VirGL is a virtual 3D GPU for use inside QEMU virtual machines, that
|
||||
allows the guest operating system to use the capabilities of the host GPU
|
||||
to accelerate 3D rendering. The plan is to have a guest GPU that is fully
|
||||
independent of the host GPU.
|
||||
|
||||
What exactly does it entail?
|
||||
----------------------------
|
||||
|
||||
The project entails creating a virtual 3D capable graphics card for
|
||||
virtual machines running inside QEMU. The design of this card is based
|
||||
around the concepts of Gallium3D to make writing Mesa and (eventually)
|
||||
Direct3D drivers for it easy. The card natively uses the Gallium TGSI
|
||||
intermediate representation for its shaders. The implementation of
|
||||
rendering for the card is done in the host system as part of QEMU and is
|
||||
implemented purely on OpenGL so you can get accelerated rendering on any
|
||||
sufficiently capable card/driver combination.
|
||||
|
||||
The project also consists of a complete Linux guest stack, composed of a
|
||||
Linux kernel KMS driver, X.org 2D DDX driver and Mesa 3D driver.
|
||||
|
||||
Current status
|
||||
--------------
|
||||
|
||||
* Many pieces are now upstreamed in various projects.
|
||||
* Kernel Linux 4.2 contains the modesetting only drivers. Linux 4.4
|
||||
contains the 3D supported pieces.
|
||||
* Mesa main contains the virgl 3D driver.
|
||||
* QEMU 2.4 contained the initial virtio-gpu with no acceleration
|
||||
support. QEMU 2.5 contains 3D support only with the GTK3 frontend with
|
||||
GL enabled.
|
||||
* The virglrenderer library seems mostly API stable.
|
||||
* Limited environment renderer (GLES2)
|
||||
|
||||
So what can it do now?
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Run a desktop and most 3D games I've thrown at it.
|
||||
|
||||
Scope
|
||||
-----
|
||||
|
||||
The project is currently investigating the desktop virtualisation use case
|
||||
only. This use case is where the viewer, host and guest are all running on
|
||||
the same machine (i.e. workstation or laptop). Some areas are in scope for
|
||||
future investigation but not being looked at, at this time.
|
||||
|
||||
Future scope
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Remoting rendering using a codec solution.
|
||||
* Windows guest, Direct3D drivers.
|
||||
* Other architectures
|
||||
|
||||
Out of scope
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Passing through GPUs or subsets of GPU capabilities.
|
||||
|
||||
Repos
|
||||
-----
|
||||
|
||||
All upstream parts are being developed upstream.
|
||||
|
||||
virglrenderer: the GL renderer https://gitlab.freedesktop.org/virgl/virglrenderer
|
||||
|
||||
Authors and Contributors
|
||||
------------------------
|
||||
|
||||
VirGL is a project undertaken by Dave Airlie at Red Hat. It builds on lots
|
||||
of open source work in a number of projects, primarily the Gallium 3D code
|
||||
from the Mesa project.
|
||||
|
||||
Support or Contact
|
||||
------------------
|
||||
|
||||
mailing list: virglrenderer-devel@lists.freedesktop.org
|
||||
|
||||
https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel
|
||||
|
||||
irc: `#virgil3d on OFTC <irc://irc.oftc.net/virgil3d>`__.
|
@@ -29,6 +29,8 @@ Here's a list of those requirements:
|
||||
|
||||
* ``logicOp``
|
||||
* ``fillModeNonSolid``
|
||||
* ``wideLines``
|
||||
* ``largePoints``
|
||||
* ``alphaToOne``
|
||||
* ``shaderClipDistance``
|
||||
|
||||
@@ -56,7 +58,7 @@ OpenGL 3.0
|
||||
^^^^^^^^^^
|
||||
|
||||
|
||||
For OpenGL 3.0 support, the following additional requirements must be
|
||||
For OpenGL 3.0 support, the following additional requirements needs to be
|
||||
supported:
|
||||
|
||||
* ``VkPhysicalDeviceFeatures``:
|
||||
@@ -91,7 +93,7 @@ verified:
|
||||
OpenGL 3.3
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 3.3 support, the following additional requirements must be
|
||||
For OpenGL 3.3 support, the following additional requirements needs to be
|
||||
supported, although some of these might not actually get verified:
|
||||
|
||||
* ``VkPhysicalDeviceFeatures``:
|
||||
@@ -105,7 +107,7 @@ supported, although some of these might not actually get verified:
|
||||
OpenGL 4.0
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 4.0 support, the following additional requirements must be
|
||||
For OpenGL 4.0 support, the following additional requirements needs to be
|
||||
supported:
|
||||
|
||||
* ``VkPhysicalDeviceFeatures``:
|
||||
@@ -127,22 +129,16 @@ supported:
|
||||
OpenGL 4.1
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 4.1 support, the following additional requirements must be
|
||||
supported:
|
||||
For OpenGL 4.1 support, the following additional ``VkPhysicalDeviceLimits``
|
||||
are required:
|
||||
|
||||
* ``VkPhysicalDeviceFeatures``:
|
||||
|
||||
* ``multiViewport``
|
||||
|
||||
* ``VkPhysicalDeviceLimits``
|
||||
|
||||
* ``maxImageDimension2D`` ≥ 16384
|
||||
* ``maxViewports`` ≥ 16
|
||||
* ``maxImageDimension2D`` ≥ 16384
|
||||
* ``maxViewports`` ≥ 16
|
||||
|
||||
OpenGL 4.2
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 4.2 support, the following additional requirements must be
|
||||
For OpenGL 4.2 support, the following additional requirements needs to be
|
||||
supported:
|
||||
|
||||
* ``VkPhysicalDeviceLimits``:
|
||||
@@ -175,12 +171,13 @@ supported:
|
||||
OpenGL 4.3
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 4.3 support, the following additional requirements must be
|
||||
For OpenGL 4.3 support, the following additional requirements needs to be
|
||||
supported:
|
||||
|
||||
* ``VkPhysicalDeviceFeatures``:
|
||||
|
||||
* ``robustBufferAccess``
|
||||
* ``multiViewport``
|
||||
|
||||
* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
|
||||
|
||||
@@ -195,7 +192,7 @@ supported:
|
||||
OpenGL 4.4
|
||||
^^^^^^^^^^
|
||||
|
||||
For OpenGL 4.4 support, the following additional requirements must be
|
||||
For OpenGL 4.4 support, the following additional requirements needs to be
|
||||
supported:
|
||||
|
||||
* Formats requiring ``VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT``:
|
||||
|
@@ -136,13 +136,13 @@ Core Mesa environment variables
|
||||
integers, such as ``130``. Mesa will not really implement all the
|
||||
features of the given language version if it's higher than what's
|
||||
normally reported. (for developers only)
|
||||
:envvar:`MESA_SHADER_CACHE_DISABLE`
|
||||
if set to ``true``, disables the on-disk shader cache. If set to
|
||||
``false``, enables the on-disk shader cache when it is disabled by
|
||||
:envvar:`MESA_GLSL_CACHE_DISABLE`
|
||||
if set to ``true``, disables the GLSL shader cache. If set to
|
||||
``false``, enables the GLSL shader cache when it is disabled by
|
||||
default.
|
||||
:envvar:`MESA_SHADER_CACHE_MAX_SIZE`
|
||||
:envvar:`MESA_GLSL_CACHE_MAX_SIZE`
|
||||
if set, determines the maximum size of the on-disk cache of compiled
|
||||
shader programs. Should be set to a number optionally followed by
|
||||
GLSL programs. Should be set to a number optionally followed by
|
||||
``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
|
||||
gigabytes. By default, gigabytes will be assumed. And if unset, a
|
||||
maximum size of 1GB will be used.
|
||||
@@ -154,9 +154,9 @@ Core Mesa environment variables
|
||||
you may end up with a 1GB cache for x86_64 and another 1GB cache for
|
||||
i386.
|
||||
|
||||
:envvar:`MESA_SHADER_CACHE_DIR`
|
||||
:envvar:`MESA_GLSL_CACHE_DIR`
|
||||
if set, determines the directory to be used for the on-disk cache of
|
||||
compiled shader programs. If this variable is not set, then the cache
|
||||
compiled GLSL programs. If this variable is not set, then the cache
|
||||
will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that
|
||||
variable is set), or else within ``.cache/mesa_shader_cache`` within
|
||||
the user's home directory.
|
||||
@@ -226,19 +226,6 @@ the :doc:`Xlib software driver page <xlibdriver>` for details.
|
||||
:envvar:`MESA_GLX_ALPHA_BITS`
|
||||
specifies default number of bits for alpha channel.
|
||||
|
||||
Mesa WGL driver environment variables
|
||||
-------------------------------------
|
||||
|
||||
The following are only applicable to the Mesa WGL driver, which is in use
|
||||
on Windows.
|
||||
|
||||
:envvar:`WGL_FORCE_MSAA`
|
||||
if set to a positive value, specifies the number of MSAA samples to
|
||||
force when choosing the display configuration.
|
||||
:envvar:`WGL_DISABLE_ERROR_DIALOGS`
|
||||
if set to 1, true or yes, disables Win32 error dialogs. Useful for
|
||||
automated test-runs.
|
||||
|
||||
Intel driver environment variables
|
||||
----------------------------------------------------
|
||||
|
||||
@@ -300,8 +287,8 @@ Intel driver environment variables
|
||||
suppress generation of dual-object geometry shader code
|
||||
``nofc``
|
||||
disable fast clears
|
||||
``noccs``
|
||||
disable lossless color compression
|
||||
``norbc``
|
||||
disable single sampled render buffer compression
|
||||
``optimizer``
|
||||
dump shader assembly to files at each optimization pass and
|
||||
iteration that make progress
|
||||
@@ -588,19 +575,30 @@ VC4 driver environment variables
|
||||
--------------------------------
|
||||
|
||||
:envvar:`VC4_DEBUG`
|
||||
a comma-separated list of named flags, which do various things. Use
|
||||
`VC4_DEBUG=help` to print a list of available options.
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
||||
|
||||
V3D/V3DV driver environment variables
|
||||
-------------------------------------
|
||||
|
||||
:envvar:`V3D_DEBUG`
|
||||
a comma-separated list of debug options. Use `V3D_DEBUG=help` to
|
||||
print a list of available options.
|
||||
|
||||
|
||||
.. _radv env-vars:
|
||||
``cl``
|
||||
dump command list during creation
|
||||
``qpu``
|
||||
dump generated QPU instructions
|
||||
``qir``
|
||||
dump QPU IR during program compile
|
||||
``nir``
|
||||
dump NIR during program compile
|
||||
``tgsi``
|
||||
dump TGSI during program compile
|
||||
``shaderdb``
|
||||
dump program compile information for shader-db analysis
|
||||
``perf``
|
||||
print during performance-related events
|
||||
``norast``
|
||||
skip actual hardware execution of commands
|
||||
``always_flush``
|
||||
flush after each draw call
|
||||
``always_sync``
|
||||
wait for finish after each flush
|
||||
``dump``
|
||||
write a GPU command stream trace file (VC4 simulator only)
|
||||
|
||||
RADV driver environment variables
|
||||
---------------------------------
|
||||
@@ -691,11 +689,7 @@ RADV driver environment variables
|
||||
:envvar:`RADV_FORCE_VRS`
|
||||
allow to force per-pipeline vertex VRS rates on GFX10.3+. This is only
|
||||
forced for pipelines that don't explicitely use VRS or flat shading.
|
||||
The supported values are 2x2, 1x2, 2x1 and 1x1. Only for testing purposes.
|
||||
|
||||
:envvar:`RADV_FORCE_VRS_CONFIG_FILE`
|
||||
similar to `RADV_FORCE_VRS` but allow to configure from a file. If present,
|
||||
this supersedes `RADV_FORCE_VRS`.
|
||||
The supported values are 2x2, 1x2 and 2x1. Only for testing purposes.
|
||||
|
||||
:envvar:`RADV_PERFTEST`
|
||||
a comma-separated list of named flags, which do various things:
|
||||
@@ -776,24 +770,13 @@ RADV driver environment variables
|
||||
radeonsi driver environment variables
|
||||
-------------------------------------
|
||||
|
||||
:envvar:`radeonsi_no_infinite_interp`
|
||||
Kill PS with infinite interp coeff (might fix hangs)
|
||||
|
||||
:envvar:`radeonsi_clamp_div_by_zero`
|
||||
Clamp div by zero (x / 0 becomes FLT_MAX instead of NaN) (might fix rendering corruptions)
|
||||
|
||||
:envvar:`radeonsi_zerovram`
|
||||
Clear all allocated memory to 0 before usage (might fix rendering corruptions)
|
||||
|
||||
:envvar:`AMD_DEBUG`
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
||||
``nodcc``
|
||||
Disable DCC.
|
||||
``nodccclear``
|
||||
Disable DCC fast clear
|
||||
``nodisplaydcc``
|
||||
disable Delta Color Compression (DCC) on displayable images
|
||||
Disable DCC fast clear.
|
||||
``nodccmsaa``
|
||||
Disable DCC for MSAA
|
||||
``nodpbb``
|
||||
@@ -836,6 +819,8 @@ radeonsi driver environment variables
|
||||
Don't print disassembled shaders
|
||||
``preoptir``
|
||||
Print the LLVM IR before initial optimizations
|
||||
``gisel``
|
||||
Enable LLVM global instruction selector.
|
||||
``w32ge``
|
||||
Use Wave32 for vertex, tessellation, and geometry shaders.
|
||||
``w32ps``
|
||||
|
@@ -111,11 +111,11 @@ GL 3.3, GLSL 3.30 --- all DONE: freedreno, i965, nv50, nvc0, r600, radeonsi, llv
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (v3d, panfrost)
|
||||
|
||||
|
||||
GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12
|
||||
GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink
|
||||
|
||||
GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, softpipe, panfrost)
|
||||
GL_ARB_draw_indirect DONE (freedreno, i965/gen7+, softpipe, v3d)
|
||||
GL_ARB_gpu_shader5 DONE (i965/gen7+)
|
||||
GL_ARB_draw_buffers_blend DONE (freedreno, i965/gen6+, nv50, softpipe, panfrost, d3d12)
|
||||
GL_ARB_draw_indirect DONE (freedreno, i965/gen7+, softpipe, v3d, d3d12)
|
||||
GL_ARB_gpu_shader5 DONE (i965/gen7+, d3d12)
|
||||
- 'precise' qualifier DONE (softpipe)
|
||||
- Dynamically uniform sampler array indices DONE (softpipe)
|
||||
- Dynamically uniform UBO array indices DONE (freedreno, softpipe)
|
||||
@@ -129,20 +129,20 @@ GL 4.0, GLSL 4.00 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virg
|
||||
- Interpolation functions DONE (softpipe)
|
||||
- New overload resolution rules DONE (softpipe)
|
||||
GL_ARB_gpu_shader_fp64 DONE (i965/gen7+, softpipe, )
|
||||
GL_ARB_sample_shading DONE (freedreno/a6xx, i965/gen6+, nv50, panfrost)
|
||||
GL_ARB_shader_subroutine DONE (freedreno, i965/gen6+, nv50, softpipe)
|
||||
GL_ARB_sample_shading DONE (freedreno/a6xx, i965/gen6+, nv50, panfrost, d3d12)
|
||||
GL_ARB_shader_subroutine DONE (freedreno, i965/gen6+, nv50, softpipe, d3d12)
|
||||
GL_ARB_tessellation_shader DONE (freedreno/a6xx, i965/gen7+, )
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, i965/gen6+, softpipe, panfrost)
|
||||
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, i965/gen6+, nv50, softpipe)
|
||||
GL_ARB_texture_gather DONE (freedreno, i965/gen6+, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_texture_query_lod DONE (freedreno, i965, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, i965/gen6+, softpipe, d3d12, panfrost)
|
||||
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, i965/gen6+, nv50, softpipe, d3d12)
|
||||
GL_ARB_texture_gather DONE (freedreno, i965/gen6+, nv50, softpipe, v3d, panfrost, d3d12)
|
||||
GL_ARB_texture_query_lod DONE (freedreno, i965, nv50, softpipe, v3d, panfrost, d3d12)
|
||||
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, i965/gen6+, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, i965/gen7+, softpipe, )
|
||||
|
||||
|
||||
GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12
|
||||
GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink
|
||||
|
||||
GL_ARB_ES2_compatibility DONE (freedreno, i965, nv50, softpipe, v3d, vc4, panfrost, lima)
|
||||
GL_ARB_ES2_compatibility DONE (freedreno, i965, nv50, softpipe, v3d, vc4, panfrost, d3d12, lima)
|
||||
GL_ARB_get_program_binary DONE (freedreno, 0 or 1 binary formats)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_shader_precision DONE (i965/gen7+, all drivers that support GLSL 4.10)
|
||||
@@ -150,19 +150,19 @@ GL 4.1, GLSL 4.10 --- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virg
|
||||
GL_ARB_viewport_array DONE (i965, nv50, softpipe, )
|
||||
|
||||
|
||||
GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12
|
||||
GL 4.2, GLSL 4.20 -- all DONE: i965/gen7+, nvc0, r600, radeonsi, llvmpipe, virgl, zink
|
||||
|
||||
GL_ARB_texture_compression_bptc DONE (freedreno, i965, softpipe, panfrost/if SoC supports)
|
||||
GL_ARB_compressed_texture_pixel_storage DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost)
|
||||
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, i965, softpipe, v3d, panfrost, d3d12)
|
||||
GL_ARB_texture_storage DONE (all drivers)
|
||||
GL_ARB_transform_feedback_instanced DONE (freedreno, i965, nv50, softpipe, v3d)
|
||||
GL_ARB_base_instance DONE (freedreno, i965, nv50, softpipe, v3d)
|
||||
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, i965, softpipe, panfrost)
|
||||
GL_ARB_base_instance DONE (freedreno, i965, nv50, softpipe, v3d, d3d12)
|
||||
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, i965, softpipe, panfrost, d3d12)
|
||||
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_packing DONE (all drivers)
|
||||
GL_ARB_internalformat_query DONE (freedreno, i965, nv50, softpipe, v3d, vc4, panfrost, lima)
|
||||
GL_ARB_internalformat_query DONE (freedreno, i965, nv50, softpipe, v3d, vc4, panfrost, d3d12, lima)
|
||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@ GL 4.3, GLSL 4.30 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, virgl
|
||||
GL_ARB_copy_image DONE (i965, nv50, softpipe, )
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_fragment_layer_viewport DONE (i965, nv50, softpipe, d3d12)
|
||||
GL_ARB_fragment_layer_viewport DONE (i965, nv50, softpipe, )
|
||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, i965, softpipe, v3d, d3d12)
|
||||
GL_ARB_internalformat_query2 DONE (all drivers)
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
@@ -300,12 +300,12 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
||||
GL_ARB_compute_variable_group_size DONE (i965/gen7+, nvc0, radeonsi, zink)
|
||||
GL_ARB_ES3_2_compatibility DONE (i965/gen8+, radeonsi, virgl, zink)
|
||||
GL_ARB_fragment_shader_interlock DONE (i965, zink)
|
||||
GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12)
|
||||
GL_ARB_gpu_shader_int64 DONE (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe, zink)
|
||||
GL_ARB_parallel_shader_compile DONE (freedreno, iris, radeonsi)
|
||||
GL_ARB_post_depth_coverage DONE (i965, nvc0, radeonsi, llvmpipe, zink)
|
||||
GL_ARB_robustness_isolation not started
|
||||
GL_ARB_sample_locations DONE (nvc0, zink)
|
||||
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, virgl, zink)
|
||||
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, i965, nvc0, r600, radeonsi, softpipe, virgl)
|
||||
GL_ARB_shader_ballot DONE (i965/gen8+, nvc0, radeonsi, zink)
|
||||
GL_ARB_shader_clock DONE (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl, zink)
|
||||
GL_ARB_shader_stencil_export DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, virgl, panfrost, zink)
|
||||
@@ -462,35 +462,35 @@ Vulkan 1.2 -- all DONE: anv, vn
|
||||
VK_KHR_spirv_1_4 DONE (anv, lvp, radv, tu, vn)
|
||||
VK_KHR_timeline_semaphore DONE (anv, lvp, radv, tu, vn)
|
||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, lvp, radv, tu, vn)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, radv, tu, vn)
|
||||
VK_EXT_descriptor_indexing DONE (anv/gen9+, radv, tu, vn)
|
||||
VK_EXT_host_query_reset DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu, vn)
|
||||
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+, tu, vn)
|
||||
VK_EXT_separate_stencil_usage DONE (anv, lvp, radv, tu, vn)
|
||||
VK_EXT_separate_stencil_usage DONE (anv, lvp, tu, vn)
|
||||
VK_EXT_shader_viewport_index_layer DONE (anv, lvp, radv, tu, vn)
|
||||
|
||||
Vulkan 1.3 -- all DONE: anv, radv, lvp
|
||||
Vulkan 1.3 -- all DONE: anv, radv
|
||||
|
||||
VK_KHR_copy_commands2 DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_KHR_dynamic_rendering DONE (anv, lvp, radv)
|
||||
VK_KHR_format_feature_flags2 DONE (anv, radv, tu)
|
||||
VK_KHR_maintenance4 DONE (anv, radv, tu)
|
||||
VK_KHR_shader_non_semantic_info DONE (anv, radv, tu, v3dv)
|
||||
VK_KHR_format_feature_flags2 DONE (anv, radv)
|
||||
VK_KHR_maintenance4 DONE (anv, radv)
|
||||
VK_KHR_shader_non_semantic_info DONE (anv, radv)
|
||||
VK_KHR_shader_terminate_invocation DONE (anv, radv, tu)
|
||||
VK_KHR_synchronization2 DONE (anv, radv)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, radv, tu)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, radv)
|
||||
VK_EXT_4444_formats DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_extended_dynamic_state DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_extended_dynamic_state2 DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_inline_uniform_block DONE (anv, radv, v3dv)
|
||||
VK_EXT_extended_dynamic_state2 DONE (anv, lvp, radv)
|
||||
VK_EXT_inline_uniform_block DONE (anv, radv)
|
||||
VK_EXT_pipeline_creation_cache_control DONE (anv, radv, v3dv)
|
||||
VK_EXT_pipeline_creation_feedback DONE (anv, radv, v3dv)
|
||||
VK_EXT_private_data DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_image_robustness DONE (anv, radv, tu)
|
||||
VK_EXT_image_robustness DONE (anv, radv)
|
||||
VK_EXT_shader_demote_to_helper_invocation DONE (anv, radv, tu)
|
||||
VK_EXT_subgroup_size_control DONE (anv, radv, tu)
|
||||
VK_EXT_texel_buffer_alignment DONE (anv, radv, tu)
|
||||
VK_EXT_subgroup_size_control DONE (anv, radv)
|
||||
VK_EXT_texel_buffer_alignment DONE (anv, radv)
|
||||
|
||||
Khronos extensions that are not part of any Vulkan version:
|
||||
|
||||
@@ -511,9 +511,9 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_KHR_incremental_present DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_performance_query DONE (anv/gen8+, tu)
|
||||
VK_KHR_pipeline_executable_properties DONE (anv, radv, tu)
|
||||
VK_KHR_pipeline_library DONE (lvp, radv)
|
||||
VK_KHR_pipeline_library in progress
|
||||
VK_KHR_push_descriptor DONE (anv, lvp, radv, tu)
|
||||
VK_KHR_ray_query in progress
|
||||
VK_KHR_ray_query not started
|
||||
VK_KHR_ray_tracing_pipeline in progress
|
||||
VK_KHR_shader_clock DONE (anv, radv)
|
||||
VK_KHR_shader_integer_dot_product DONE (anv, radv, tu)
|
||||
@@ -522,7 +522,7 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_KHR_surface DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_surface_protected_capabilities DONE (anv, lvp, radv, v3dv, vn)
|
||||
VK_KHR_swapchain DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain_mutable_format DONE (anv, lvp, radv, v3dv, vn)
|
||||
VK_KHR_swapchain_mutable_format DONE (anv, radv, v3dv, vn)
|
||||
VK_KHR_wayland_surface DONE (anv, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_workgroup_memory_explicit_layout DONE (anv, radv)
|
||||
VK_KHR_win32_keyed_mutex not started
|
||||
@@ -537,7 +537,6 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_EXT_custom_border_color DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_debug_marker DONE (radv)
|
||||
VK_EXT_depth_clip_enable DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_depth_clip_control DONE (lvp, radv, tu)
|
||||
VK_EXT_depth_range_unrestricted DONE (radv)
|
||||
VK_EXT_discard_rectangles DONE (radv)
|
||||
VK_EXT_display_control DONE (anv, tu)
|
||||
@@ -547,20 +546,17 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_EXT_fragment_shader_interlock DONE (anv/gen9+)
|
||||
VK_EXT_global_priority DONE (anv, radv)
|
||||
VK_EXT_global_priority_query DONE (radv)
|
||||
VK_EXT_graphics_pipeline_library DONE (lvp)
|
||||
VK_EXT_image_2d_view_of_3d DONE (anv, lvp)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, radv/gfx9+, tu, v3dv, vn)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, radv/gfx9+, tu, vn)
|
||||
VK_EXT_image_view_min_lod DONE (radv)
|
||||
VK_EXT_index_type_uint8 DONE (anv, lvp, radv/gfx8+, v3dv, tu)
|
||||
VK_EXT_line_rasterization DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_line_rasterization DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_memory_budget DONE (anv, radv, tu)
|
||||
VK_EXT_memory_priority DONE (radv)
|
||||
VK_EXT_multi_draw DONE (anv, lvp, radv)
|
||||
VK_EXT_pci_bus_info DONE (anv, radv)
|
||||
VK_EXT_physical_device_drm DONE (anv, radv, tu, v3dv)
|
||||
VK_EXT_physical_device_drm DONE (anv, radv, v3dv)
|
||||
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv/gfx10+)
|
||||
VK_EXT_primitive_topology_list_restart DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_primitives_generated_query DONE (lvp, tu)
|
||||
VK_EXT_provoking_vertex DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_queue_family_foreign DONE (anv, radv, vn)
|
||||
VK_EXT_robustness2 DONE (anv, radv, tu)
|
||||
@@ -576,7 +572,7 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_EXT_vertex_input_dynamic_state DONE (lvp, radv)
|
||||
VK_EXT_ycbcr_image_arrays DONE (anv, radv)
|
||||
VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, radv, vn)
|
||||
VK_ANDROID_native_buffer DONE (anv, radv, tu, v3dv, vn)
|
||||
VK_ANDROID_native_buffer DONE (anv, radv, vn)
|
||||
VK_GOOGLE_decorate_string DONE (anv, lvp, radv)
|
||||
VK_GOOGLE_hlsl_functionality1 DONE (anv, lvp, radv)
|
||||
VK_GOOGLE_user_type DONE (anv, radv)
|
||||
@@ -584,7 +580,7 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_NV_compute_shader_derivatives DONE (anv, radv)
|
||||
VK_EXT_acquire_drm_display DONE (radv, anv)
|
||||
VK_VALVE_mutable_descriptor_type DONE (anv, radv, tu)
|
||||
VK_AMD_buffer_marker DONE (radv, tu)
|
||||
VK_AMD_buffer_marker DONE (radv)
|
||||
VK_AMD_device_coherent_memory DONE (radv)
|
||||
VK_AMD_draw_indirect_count DONE (radv)
|
||||
VK_AMD_gcn_shader DONE (radv)
|
||||
@@ -599,9 +595,9 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_AMD_shader_explicit_vertex_parameter DONE (radv)
|
||||
VK_AMD_shader_fragment_mask DONE (radv)
|
||||
VK_AMD_shader_image_load_store_lod DONE (radv)
|
||||
VK_AMD_shader_info DONE (radv)
|
||||
VK_AMD_shader_trinary_minmax DONE (radv)
|
||||
VK_AMD_texture_gather_bias_lod DONE (radv)
|
||||
VK_ARM_rasterization_order_attachment_access DONE (tu)
|
||||
|
||||
|
||||
OpenCL 1.0 -- all DONE:
|
||||
|
@@ -403,7 +403,7 @@ Buffer mapping conclusions
|
||||
* Buffer valid range tracking doesn't need to be fancy, "number of bytes
|
||||
valid starting from 0" is sufficient for all examples found.
|
||||
|
||||
* Use the ``util_debug_callback`` to report stalls on buffer mapping to ease
|
||||
* Use the ``pipe_debug_callback`` to report stalls on buffer mapping to ease
|
||||
debug.
|
||||
|
||||
* Buffer binding points are not useful for tuning buffer placement (See all the
|
||||
|
@@ -64,14 +64,14 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS``: The maximum number of texture array
|
||||
layers supported. If 0, the array textures are not supported at all and
|
||||
the ARRAY texture targets are invalid.
|
||||
* ``PIPE_CAP_FS_COORD_ORIGIN_UPPER_LEFT``: Whether the upper-left origin
|
||||
fragment convention is supported.
|
||||
* ``PIPE_CAP_FS_COORD_ORIGIN_LOWER_LEFT``: Whether the lower-left origin
|
||||
fragment convention is supported.
|
||||
* ``PIPE_CAP_FS_COORD_PIXEL_CENTER_HALF_INTEGER``: Whether the half-integer
|
||||
pixel-center fragment convention is supported.
|
||||
* ``PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER``: Whether the integer
|
||||
pixel-center fragment convention is supported.
|
||||
* ``PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT``: Whether the TGSI property
|
||||
FS_COORD_ORIGIN with value UPPER_LEFT is supported.
|
||||
* ``PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT``: Whether the TGSI property
|
||||
FS_COORD_ORIGIN with value LOWER_LEFT is supported.
|
||||
* ``PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER``: Whether the TGSI
|
||||
property FS_COORD_PIXEL_CENTER with value HALF_INTEGER is supported.
|
||||
* ``PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER``: Whether the TGSI
|
||||
property FS_COORD_PIXEL_CENTER with value INTEGER is supported.
|
||||
* ``PIPE_CAP_DEPTH_CLIP_DISABLE``: Whether the driver is capable of disabling
|
||||
depth clipping (through pipe_rasterizer_state).
|
||||
* ``PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE``: Whether the driver is capable of
|
||||
@@ -83,8 +83,8 @@ The integer capabilities:
|
||||
clipping. If not, depth_clamp will be the inverse of depth_clip_far.
|
||||
* ``PIPE_CAP_SHADER_STENCIL_EXPORT``: Whether a stencil reference value can be
|
||||
written from a fragment shader.
|
||||
* ``PIPE_CAP_VS_INSTANCEID``: Whether ``SYSTEM_VALUE_INSTANCE_ID`` is
|
||||
supported in the vertex shader.
|
||||
* ``PIPE_CAP_TGSI_INSTANCEID``: Whether TGSI_SEMANTIC_INSTANCEID is supported
|
||||
in the vertex shader.
|
||||
* ``PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR``: Whether the driver supports
|
||||
per-instance vertex attribs.
|
||||
* ``PIPE_CAP_FRAGMENT_COLOR_CLAMPED``: Whether fragment color clamping is
|
||||
@@ -206,9 +206,10 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_MIXED_FRAMEBUFFER_SIZES``: Whether it is allowed to have
|
||||
different sizes for fb color/zs attachments. This controls whether
|
||||
ARB_framebuffer_object is provided.
|
||||
* ``PIPE_CAP_VS_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and
|
||||
``VARYING_SLOT_VIEWPORT`` are supported as vertex shader outputs. Note that
|
||||
the viewport will only be used if multiple viewports are exposed.
|
||||
* ``PIPE_CAP_TGSI_VS_LAYER_VIEWPORT``: Whether ``TGSI_SEMANTIC_LAYER`` and
|
||||
``TGSI_SEMANTIC_VIEWPORT_INDEX`` are supported as vertex shader
|
||||
outputs. Note that the viewport will only be used if multiple viewports are
|
||||
exposed.
|
||||
* ``PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES``: The maximum number of vertices
|
||||
output by a single invocation of a geometry shader.
|
||||
* ``PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS``: The maximum number of
|
||||
@@ -235,8 +236,9 @@ The integer capabilities:
|
||||
implemented.
|
||||
* ``PIPE_CAP_TEXTURE_GATHER_OFFSETS``: Whether the ``TG4`` instruction can
|
||||
accept 4 offsets.
|
||||
* ``PIPE_CAP_VS_WINDOW_SPACE_POSITION``: Whether window-space position is
|
||||
supported, which disables clipping and viewport transformation.
|
||||
* ``PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION``: Whether
|
||||
TGSI_PROPERTY_VS_WINDOW_SPACE_POSITION is supported, which disables clipping
|
||||
and viewport transformation.
|
||||
* ``PIPE_CAP_MAX_VERTEX_STREAMS``: The maximum number of vertex streams
|
||||
supported by the geometry shader. If stream-out is supported, this should be
|
||||
at least 1. If stream-out is not supported, this should be 0.
|
||||
@@ -248,7 +250,7 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS``: Whether the driver supports
|
||||
taking the number of indirect draws from a separate parameter
|
||||
buffer, see pipe_draw_indirect_info::indirect_draw_count.
|
||||
* ``PIPE_CAP_FS_FINE_DERIVATIVE``: Whether the fragment shader supports
|
||||
* ``PIPE_CAP_TGSI_FS_FINE_DERIVATIVE``: Whether the fragment shader supports
|
||||
the FINE versions of DDX/DDY.
|
||||
* ``PIPE_CAP_VENDOR_ID``: The vendor ID of the underlying hardware. If it's
|
||||
not available one should return 0xFFFFFFFF.
|
||||
@@ -304,7 +306,7 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_DEPTH_BOUNDS_TEST``: Whether bounds_test, bounds_min, and
|
||||
bounds_max states of pipe_depth_stencil_alpha_state behave according
|
||||
to the GL_EXT_depth_bounds_test specification.
|
||||
* ``PIPE_CAP_TEXTURE_QUERY_SAMPLES``: Whether the `TXQS` opcode is supported
|
||||
* ``PIPE_CAP_TGSI_TXQS``: Whether the `TXQS` opcode is supported
|
||||
* ``PIPE_CAP_FORCE_PERSAMPLE_INTERP``: If the driver can force per-sample
|
||||
interpolation for all fragment shader inputs if
|
||||
pipe_rasterizer_state::force_persample_interp is set. This is only used
|
||||
@@ -326,13 +328,13 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_DRAW_PARAMETERS``: Whether ``TGSI_SEMANTIC_BASEVERTEX``,
|
||||
``TGSI_SEMANTIC_BASEINSTANCE``, and ``TGSI_SEMANTIC_DRAWID`` are
|
||||
supported in vertex shaders.
|
||||
* ``PIPE_CAP_SHADER_PACK_HALF_FLOAT``: Whether packed 16-bit float
|
||||
packing/unpacking opcodes are supported.
|
||||
* ``PIPE_CAP_FS_POSITION_IS_SYSVAL``: If gallium frontends should use a
|
||||
system value for the POSITION fragment shader input.
|
||||
* ``PIPE_CAP_FS_POINT_IS_SYSVAL``: If gallium frontends should use a system
|
||||
value for the POINT fragment shader input.
|
||||
* ``PIPE_CAP_FS_FACE_IS_INTEGER_SYSVAL``: If gallium frontends should use
|
||||
* ``PIPE_CAP_TGSI_PACK_HALF_FLOAT``: Whether the ``UP2H`` and ``PK2H``
|
||||
TGSI opcodes are supported.
|
||||
* ``PIPE_CAP_TGSI_FS_POSITION_IS_SYSVAL``: If gallium frontends should use
|
||||
a system value for the POSITION fragment shader input.
|
||||
* ``PIPE_CAP_TGSI_FS_POINT_IS_SYSVAL``: If gallium frontends should use
|
||||
a system value for the POINT fragment shader input.
|
||||
* ``PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL``: If gallium frontends should use
|
||||
a system value for the FACE fragment shader input.
|
||||
Also, the FACE system value is integer, not float.
|
||||
* ``PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT``: Describes the required
|
||||
@@ -372,13 +374,9 @@ The integer capabilities:
|
||||
and accesses to unbound resources.
|
||||
* ``PIPE_CAP_CULL_DISTANCE``: Whether the driver supports the arb_cull_distance
|
||||
extension and thus implements proper support for culling planes.
|
||||
* ``PIPE_CAP_CULL_DISTANCE_NOCOMBINE``: Whether the driver wants to skip
|
||||
running the `nir_lower_clip_cull_distance_arrays` pass in order to get
|
||||
VARYING_SLOT_CULL_DIST0 slot variables.
|
||||
* ``PIPE_CAP_PRIMITIVE_RESTART_FOR_PATCHES``: Whether primitive restart is
|
||||
supported for patch primitives.
|
||||
* ``PIPE_CAP_SHADER_GROUP_VOTE``: Whether the ``VOTE_*`` ops can be used in
|
||||
shaders.
|
||||
* ``PIPE_CAP_TGSI_VOTE``: Whether the ``VOTE_*`` ops can be used in shaders.
|
||||
* ``PIPE_CAP_MAX_WINDOW_RECTANGLES``: The maxium number of window rectangles
|
||||
supported in ``set_window_rectangles``.
|
||||
* ``PIPE_CAP_POLYGON_OFFSET_UNITS_UNSCALED``: If true, the driver implements support
|
||||
@@ -393,7 +391,7 @@ The integer capabilities:
|
||||
32-bit. If set to off, that means that a B5G6R5 + Z24 or RGBA8 + Z16
|
||||
combination will require a driver fallback, and should not be
|
||||
advertised in the GLX/EGL config list.
|
||||
* ``PIPE_CAP_SHADER_ARRAY_COMPONENTS``: If true, the driver interprets the
|
||||
* ``PIPE_CAP_TGSI_ARRAY_COMPONENTS``: If true, the driver interprets the
|
||||
UsageMask of input and output declarations and allows declaring arrays
|
||||
in overlapping ranges. The components must be a contiguous range, e.g. a
|
||||
UsageMask of xy or yzw is allowed, but xz or yw isn't. Declarations with
|
||||
@@ -408,7 +406,7 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream
|
||||
output mode is able to interleave across buffers. This is required for
|
||||
ARB_transform_feedback3.
|
||||
* ``PIPE_CAP_SHADER_CAN_READ_OUTPUTS``: Whether every TGSI shader stage can read
|
||||
* ``PIPE_CAP_TGSI_CAN_READ_OUTPUTS``: Whether every TGSI shader stage can read
|
||||
from the output file.
|
||||
* ``PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY``: Tell the GLSL compiler to use
|
||||
the minimum amount of optimizations just to be able to do all the linking
|
||||
@@ -428,7 +426,7 @@ The integer capabilities:
|
||||
operations are supported.
|
||||
* ``PIPE_CAP_TGSI_TEX_TXF_LZ``: Whether TEX_LZ and TXF_LZ opcodes are
|
||||
supported.
|
||||
* ``PIPE_CAP_SHADER_CLOCK``: Whether the CLOCK opcode is supported.
|
||||
* ``PIPE_CAP_TGSI_CLOCK``: Whether the CLOCK opcode is supported.
|
||||
* ``PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE``: Whether the
|
||||
PIPE_POLYGON_MODE_FILL_RECTANGLE mode is supported for
|
||||
``pipe_rasterizer_state::fill_front`` and
|
||||
@@ -436,10 +434,10 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE``: The page size of sparse buffers in
|
||||
bytes, or 0 if sparse buffers are not supported. The page size must be at
|
||||
most 64KB.
|
||||
* ``PIPE_CAP_SHADER_BALLOT``: Whether the BALLOT and READ_* opcodes as well as
|
||||
* ``PIPE_CAP_TGSI_BALLOT``: Whether the BALLOT and READ_* opcodes as well as
|
||||
the SUBGROUP_* semantics are supported.
|
||||
* ``PIPE_CAP_TES_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and
|
||||
``VARYING_SLOT_VIEWPORT`` are supported as tessellation evaluation
|
||||
* ``PIPE_CAP_TGSI_TES_LAYER_VIEWPORT``: Whether ``TGSI_SEMANTIC_LAYER`` and
|
||||
``TGSI_SEMANTIC_VIEWPORT_INDEX`` are supported as tessellation evaluation
|
||||
shader outputs.
|
||||
* ``PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX``: Whether a buffer with just
|
||||
PIPE_BIND_CONSTANT_BUFFER can be legally passed to set_vertex_buffers.
|
||||
@@ -535,8 +533,8 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_SURFACE_SAMPLE_COUNT``: Whether the driver
|
||||
supports pipe_surface overrides of resource nr_samples. If set, will
|
||||
enable EXT_multisampled_render_to_texture.
|
||||
* ``PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD``: Atomic floating point adds are
|
||||
supported on images, buffers, and shared memory.
|
||||
* ``PIPE_CAP_TGSI_ATOMFADD``: Atomic floating point adds are supported on
|
||||
images, buffers, and shared memory.
|
||||
* ``PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND``: True if the driver needs blend state to use zero/one instead of destination alpha for RGB/XRGB formats.
|
||||
* ``PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS``: True if the driver wants TESSINNER and TESSOUTER to be inputs (rather than system values) for tessellation evaluation shaders.
|
||||
* ``PIPE_CAP_DEST_SURFACE_SRGB_CONTROL``: Indicates whether the drivers
|
||||
@@ -579,8 +577,7 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_TEXTURE_SHADOW_LOD``: True if the driver supports shadow sampler
|
||||
types with texture functions having interaction with LOD of texture lookup.
|
||||
* ``PIPE_CAP_SHADER_SAMPLES_IDENTICAL``: True if the driver supports a shader query to tell whether all samples of a multisampled surface are definitely identical.
|
||||
* ``PIPE_CAP_IMAGE_ATOMIC_INC_WRAP``: Atomic increment/decrement + wrap around
|
||||
are supported.
|
||||
* ``PIPE_CAP_TGSI_ATOMINC_WRAP``: Atomic increment/decrement + wrap around are supported.
|
||||
* ``PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF``: True if gallium frontends should
|
||||
turn arrays whose contents can be deduced at compile time into constant
|
||||
buffer loads, or false if the driver can handle such arrays itself in a more
|
||||
|
@@ -377,7 +377,7 @@ This instruction replicates its result.
|
||||
|
||||
.. opcode:: DDX, DDX_FINE - Derivative Relative To X
|
||||
|
||||
The fine variant is only used when ``PIPE_CAP_FS_FINE_DERIVATIVE`` is
|
||||
The fine variant is only used when ``PIPE_CAP_TGSI_FS_FINE_DERIVATIVE`` is
|
||||
advertised. When it is, the fine version guarantees one derivative per row
|
||||
while DDX is allowed to be the same for the entire 2x2 quad.
|
||||
|
||||
@@ -394,7 +394,7 @@ while DDX is allowed to be the same for the entire 2x2 quad.
|
||||
|
||||
.. opcode:: DDY, DDY_FINE - Derivative Relative To Y
|
||||
|
||||
The fine variant is only used when ``PIPE_CAP_FS_FINE_DERIVATIVE`` is
|
||||
The fine variant is only used when ``PIPE_CAP_TGSI_FS_FINE_DERIVATIVE`` is
|
||||
advertised. When it is, the fine version guarantees one derivative per column
|
||||
while DDY is allowed to be the same for the entire 2x2 quad.
|
||||
|
||||
@@ -3249,7 +3249,7 @@ For geometry shaders, this semantic label indicates that an output
|
||||
contains the index of the viewport (and scissor) to use.
|
||||
This is an integer value, and only the X component is used.
|
||||
|
||||
If PIPE_CAP_VS_LAYER_VIEWPORT or PIPE_CAP_TES_LAYER_VIEWPORT is
|
||||
If PIPE_CAP_TGSI_VS_LAYER_VIEWPORT or PIPE_CAP_TGSI_TES_LAYER_VIEWPORT is
|
||||
supported, then this semantic label can also be used in vertex or
|
||||
tessellation evaluation shaders, respectively. Only the value written in the
|
||||
last vertex processing stage is used.
|
||||
@@ -3263,7 +3263,7 @@ contains the layer value to use for the color and depth/stencil surfaces.
|
||||
This is an integer value, and only the X component is used.
|
||||
(Also known as rendertarget array index.)
|
||||
|
||||
If PIPE_CAP_VS_LAYER_VIEWPORT or PIPE_CAP_TES_LAYER_VIEWPORT is
|
||||
If PIPE_CAP_TGSI_VS_LAYER_VIEWPORT or PIPE_CAP_TGSI_TES_LAYER_VIEWPORT is
|
||||
supported, then this semantic label can also be used in vertex or
|
||||
tessellation evaluation shaders, respectively. Only the value written in the
|
||||
last vertex processing stage is used.
|
||||
|
@@ -89,12 +89,10 @@ Linux, FreeBSD, and other operating systems.
|
||||
drivers/lima
|
||||
drivers/llvmpipe
|
||||
drivers/panfrost
|
||||
drivers/radv
|
||||
drivers/svga3d
|
||||
drivers/v3d
|
||||
drivers/vc4
|
||||
drivers/venus
|
||||
drivers/virgl
|
||||
drivers/zink
|
||||
|
||||
.. toctree::
|
||||
@@ -113,7 +111,6 @@ Linux, FreeBSD, and other operating systems.
|
||||
release-calendar
|
||||
dispatch
|
||||
gallium/index
|
||||
vulkan/index
|
||||
nir/index
|
||||
isl/index
|
||||
android
|
||||
|
@@ -5,7 +5,7 @@ Mesa builds on macOS without modifications. However, there are some details to
|
||||
be aware of.
|
||||
|
||||
- Mesa has a number of build-time dependencies. Most dependencies, including
|
||||
Meson itself, are available in `homebrew <https://brew.sh>`_, which has a
|
||||
Meson itself, are available in `homebrew <https://brew.sh>`, which has a
|
||||
Mesa package for reference. The exception seems to be Mako, a Python module
|
||||
used for templating, which you can install as `pip3 install mako`.
|
||||
- macOS is picky about its build-time environment. Type `brew sh` before
|
||||
@@ -16,7 +16,7 @@ hardware-accelerated system OpenGL framework, to provide hardware acceleration
|
||||
to X11 applications on macOS running via XQuartz.
|
||||
|
||||
Mesa's software rasterizers also work on macOS. To build, set the build options
|
||||
``-Dosmesa=true -Dglx=xlib`` and select an appropriate Gallium software
|
||||
`-Dosmesa=true -Dglx=xlib` and select an appropriate Gallium software
|
||||
rasterizer.
|
||||
|
||||
For native hardware, stay tuned for updates here!
|
||||
|
@@ -1,6 +1,7 @@
|
||||
22.0,2022-04-06,22.0.2,Dylan Baker
|
||||
,2022-04-20,22.0.3,Dylan Baker,This is the last planned release of the 22.0.x series.
|
||||
22.1,2022-04-13,22.1.0-rc1,Dylan Baker
|
||||
,2022-04-20,22.1.0-rc2,Dylan Baker
|
||||
,2022-04-27,22.1.0-rc3,Dylan Baker
|
||||
,2022-05-04,22.1.0-rc4,Dylan Baker,Or 22.1.0 final.
|
||||
21.3,2022-02-09,21.3.6,Eric Engestrom,
|
||||
,2022-02-23,21.3.7,Eric Engestrom,
|
||||
,2022-03-09,21.3.8,Eric Engestrom,Last planned 21.3.x release.
|
||||
22.0,2022-02-02,22.0.0-rc1,Dylan Baker
|
||||
,2022-02-09,22.0.0-rc2,Dylan Baker
|
||||
,2022-02-16,22.0.0-rc3,Dylan Baker
|
||||
,2022-02-22,22.0.0-rc4,Dylan Baker,Or 22.0.0 final.
|
||||
|
|
@@ -275,8 +275,8 @@ Increment the version contained in the file ``VERSION`` at Mesa's top-level,
|
||||
then commit this change and **push the branch** (if you forget to do
|
||||
this, ``release.sh`` below will fail).
|
||||
|
||||
Use the release.sh script from xorg `util-modular <https://gitlab.freedesktop.org/xorg/util/modular>`__
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Use the release.sh script from xorg `util-modular <https://cgit.freedesktop.org/xorg/util/modular/>`__
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Start the release process.
|
||||
|
||||
|
@@ -3,11 +3,6 @@ Release Notes
|
||||
|
||||
The release notes summarize what's new or changed in each Mesa release.
|
||||
|
||||
- :doc:`22.0.1 release notes <relnotes/22.0.1>`
|
||||
- :doc:`21.3.8 release notes <relnotes/21.3.8>`
|
||||
- :doc:`22.0.0 release notes <relnotes/22.0.0>`
|
||||
- :doc:`21.3.7 release notes <relnotes/21.3.7>`
|
||||
- :doc:`21.3.6 release notes <relnotes/21.3.6>`
|
||||
- :doc:`21.3.5 release notes <relnotes/21.3.5>`
|
||||
- :doc:`21.3.4 release notes <relnotes/21.3.4>`
|
||||
- :doc:`21.3.3 release notes <relnotes/21.3.3>`
|
||||
@@ -359,11 +354,6 @@ release notes, or in the `old docs`_.
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
relnotes/22.0.1
|
||||
relnotes/21.3.8
|
||||
relnotes/22.0.0
|
||||
relnotes/21.3.7
|
||||
relnotes/21.3.6
|
||||
relnotes/21.3.5
|
||||
relnotes/21.3.4
|
||||
relnotes/21.3.3
|
||||
|
@@ -1,149 +0,0 @@
|
||||
Mesa 21.3.6 Release Notes / 2022-02-09
|
||||
======================================
|
||||
|
||||
Mesa 21.3.6 is a bug fix release which fixes bugs found since the 21.3.5 release.
|
||||
|
||||
Mesa 21.3.6 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 21.3.6 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
96bb761fd546e9aa41d025fcc025225c5668443839dae21e3731959beb096736 mesa-21.3.6.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- radv: CullDistance fail
|
||||
- i965: Segmentation fault during glinfo context destruction, regression in 21.3.x
|
||||
- Vulkan Wayland WSI returns empty surface formats
|
||||
- [REGRESSION][BISECTED] iris: Qutebrowser/QtWebEngine sporadically flashes the window in white
|
||||
- Flickering Intel Uhd 620 Graphics
|
||||
- Broken Terraria & Glitches in Forza Horizon 4
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Bas Nieuwenhuizen (1):
|
||||
|
||||
- Revert "nir/algebraic: distribute fmul(fadd(a, b), c) when b and c are constants"
|
||||
|
||||
Caio Oliveira (1):
|
||||
|
||||
- anv: Fix subgroupSupportedStages physical property
|
||||
|
||||
Charles Baker (1):
|
||||
|
||||
- Revert "zink: handle vertex buffer offset overflows"
|
||||
|
||||
Connor Abbott (2):
|
||||
|
||||
- ir3: Fix copy-paste mistakes in ir3_block_remove_physical_predecessor()
|
||||
- ir3/cp: ir3: Prevent propagating shared regs out of loops harder
|
||||
|
||||
Danylo Piliaiev (1):
|
||||
|
||||
- ir3: opt_deref in opt loop to remove unnecessary tex casts
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- crocus: find correct relocation target for the bo.
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- vulkan: Fix leak of error messages
|
||||
|
||||
Eric Engestrom (3):
|
||||
|
||||
- .pick_status.json: Update to cb781fc350108584116280fc597c695d2f476c68
|
||||
- .pick_status.json: Mark 15e77504461a30038a054c87cc53a694171c9cf4 as denominated
|
||||
- .pick_status.json: Mark 960e72417f3e8885699cf384f690853e14ba44da as denominated
|
||||
|
||||
Francisco Jerez (1):
|
||||
|
||||
- intel/fs: Take into account region strides during SIMD lowering decision of SHUFFLE.
|
||||
|
||||
Georg Lehmann (4):
|
||||
|
||||
- vulkan/wsi/wayland: Fix add_wl_shm_format alpha/opaqueness.
|
||||
- vulkan/wsi/wayland: Convert missing vulkan formats to shm formats.
|
||||
- vulkan/wsi/wayland: Add modifiers for RGB formats.
|
||||
- vulkan/wsi/wayland: Fix add_drm_format_modifier aplha/opaqueness.
|
||||
|
||||
Jason Ekstrand (2):
|
||||
|
||||
- anv/pass: Don't set first_subpass_layout for stencil-only attachments
|
||||
- vulkan/wsi: Set MUTABLE_FORMAT_BIT in the prime path
|
||||
|
||||
Kenneth Graunke (1):
|
||||
|
||||
- i965: Avoid NULL drawbuffer in brw_flush_front
|
||||
|
||||
Lionel Landwerlin (2):
|
||||
|
||||
- intel/fs: don't set allow_sample_mask for CS intrinsics
|
||||
- intel/nir: fix shader call lowering
|
||||
|
||||
Manas Chaudhary (1):
|
||||
|
||||
- panvk: Fix pointer corruption in panvk_add_wait_event_syncobjs
|
||||
|
||||
Mike Blumenkrantz (15):
|
||||
|
||||
- zink: never use SpvOpImageQuerySizeLod for texel buffers
|
||||
- zink: reorder fbfetch flag-setting to avoid null deref
|
||||
- zink: fix vertex buffer mask computation for null buffers
|
||||
- zink: clamp tbo creation to maxTexelBufferElements
|
||||
- zink: add vertex shader pipeline bit for generated barrier construction
|
||||
- zink: fix waiting on current batch id
|
||||
- zink: cast image atomic op params/results based on image type
|
||||
- zink: use SpvScopeDevice over SpvScopeWorkgroup for atomic shader ops
|
||||
- zink: disable PIPE_SHADER_CAP_FP16_CONST_BUFFERS
|
||||
- llvmpipe: disable PIPE_SHADER_CAP_FP16_CONST_BUFFERS
|
||||
- llvmpipe: ci updates
|
||||
- zink: add VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT for query binds
|
||||
- zink: fix PIPE_CAP_TGSI_BALLOT export conditional
|
||||
- zink: reject invalid draws
|
||||
- zink: min/max blit region in coverage functions
|
||||
|
||||
Nanley Chery (3):
|
||||
|
||||
- anv: Disable CCS_E for some 8/16bpp copies on TGL+
|
||||
- anv: Use ANV_FAST_CLEAR_DEFAULT_VALUE for CCS on TGL+
|
||||
- anv: Re-enable CCS_E on TGL+
|
||||
|
||||
Paulo Zanoni (1):
|
||||
|
||||
- iris: implement inter-context busy-tracking
|
||||
|
||||
Rhys Perry (3):
|
||||
|
||||
- aco: fix neg(abs(mul(a, b))) if the mul is not VOP3
|
||||
- aco: don't encode src2 for v_writelane_b32_e64
|
||||
- radv: fix R_02881C_PA_CL_VS_OUT_CNTL with mixed cull/clip distances
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- radv/winsys: fix missing buffer_make_resident() for the null winsys
|
||||
|
||||
Yiwei Zhang (1):
|
||||
|
||||
- tu: VkExternalImageFormatProperties is optional
|
@@ -1,148 +0,0 @@
|
||||
Mesa 21.3.7 Release Notes / 2022-02-23
|
||||
======================================
|
||||
|
||||
Mesa 21.3.7 is a bug fix release which fixes bugs found since the 21.3.6 release.
|
||||
|
||||
Mesa 21.3.7 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 21.3.7 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
b4fa9db7aa61bf209ef0b40bef83080999d86ad98df8b8b4fada7c128a1efc3d mesa-21.3.7.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- lavapipe: dEQP-VK.spirv_assembly.instruction.compute.float16.arithmetic_3.step fails
|
||||
- ANV: Bad output from TransformFeedback . Regression from Mesa 21. Something to do with VB+XFB -> VB+XFB dependency?
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (4):
|
||||
|
||||
- pan/bi: Avoid \*FADD.v2f16 hazard in optimizer
|
||||
- pan/bi: Avoid \*FADD.v2f16 hazard in scheduler
|
||||
- pan/bi: Lower swizzles on CSEL.i32/MUX.i32
|
||||
- panvk: Use more reliable assert for UBO pushing
|
||||
|
||||
Bas Nieuwenhuizen (1):
|
||||
|
||||
- radv: Fix preamble argument order.
|
||||
|
||||
Connor Abbott (1):
|
||||
|
||||
- ir3/spill: Fix simplify_phi_nodes with multiple loop nesting
|
||||
|
||||
Dave Airlie (3):
|
||||
|
||||
- lavapipe: fix sampler + sampler view leaks.
|
||||
- lavapipe: reference gallium fences correctly.
|
||||
- crocus: fix leak on gen4/5 stencil fallback blit path.
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- i915g: Initialize the rest of the "from_nir" temporary VS struct.
|
||||
|
||||
Eric Engestrom (2):
|
||||
|
||||
- .pick_status.json: Update to dabba7d7263be6ffb6f3676465e92c65952fa824
|
||||
- .pick_status.json: Mark b07372312d7053f2ef5c858ceb1fbf9ade5e7c52 as denominated
|
||||
|
||||
Ian Romanick (9):
|
||||
|
||||
- gallivm/nir: Call nir_lower_bool_to_int32 after nir_opt_algebraic_late
|
||||
- nir: All set-on-comparison opcodes can take all float types
|
||||
- intel/fs: Don't optimize out 1.0*x and -1.0*x
|
||||
- spriv: Produce correct result for GLSLstd450Step with NaN
|
||||
- spirv: Produce correct result for GLSLstd450Modf with Inf
|
||||
- spirv: Produce correct result for GLSLstd450Tanh with NaN
|
||||
- nir: Properly handle various exceptional values in frexp
|
||||
- nir: Produce correct results for atan with NaN
|
||||
- nir: Add missing dependency on nir_opcodes.py
|
||||
|
||||
Jason Ekstrand (1):
|
||||
|
||||
- anv: Call vk_command_buffer_finish if create fails
|
||||
|
||||
Jonathan Gray (1):
|
||||
|
||||
- dri: avoid NULL deref of DrawBuffer on flush
|
||||
|
||||
Lionel Landwerlin (2):
|
||||
|
||||
- nir: fix lower_memcpy
|
||||
- anv/genxml/intel/fs: fix binding shader record entry
|
||||
|
||||
Marcin Ślusarz (1):
|
||||
|
||||
- anv: don't set color state when input state was requested
|
||||
|
||||
Marek Olšák (1):
|
||||
|
||||
- ac/surface: add more elements to meta equations because HTILE can use them
|
||||
|
||||
Mike Blumenkrantz (4):
|
||||
|
||||
- lavapipe: use util_pack_color_union() for generating clear colors
|
||||
- aux/draw: fix llvm tcs lane vec generation
|
||||
- zink: always set VkPipelineMultisampleStateCreateInfo::pSampleMask
|
||||
- zink: always invalidate streamout counter buffer if not resuming
|
||||
|
||||
Nanley Chery (1):
|
||||
|
||||
- iris: Don't fast clear with the view format
|
||||
|
||||
Pavel Ondračka (1):
|
||||
|
||||
- r300: fix transformation of abs modifiers with negate
|
||||
|
||||
Qiang Yu (3):
|
||||
|
||||
- radeonsi: workaround Specviewperf13 Catia hang on GFX9
|
||||
- radeonsi: fix depth stencil multi sample texture blit
|
||||
- glx: fix pbuffer refcount init
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- radv/winsys: fix initializing debug/perftest options if multiple instances
|
||||
|
||||
Tapani Pälli (5):
|
||||
|
||||
- intel/genxml: add PIPE_CONTROL field for L3 read only cache invalidation
|
||||
- anv: invalidate L3 read only cache when VF cache is invalidated
|
||||
- iris: invalidate L3 read only cache when VF cache is invalidated
|
||||
- iris: fix a leak on surface states
|
||||
- mesa/st: always use DXT5 when transcoding ASTC format
|
||||
|
||||
Thierry Reding (2):
|
||||
|
||||
- tegra: Use private reference count for sampler views
|
||||
- tegra: Use private reference count for resources
|
||||
|
||||
Timur Kristóf (1):
|
||||
|
||||
- radv: Disable IB2 on compute queues.
|
||||
|
||||
Yiwei Zhang (1):
|
||||
|
||||
- venus: properly destroy deferred ahb image before real image creation
|
@@ -1,183 +0,0 @@
|
||||
Mesa 21.3.8 Release Notes / 2022-03-18
|
||||
======================================
|
||||
|
||||
Mesa 21.3.8 is a bug fix release which fixes bugs found since the 21.3.7 release.
|
||||
|
||||
Mesa 21.3.8 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 21.3.8 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
e70d273bdc53a4e931871bb5550ba3900e6a3deab2fff64184107c33e92d9da7 mesa-21.3.8.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- freedreno: deqp cts fails
|
||||
- radeonsi dEQP-GLES3.functional.buffer.map.write.explicit_flush.* flake crashes
|
||||
- Square Artifacts Dragons Dogma
|
||||
- radv: When using VS+PS only, primitive ID is mixed up after NGG culling
|
||||
- Redraw freeze after upgrade to Xwayland 21.1.3
|
||||
- anv doesn't always resolve aux buffers with private bindings on transition to external queue
|
||||
- [ANV] Rendering corruption in DOOM Eternal
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Adam Jackson (1):
|
||||
|
||||
- meson: Add "amber" option for automatic LTS build configuration
|
||||
|
||||
Alyssa Rosenzweig (6):
|
||||
|
||||
- panfrost: Fix FD resource_get_handle
|
||||
- panfrost: Handle NULL sampler views
|
||||
- panfrost: Handle NULL samplers
|
||||
- panfrost: Flush resources when shadowing
|
||||
- panfrost: Push twice as many uniforms
|
||||
- panfrost: Fix set_sampler_views for big GL
|
||||
|
||||
Connor Abbott (4):
|
||||
|
||||
- ir3: Don't always set bindless_tex with readonly images
|
||||
- ir3/nir: Fix 1d array readonly images
|
||||
- ir3/ra: Sanitize parallel copy flags better
|
||||
- util/bitset: Fix off-by-one in __bitset_set_range
|
||||
|
||||
Danylo Piliaiev (1):
|
||||
|
||||
- turnip: Use LATE_Z when there might be depth/stencil feedback loop
|
||||
|
||||
Dave Airlie (5):
|
||||
|
||||
- draw/so: don't use pre clip pos if we have a tes either.
|
||||
- crocus: change the line width workaround for gfx4/5
|
||||
- gallivm/nir: extract a valid texture index according to exec_mask.
|
||||
- zink: workaround depth texture mode alpha.
|
||||
- lavapipe: remove broken workaround for zink depth texturing.
|
||||
|
||||
Eric Engestrom (14):
|
||||
|
||||
- .pick_status.json: Update to 2106c3bab6bdea736c468fb1866fd0f372cc0baa
|
||||
- .pick_status.json: Mark 7ec0e2b89351e6e56cb112e00e6c68c6bbc6faea as denominated
|
||||
- .pick_status.json: Mark 0136545d169adb75e4f9f6b4de38eef0817c1241 as denominated
|
||||
- .pick_status.json: Mark 62b8daa889daefb2f191a63f370541bf2b807e88 as denominated
|
||||
- .pick_status.json: Mark 698ae34844b7199b8acc3b4d74a9cad3b903bdef as denominated
|
||||
- .pick_status.json: Mark 03a80490a47b0b616566c6f56581560694976b1a as denominated
|
||||
- .pick_status.json: Mark e1964e1dde7bf44ceeaf3fa8b3869e791af4a369 as denominated
|
||||
- .pick_status.json: Mark 3ef093f697ad9027ba514c7a4a6a10b7bd95bd47 as denominated
|
||||
- .pick_status.json: Mark 2d1b506acfe55165511a2bb83acb013353e531ab as denominated
|
||||
- .pick_status.json: Mark 204ea77b0674fb611155bd3ba2e6169cc8646b3f as denominated
|
||||
- .pick_status.json: Mark a5c7d34fdf8403b0115d5eead7ca67027e93efc7 as denominated
|
||||
- .pick_status.json: Mark 432700fc61a33e0c040d47d9b7bd8cfe970d35cc as denominated
|
||||
- .pick_status.json: Mark 4ed7329236a576b6b6f615787bb722b960f32c6b as denominated
|
||||
- .pick_status.json: Mark 3f7da0c58447979976eb2928625b1f93154f6c57 as denominated
|
||||
|
||||
Erik Faye-Lund (2):
|
||||
|
||||
- docs: remove incorrect drivers from extension
|
||||
- docs: fixup zink gl 4.3 requirements
|
||||
|
||||
Icecream95 (6):
|
||||
|
||||
- panfrost: Set PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
|
||||
- pan/bi: Check dependencies of both destinations of instructions
|
||||
- panfrost: Set dirty state in set_shader_buffers
|
||||
- panfrost: Re-emit descriptors after resource shadowing
|
||||
- pan/bi: Make disassembler build reproducibly
|
||||
- panfrost: Fix ubo_mask calculation
|
||||
|
||||
Jason Ekstrand (2):
|
||||
|
||||
- anv: Don't assume depth/stencil attachments have depth
|
||||
- lavapipe: Reset the free_cmd_buffers list in TrimCommandPool
|
||||
|
||||
Jonathan Gray (6):
|
||||
|
||||
- util: unbreak non-linux mips64 build
|
||||
- util: fix util_cpu_detect_once() build on OpenBSD
|
||||
- util/u_atomic: fix build on clang archs without 64-bit atomics
|
||||
- util: fix build with clang 10 on mips64
|
||||
- util: use correct type in sysctl argument
|
||||
- radv: use MAJOR_IN_SYSMACROS for sysmacros.h include
|
||||
|
||||
Lionel Landwerlin (3):
|
||||
|
||||
- anv: fix conditional render for vkCmdDrawIndirectByteCountEXT
|
||||
- anv: fix fast clear type value with external images
|
||||
- intel/fs: fix total_scratch computation
|
||||
|
||||
Marek Olšák (2):
|
||||
|
||||
- amd: add a workaround for an SQ perf counter bug
|
||||
- radeonsi: fix an assertion failure with register shadowing
|
||||
|
||||
Mike Blumenkrantz (16):
|
||||
|
||||
- gallivm: avoid division by zero when computing cube face
|
||||
- zink: always update shader variants when rebinding a gfx program
|
||||
- zink: use a fence for pipeline cache update jobs
|
||||
- zink: wait on program cache fences before destroying programs
|
||||
- zink: fix descriptor cache pointer array allocation
|
||||
- zink: mark fbfetch push sets as non-cached
|
||||
- zink: stop leaking descriptor sets
|
||||
- zink: invalidate non-punted recycled descriptor sets that are not valid
|
||||
- zink: fix 64bit float shader ops
|
||||
- llvmpipe: fix debug print iterating in set_framebuffer_state
|
||||
- llvmpipe: clamp surface clear geometry
|
||||
- lavapipe: update multisample state after blend state
|
||||
- aux/trace: rzalloc the context struct
|
||||
- zink: lower dmod on AMD hardware
|
||||
- lavapipe: skip format checks for EXTENDED_USAGE
|
||||
- lavapipe: run nir_opt_copy_prop_vars during optimization loop
|
||||
|
||||
Paulo Zanoni (1):
|
||||
|
||||
- iris: fix register spilling on compute shaders on XeHP
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (3):
|
||||
|
||||
- radeonsi: change rounding mode to round to even
|
||||
- util/slab: add slab_zalloc
|
||||
- gallium/tc: zero alloc transfers
|
||||
|
||||
Rhys Perry (2):
|
||||
|
||||
- anv: Enable nir_opt_access
|
||||
- radv: include adjust_frag_coord_z in key
|
||||
|
||||
Rob Clark (1):
|
||||
|
||||
- mesa: Fix discard_framebuffer for fbo vs winsys
|
||||
|
||||
Samuel Pitoiset (2):
|
||||
|
||||
- radv,drirc: move RADV workarounds to 00-radv-defaults.conf
|
||||
- radv: disable DCC for Fable Anniversary, Dragons Dogma, GTA IV and more
|
||||
|
||||
Timur Kristóf (1):
|
||||
|
||||
- ac/nir/ngg: Fix mixed up primitive ID after culling.
|
||||
|
||||
Xiaohui Gu (1):
|
||||
|
||||
- iris: Mark a dirty update when vs_needs_sgvs_element value changed
|
File diff suppressed because it is too large
Load Diff
@@ -1,168 +0,0 @@
|
||||
Mesa 22.0.1 Release Notes / 2022-03-29
|
||||
======================================
|
||||
|
||||
Mesa 22.0.1 is a bug fix release which fixes bugs found since the 22.0.0 release.
|
||||
|
||||
Mesa 22.0.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 22.0.1 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
c05f9682c54560b36e0afa70896233fc73f1ed715e10d1a028b0eb84fd04426f mesa-22.0.1.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- freedreno: crash in PUBG
|
||||
- [regression][bisected] MSVC: Build failure in libmesa_util when targeting x86 32-bit
|
||||
- A crash in radeonsi driver
|
||||
- freedreno: deqp cts fails
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (4):
|
||||
|
||||
- panfrost: Emulate GL_CLAMP on Bifrost
|
||||
- pan/bi: Handle non-2D arrays
|
||||
- panfrost: Fix primitive restart with 32-bit indices
|
||||
- pan/bi: Don't analyze helper reqs in !frag shaders
|
||||
|
||||
Anuj Phogat (1):
|
||||
|
||||
- anv, iris: Add Wa_16011411144 for DG2
|
||||
|
||||
Connor Abbott (3):
|
||||
|
||||
- ir3/ra: Sanitize parallel copy flags better
|
||||
- util/bitset: Fix off-by-one in __bitset_set_range
|
||||
- ir3/lower_spill: Fix corner case with oob offsets
|
||||
|
||||
Dave Airlie (3):
|
||||
|
||||
- zink: workaround depth texture mode alpha.
|
||||
- lavapipe: remove broken workaround for zink depth texturing.
|
||||
- crocus: don't map scanout buffers as write-back
|
||||
|
||||
Dylan Baker (17):
|
||||
|
||||
- docs: add release notes for 22.0.0
|
||||
- .pick_status.json: Update to cc4f0e804e6feee17a657d052f4f2ee32ebe53d0
|
||||
- ci: Fixup some lvp expected passes
|
||||
- .pick_status.json: Update to d5870c45ae82c091e72f1258920aa54974e19a36
|
||||
- .pick_status.json: Update to dc247e5d4319b644e373534495cc75f41bc7bcd2
|
||||
- .pick_status.json: Mark dd9b8881e0ad84ab1e74d972a8233f5c03e7b37a as denominated
|
||||
- .pick_status.json: Mark 5dbbc0f0a824e4addffeb115631a9c5bcb426c29 as denominated
|
||||
- .pick_status.json: Update to acbb0d86f71c950e29df70e357ae08e5ca903a49
|
||||
- .pick_status.json: Update
|
||||
- pick/ui: Fix mypy issue
|
||||
- pick/core: drop the main_sha field
|
||||
- pick/core: Add proper type annotation for update_commits callback
|
||||
- pick/core: Add a method for updating commits
|
||||
- pick/core: Add a MANUAL_RESOLUTION resolution
|
||||
- pick/ui: correctly handle MANUAL_RESOLUTION
|
||||
- core: don't pass the ui back into commit.apply
|
||||
- .pick_status.json: Update to 8991e646411b73c1e03278267c80758e921f2352
|
||||
|
||||
Erik Faye-Lund (1):
|
||||
|
||||
- docs: fixup zink gl 4.3 requirements
|
||||
|
||||
Gert Wollny (1):
|
||||
|
||||
- virgl: Fix texture transfers by using a staging resource
|
||||
|
||||
Icecream95 (1):
|
||||
|
||||
- panfrost: Don't initialise the trampolines array
|
||||
|
||||
Jason Ekstrand (3):
|
||||
|
||||
- lavapipe: Reset the free_cmd_buffers list in TrimCommandPool
|
||||
- anv: Allow MSAA resolve with different numbers of planes
|
||||
- spirv: Properly mangle generic pointers
|
||||
|
||||
Jonathan Gray (1):
|
||||
|
||||
- util: fix msvc build
|
||||
|
||||
Kenneth Graunke (1):
|
||||
|
||||
- iris: Fix MOCS for copy regions
|
||||
|
||||
Lionel Landwerlin (2):
|
||||
|
||||
- anv: emit timestamp & availability using the same part of CS
|
||||
- anv: flush tile cache with query copy command
|
||||
|
||||
Marek Olšák (1):
|
||||
|
||||
- amd: add support for gfx1036 and gfx1037 chips
|
||||
|
||||
Mike Blumenkrantz (23):
|
||||
|
||||
- llvmpipe: fix debug print iterating in set_framebuffer_state
|
||||
- lavapipe: clamp clear attachments rects
|
||||
- llvmpipe: clamp surface clear geometry
|
||||
- zink: map R8G8B8X8_SRGB -> R8G8B8A8_SRGB
|
||||
- lavapipe: update multisample state after blend state
|
||||
- lavapipe: fix pipeline creation for blend and zs states
|
||||
- aux/trace: rzalloc the context struct
|
||||
- zink: lower dmod on AMD hardware
|
||||
- zink: use 64bit mask for xfb analysis
|
||||
- zink: store the correct number of components for xfb packing outputs
|
||||
- zink: correctly set xfb packed output offsets
|
||||
- lavapipe: use the correct value for dynamic render resolve attachment indexing
|
||||
- lavapipe: skip format checks for EXTENDED_USAGE
|
||||
- lavapipe: run nir_opt_copy_prop_vars during optimization loop
|
||||
- anv: fix xfb usage with rasterizer discard
|
||||
- anv: fix CmdSetColorWriteEnableEXT for maximum rts
|
||||
- anv: fix some dynamic rasterization discard cases in pipeline construction
|
||||
- lavapipe: always clone shader nir for shader states
|
||||
- gallivm: fix oob image detection for cube/1dArray/2dArray/cubeArray
|
||||
- llvmpipe: fix occlusion queries with early depth test
|
||||
- zink: force-add usage when adding last-ref tracking
|
||||
- zink: only update usage on buffer rebind if rebinds occurred
|
||||
- nir/lower_is_helper_invocation: create load_helper_invocation instr with bitsize=1
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (2):
|
||||
|
||||
- util/slab: add slab_zalloc
|
||||
- radeonsi: don't clear framebuffer.state before dcc decomp
|
||||
|
||||
Rob Clark (2):
|
||||
|
||||
- mesa: Fix discard_framebuffer for fbo vs winsys
|
||||
- freedreno/ir3: Don't try re-swapping cat3 srcs
|
||||
|
||||
Sagar Ghuge (2):
|
||||
|
||||
- intel/fs: Add Wa_22013689345
|
||||
- intel/fs: Add Wa_14014435656
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- radv: add reference counting for descriptor set layouts
|
||||
|
||||
Stefan Dirsch (1):
|
||||
|
||||
- meson: restore private requires to libdrm in dri.pc file
|
File diff suppressed because it is too large
Load Diff
@@ -1,168 +0,0 @@
|
||||
Mesa 22.1.1 Release Notes / 2022-06-01
|
||||
======================================
|
||||
|
||||
Mesa 22.1.1 is a bug fix release which fixes bugs found since the 22.1.0 release.
|
||||
|
||||
Mesa 22.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 22.1.1 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
46940865ffe794db73ac2bc7ab7ff2570042a0b61a8ac43ca1688863e2bc0ef1 mesa-22.1.1.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- nir_lower_phis_to_regs_block: Assertion \`src->src.is_ssa' failed.
|
||||
- Build failure on sparc
|
||||
- Signal 6 (Aborted) when opening GTK3 applications
|
||||
- radv: Conditional rendering on compute queue
|
||||
- anv: line failure
|
||||
- panfrost midgard - major issues with MelonDS emulator - not able to trace properly too
|
||||
- Nheko misrendering on RK3399 (Mali T860)
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (1):
|
||||
|
||||
- pan/bi: Fix mov and pack_32_2x16
|
||||
|
||||
Boris Brezillon (1):
|
||||
|
||||
- dzn: Use the vk_sync_binary abstraction
|
||||
|
||||
Charmaine Lee (1):
|
||||
|
||||
- gallium/util: Increase the debug_flush map depth to 64
|
||||
|
||||
Daniel Schürmann (1):
|
||||
|
||||
- aco: fix spilling of phis without temp operands
|
||||
|
||||
Dave Airlie (2):
|
||||
|
||||
- lavapipe: fix depth bias offset flag enables.
|
||||
- llvmpipe: flush resources for kms swrast path.
|
||||
|
||||
Dylan Baker (8):
|
||||
|
||||
- docs: add release notes for 22.1.0
|
||||
- VERSION: bump for 22.1.0 final
|
||||
- relnotes: Add sha256sum and fix minor formatting issues
|
||||
- .pick_status.json: Update to 8b13ee75ba9f27ceac6b6180ca05d321caa13612
|
||||
- .pick_status.json: Update to 95d4e5435bf63239105a50370ebbbbdeb7fed2f8
|
||||
- .pick_status.json: Update to ee2278de654853f1d6107e6ef6fc8537a668866e
|
||||
- .pick_status.json: Update to 9773ed1dc74b98019640d909cdc2b5d6cffae85a
|
||||
- .pick_status.json: Update to 5067a26f4432ae5e9690e70ef2498ea24798593e
|
||||
|
||||
Erik Faye-Lund (4):
|
||||
|
||||
- editorconfig: remove scons-ism
|
||||
- editorconfig: remove html-rule
|
||||
- editorconfig: remove m4-rule
|
||||
- editorconfig: remove pl-rule
|
||||
|
||||
Filip Gawin (1):
|
||||
|
||||
- r300: keep negation if w is an inline constant
|
||||
|
||||
Hans-Kristian Arntzen (1):
|
||||
|
||||
- radv: Fix RTPSO hashing of pGroups.
|
||||
|
||||
Icecream95 (5):
|
||||
|
||||
- panfrost: Copy blend constant into variant even when reusing it
|
||||
- nir: Add store_combined_output_pan BASE back
|
||||
- pan/bi: Read base for combined stores
|
||||
- pan/mdg: Read base for combined stores
|
||||
- panfrost: Only write depth / stencil once if MRT is used
|
||||
|
||||
Jason Ekstrand (8):
|
||||
|
||||
- radv: Add a sqtt entrypoint for CmdBindVertexBuffers2
|
||||
- intel/fs: Copy color_outputs_valid into wm_prog_data
|
||||
- anv: Drop alpha_to_coverage from the NULL FS optimization
|
||||
- anv: Handle the null FS optimization after compiling shaders
|
||||
- anv: Don't disable the fragment shader if XFB is enabled
|
||||
- nir: Handle register sources in lower_phis_to_regs_block
|
||||
- glsl/nir: Stop leaking varyings_info
|
||||
- nir: Mark negative re-distribution on fadd as imprecise
|
||||
|
||||
Konstantin Seurer (1):
|
||||
|
||||
- radv: Fix handling of primitiveOffset
|
||||
|
||||
Matt Turner (1):
|
||||
|
||||
- mesa: Drop dead #include "sparc/sparc.h"
|
||||
|
||||
Michael Skorokhodov (1):
|
||||
|
||||
- anv: Update line range
|
||||
|
||||
Mike Blumenkrantz (10):
|
||||
|
||||
- turnip: fix assert for max xfb outputs
|
||||
- zink: use a zink_render_pass_pipeline_state bit for fbfetch
|
||||
- zink: add renderpass bits for color/depth r/w
|
||||
- zink: only warn once for SRGB fb without KHR_swapchain_mutable_format
|
||||
- zink: require draw params ext/cap in ntv if drawid is used
|
||||
- zink: emit spirv cap for subgroup vote ops
|
||||
- st/pbo_compute: use different calc for non-3d compute buffer sizing
|
||||
- zink: make swapchain kill message more descriptive
|
||||
- zink: drop wideLines requirement
|
||||
- zink: drop largePoints requirement
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (1):
|
||||
|
||||
- radeonsi: don't use sel->nir in si_check_blend_dst_sampler_noop
|
||||
|
||||
Qiang Yu (1):
|
||||
|
||||
- radeonsi: lower nir_intrinsic_sparse_residency_code_and
|
||||
|
||||
Rhys Perry (2):
|
||||
|
||||
- aco: fix p_constaddr with a non-zero offset
|
||||
- aco/ra: fix usage of invalidated iterator
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- radv: fix writing buffer markers with non-zero memory offset
|
||||
|
||||
Timur Kristóf (2):
|
||||
|
||||
- radv: Implement conditional rendering for async compute queue.
|
||||
- radv: Disable predication for supass clear and image clears.
|
||||
|
||||
Yogesh Mohan Marimuthu (1):
|
||||
|
||||
- vulkan/wsi: fix extra free if buffer_blit_queue
|
||||
|
||||
Zack Rusin (4):
|
||||
|
||||
- svga: Don't try to build x86/x64 assembly on different arch's
|
||||
- svga: finish readbacks before mapping resources
|
||||
- svga: Use direct maps when GB objects are present
|
||||
- svga: Add support for SVGAv3
|
@@ -1,187 +0,0 @@
|
||||
Mesa 22.1.2 Release Notes / 2022-06-16
|
||||
======================================
|
||||
|
||||
Mesa 22.1.2 is a bug fix release which fixes bugs found since the 22.1.1 release.
|
||||
|
||||
Mesa 22.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 22.1.2 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
0971226b4a6a3d10cfc255736b33e4017e18c14c9db1e53863ac1f8ae0deb9ea mesa-22.1.2.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Random texture flickering in Minecraft
|
||||
- panfrost: Broken interaction between CRC and tile size
|
||||
- [anv, bisected, regression] Pipeline statistics query segfaults
|
||||
- d3d12: point coord regression due to NIR IO changes
|
||||
- Gallium driver crashes due to fd double close in iris driver
|
||||
- Mesa currently FTBFS on x32 architecture
|
||||
- Runescape randomly crashes. malloc_consolidate(): unaligned fastbin chunk
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (7):
|
||||
|
||||
- panfrost: Fix XML for AFBC header on v9
|
||||
- pan/bi: Fix clper_xor on Mali-G31
|
||||
- pan/mdg: Scalarize with 64-bit sources
|
||||
- pan/mdg: Remove uppercase write masks
|
||||
- panfrost: Fix inverted indirect dispatch condition
|
||||
- panfrost: Inline pan_fbd_has_zs_crc_ext
|
||||
- panfrost: Disable CRC at <16x16 tile sizes
|
||||
|
||||
Boris Brezillon (5):
|
||||
|
||||
- microsoft/spirv_to_dxil: Fix push_constants type declaration
|
||||
- microsoft/spirv_to_dxil: Fix the push_constant UBO size calculation
|
||||
- nir: Fix flat new_var assignment in create_new_io_vars()
|
||||
- vulkan/util: Fill VkPhysicalDeviceIDProperties::deviceNodeMask
|
||||
- microsoft/compiler: Images are no longer reprensented by uniform vars
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- llvmpipe: handle timespec overflow on fence waits.
|
||||
|
||||
Dylan Baker (7):
|
||||
|
||||
- docs: Add sh256sums for 22.1.1
|
||||
- .pick_status.json: Update to 1c63a0beafefccec599ddbe355ec5a8b61df6438
|
||||
- .pick_status.json: Update to ad5c84999b9eb2522cdf78bb0890939450280cf3
|
||||
- .pick_status.json: Update to 49234585772f49626435d3d9324ad144e27fc453
|
||||
- .pick_status.json: Update to 35dd4ac886283444294238ae0be1a7edcc776c8a
|
||||
- .pick_status.json: Update to 2ef6b0aab1c7b99b85f2d88ced44a63f28cfca6b
|
||||
- .pick_status.json: Update to ea33e44ce4f95ce45729b75dee34be50df749f09
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- nouveau/nv30: Make sure fsat is lowered in the VS.
|
||||
|
||||
Erik Faye-Lund (6):
|
||||
|
||||
- nir: introduce and use nir_component_mask
|
||||
- freedreno: remove stale makefile
|
||||
- intel: remove stale makefile
|
||||
- ci/windows: add back build-error detection
|
||||
- dzn: handle stencil-attachment-optimal layout
|
||||
- gallium: remove stale comment
|
||||
|
||||
Georg Lehmann (1):
|
||||
|
||||
- zink: Use VK_USE_64_BIT_PTR_DEFINES to check for 64bit platforms.
|
||||
|
||||
Iago Toral Quiroga (1):
|
||||
|
||||
- broadcom/compiler: disable flags optimization for loop conditions
|
||||
|
||||
Ian Romanick (1):
|
||||
|
||||
- anv: Remove FS executables when applying the null FS optimization
|
||||
|
||||
Jason Ekstrand (2):
|
||||
|
||||
- nir/builder: Add a nir_trim_vector helper
|
||||
- compiler/types: Don't place members in the previous substruct's end padding
|
||||
|
||||
Jesse Natalie (2):
|
||||
|
||||
- nir: Consider PNTC to be a varying
|
||||
- d3d12: Properly set HS input control point count
|
||||
|
||||
Juan A. Suarez Romero (1):
|
||||
|
||||
- v3d: save only required states in blitter
|
||||
|
||||
Kenneth Graunke (1):
|
||||
|
||||
- intel/compiler: Fix uncompaction of signed word immediates on Tigerlake
|
||||
|
||||
Kyle Russell (1):
|
||||
|
||||
- etnaviv: don't halve max_instructions for GC400
|
||||
|
||||
Marek Olšák (2):
|
||||
|
||||
- ac/gpu_info: always retile DCC on gfx10 and newer chips
|
||||
- gallium/u_threaded: fix buffer busyness tracking
|
||||
|
||||
Mike Blumenkrantz (31):
|
||||
|
||||
- st/pbo_compute: make compute download conditional in shader slightly more readable
|
||||
- st/pbo_compute: fix z coords for compute pbos
|
||||
- zink: remove first_frame stalling
|
||||
- lavapipe: fix dynamic patchControlPoints
|
||||
- zink: force queries to start/end out of renderpass
|
||||
- egl/wayland: manually swap backbuffer when using zink
|
||||
- egl/wayland: skip buffer creation on zink
|
||||
- kopper: use get_drawable_info path for non-x11 drawables
|
||||
- zink: fix dmabuf plane layout struct scoping
|
||||
- format_utils: properly parenthesize macro params
|
||||
- zink: always create descriptor templates
|
||||
- zink: fix ntv partial stores
|
||||
- zink: fix variable locations in manual xfb emission
|
||||
- zink: scalarize when rewriting explicit 64bit io
|
||||
- zink: use separate pointer for swapchain presents
|
||||
- zink: keep a count of async presents occuring for a given swapchain
|
||||
- zink: defer old swapchain destruction
|
||||
- zink: fix framebuffer attachment usage asserts for dummy attachments
|
||||
- zink: only update layout when doing mixed zs attachment renderpass check
|
||||
- zink: add implicit sync workaround for non-mesa drivers
|
||||
- zink: unset res->swapchain upon killing a swapchain
|
||||
- zink: fix up KILL to a more sensible log message
|
||||
- zink: fix generated tcs update path
|
||||
- zink: unset generated tcs pointer from tes on deletion
|
||||
- zink: fix generated tcs deletion
|
||||
- zink: avoid uninit values in renderpass state
|
||||
- zink: don't print VK_EXT_shader_atomic_float warning for nir_intrinsic_image_deref_atomic_exchange
|
||||
- zink: fix cubemap lowering for array samplers
|
||||
- zink: fix cubemap lowering bit size
|
||||
- zink: flag optimization pass after inlining uniforms
|
||||
- zink: fix 32bit bo rewriting
|
||||
|
||||
Nagappa Koppad, Basanagouda (1):
|
||||
|
||||
- iris:Duplicate DRM fd internally instead of reuse.
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (5):
|
||||
|
||||
- st/mesa: use mutex in st_get_texture_sampler_view_from_stobj
|
||||
- gallium: add size attribute to winsys_handle
|
||||
- va/surface: set the correct size in vaExportSurfaceHandle
|
||||
- radeonsi: prevent recursion in si_decompress_dcc
|
||||
- radeonsi: add helper to use si_screen::aux_context
|
||||
|
||||
Qiang Yu (1):
|
||||
|
||||
- mesa/program: fix nir output reg overflow
|
||||
|
||||
Rhys Perry (2):
|
||||
|
||||
- aco: fix SMEM load_global_amd with non-zero offset
|
||||
- aco: fix SMEM load_global with VGPR address and non-zero offset
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- radv: enable radv_zero_vram for Hammerting
|
@@ -1,208 +0,0 @@
|
||||
Mesa 22.1.3 Release Notes / 2022-06-29
|
||||
======================================
|
||||
|
||||
Mesa 22.1.3 is a bug fix release which fixes bugs found since the 22.1.2 release.
|
||||
|
||||
Mesa 22.1.3 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 22.1.3 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
b98f32ba7aa2a1ff5725fb36eb999c693079f0ca16f70aa2f103e2b6c3f093e3 mesa-22.1.3.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- [Crocus] - Minecraft with Forge and JourneyMap - Graphical glitches
|
||||
- intel - Minecraft char bar is broken after Mesa upgrade
|
||||
- [wine] RAGE: texture problems
|
||||
- "Unsupported modifier, resource creation failed." on stderr
|
||||
- anv: query regressions
|
||||
- ci: docs build fail
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (2):
|
||||
|
||||
- pan/bi: Fix LD_BUFFER.i16 definition
|
||||
- lima,panfrost: Do not ralloc contexts against the screen
|
||||
|
||||
Boris Brezillon (3):
|
||||
|
||||
- d3d12: Keep access masks up-to-date when removing vars in d3d12_disable_multisampling()
|
||||
- nir/serialize: Put dest last in packed_instr::tex
|
||||
- nir/serialize: Support texop >= 16
|
||||
|
||||
Christian Gmeiner (1):
|
||||
|
||||
- nir: Fix unused-variable compile warnings
|
||||
|
||||
Connor Abbott (4):
|
||||
|
||||
- tu: Fix 3d GMEM store swizzle in texture descriptor
|
||||
- tu: Add missing WFI to the 3d GMEM store path
|
||||
- tu: Save/restore \*_BIN_CONTROL in 3d GMEM store path
|
||||
- tu: Fix linemode for tessellation with isolines
|
||||
|
||||
Dave Airlie (4):
|
||||
|
||||
- llvmpipe: disable alpha test branch if multisample is enabled.
|
||||
- egl/x11: split large put image requests to avoid server destroy
|
||||
- egl/x11: add missing put_image cookie cleanups
|
||||
- wsi/x11: add xcb_put_image support for larger transfers.
|
||||
|
||||
Dylan Baker (9):
|
||||
|
||||
- docs: add sha256sum to 22.1.2 notes
|
||||
- .pick_status.json: Update to 09a7304d5abf5b847cf5feb2d97758bee1696566
|
||||
- .pick_status.json: Update to 2866ae32da0348caf71ad2d11c353321df626ff4
|
||||
- .pick_status.json: Update to 8ce7faab47a77377a6a1313a80580828b052f878
|
||||
- .pick_status.json: Mark 420270cb4f73da6251d4caec976358681f05c45c as backported
|
||||
- .pick_status.json: Update to 9527fbe596e2ace276c158f67a900c29aad6cdd0
|
||||
- .pick_status.json: Update to 9d7d1c0637529301d3e319ec5f1c883c5f249783
|
||||
- lima/ci: mark some tests as pass
|
||||
- .pick_status.json: Update to 58313f3257b338928a8ae4ea375eedb50accf2bb
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- vc4: Propagate txf_ms's dest_type to the lowered txf.
|
||||
|
||||
Erik Faye-Lund (1):
|
||||
|
||||
- docs: set language to english
|
||||
|
||||
Filip Gawin (1):
|
||||
|
||||
- r300: prefer old not native swizzle in constant folding
|
||||
|
||||
Iago Toral Quiroga (3):
|
||||
|
||||
- v3dv: fix leak
|
||||
- broadcom/compiler: fix postponed TMU spills with multiple writes
|
||||
- broadcom/compiler: don't predicate postponed spills
|
||||
|
||||
Ian Romanick (3):
|
||||
|
||||
- intel/fs: Add missing synchronization for WaW dependency
|
||||
- nir: i32csel opcodes should compare with integer zero
|
||||
- nir/algebraic: Fix NaN-unsafe fcsel patterns
|
||||
|
||||
Icecream95 (1):
|
||||
|
||||
- panfrost: Remove sync arguments from panfrost_batch_submit
|
||||
|
||||
Italo Nicola (1):
|
||||
|
||||
- virgl: overpropagate precise flags
|
||||
|
||||
Iván Briano (1):
|
||||
|
||||
- anv: do not get rid of empty/useless fragment shaders
|
||||
|
||||
Jason Ekstrand (9):
|
||||
|
||||
- nir/deref: Break out a helper for compare_deref_paths
|
||||
- nir/deref: Use an index in compare_deref_paths
|
||||
- nir/deref: Make compare_deref_paths take a stop callback
|
||||
- nir/deref: Re-arrange variable checks in compare_deref_paths
|
||||
- nir: Increase nir_variable_data::mode to 16 bits
|
||||
- nir/vars_tests: Use nir_var_mem_global instead of ssbo
|
||||
- nir/deref: Handle SSBO array bindings specially
|
||||
- nir/deref: Handle RESTRICT for SSBO deref bindings
|
||||
- anv: Properly clamp attachment layer counts
|
||||
|
||||
Lionel Landwerlin (2):
|
||||
|
||||
- vulkan/wsi: fix crash with debug names on swapchain
|
||||
- anv: limit RT writes to number of color outputs
|
||||
|
||||
Marcin Ślusarz (2):
|
||||
|
||||
- intel/common: allocate space for at least one task urb
|
||||
- intel/compiler: adjust task payload offsets as late as possible
|
||||
|
||||
Mike Blumenkrantz (27):
|
||||
|
||||
- zink: rename a variable
|
||||
- zink: unify actual map calls in buffer mapping
|
||||
- zink: use only the extents for buffer unmap flushes
|
||||
- zink: fix buffer transfer flushes with offsets
|
||||
- zink: store and reuse memory heap flags for buffer placement
|
||||
- zink: move BAR allocation demotion up the stack
|
||||
- zink: be a little selective about BAR fallback memory type
|
||||
- zink: add a function for getting the minimum framebuffer layers
|
||||
- zink: clamp renderpass layers better
|
||||
- zink: move draw-time barrier generation down a little
|
||||
- zink: track vertex buffer bind counts on resources
|
||||
- zink: rework buffer barrier generation
|
||||
- zink: track image binds
|
||||
- zink: add a #define for vk shader bits
|
||||
- zink: collect gfx stages for all bindings during barrier generation
|
||||
- zink: don't short-circuit gfx stage finding during barrier generation
|
||||
- zink: relax zink_resource_buffer_needs_barrier checks
|
||||
- zink: cap driver inlining using ssa allocation limit
|
||||
- glx/drisw: store the flush extension to the screen
|
||||
- glx/drisw: invalidate drawables upon binding context if flush extension exists
|
||||
- zink: fix dual_src_blend driconf workaround
|
||||
- nir/lower_point_size: apply point size clamping
|
||||
- lavapipe: copy more pNexts for pipeline creation
|
||||
- lavapipe: fix renderpass info handling during pipeline creation
|
||||
- lavapipe: skip post-copy pNext checking during pipeline creation for composites
|
||||
- zink: fix image bind counting
|
||||
- zink: fix kopper_acquire return value
|
||||
|
||||
Renato Pereyra (2):
|
||||
|
||||
- Revert "wsi/x11: Don't leak xcb_get_geometry_reply_t."
|
||||
- Revert "wsi/x11: Avoid using xcb_wait_for_special_event in FIFO modes"
|
||||
|
||||
Rhys Perry (1):
|
||||
|
||||
- nir/deref: stop assuming coherent accesses of different SSBOs may alias
|
||||
|
||||
Samuel Pitoiset (1):
|
||||
|
||||
- aco: fix validation of SOP1 instructions without definitions
|
||||
|
||||
Sebastian Keller (1):
|
||||
|
||||
- egl/wayland: Don't try to access modifiers u_vector as dynarray
|
||||
|
||||
Sviatoslav Peleshko (2):
|
||||
|
||||
- intel/blorp/gen6: Set BLEND_STATEChange only if emitting the blend state
|
||||
- intel/blorp: Dirty depth bounds dynamic state bits after blorp
|
||||
|
||||
Timothy Arceri (2):
|
||||
|
||||
- util: add dri config option to disable GL_MAP_UNSYNCHRONIZED_BIT
|
||||
- util: use force_gl_map_buffer_synchronized workaround with RAGE
|
||||
|
||||
Timur Kristóf (1):
|
||||
|
||||
- gallium/u_blitter: Fix depth.
|
||||
|
||||
Yiwei Zhang (2):
|
||||
|
||||
- venus: fix a bug on buffer cache init failure path
|
||||
- venus: fix the queue init failure path
|
@@ -1,107 +0,0 @@
|
||||
Mesa 22.1.4 Release Notes / 2022-07-15
|
||||
======================================
|
||||
|
||||
Mesa 22.1.4 is a bug fix release which fixes bugs found since the 22.1.3 release.
|
||||
|
||||
Mesa 22.1.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 22.1.4 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
670d8cbe8b72902a45ea2da68a9da4dc4a5d99c5953a926177adbce1b1640b76 mesa-22.1.4.tar.xz
|
||||
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- r300: Segfault in shaders/closed/steam/kerbal-space-program/1017.shader_test
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (2):
|
||||
|
||||
- ttn: Set nir->info.separate_shader
|
||||
- panfrost: Clear with a quad to avoid flushing
|
||||
|
||||
Daniel Schürmann (3):
|
||||
|
||||
- nir/opt_shrink_vectors: fix re-using of components for vecN
|
||||
- radv/shader_info: fix load_frag_coord and load_sample_pos read masks
|
||||
- aco: fix packed 16bit fneg/fsat optimization
|
||||
|
||||
Dylan Baker (6):
|
||||
|
||||
- docs: add sah256sum for mesa 22.1.3
|
||||
- .pick_status.json: Update to c017dfec62e448fea9ad9d16c575086b0de19b3b
|
||||
- .pick_status.json: Mark 4480e577a462d43f5c7701d2c1b70c601c626e18 as denominated
|
||||
- .pick_status.json: Update to 8ab1e9826db5936ff287bef7b428ebee27ada507
|
||||
- .pick_status.json: Update to 9dbfc21ab9ac99ebec56369d1e1ea9d7b615d5f5
|
||||
- .pick_status.json: Update to 0feedec9e6b630f930605d9681911fe9e2b705ce
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- zink: Do the timestamp-to-ns math in a double to have better precision.
|
||||
|
||||
Iago Toral Quiroga (2):
|
||||
|
||||
- v3dv: fix pool descriptor count for inline uniform buffers
|
||||
- nir: fix documentation for uadd_carry and usub_borry opcodes
|
||||
|
||||
Jason Ekstrand (4):
|
||||
|
||||
- vulkan/wsi: Pass the size to MapMemory in the SW path
|
||||
- vulkan/wsi/x11: Don't leak shm_reply if we don't have dri3 or present
|
||||
- anv: Inheritance info cannot be NULL
|
||||
- anv: Stop compacting surface state tables
|
||||
|
||||
Lionel Landwerlin (5):
|
||||
|
||||
- anv: disable non uniform indexing of UBOs
|
||||
- anv: use the right helper to invalidate memory
|
||||
- intel/fs: ray query fix for global address
|
||||
- nir/serialize: restore ray query variables
|
||||
- isl: add new helper for format component compatibility
|
||||
|
||||
Marek Olšák (1):
|
||||
|
||||
- radeonsi: fix random PS wave size
|
||||
|
||||
Mike Blumenkrantz (5):
|
||||
|
||||
- nir/types: fix glsl_matrix_type_is_row_major() assert
|
||||
- zink: enforce viewport depth clamping
|
||||
- mesa: fix SignalSemaphoreEXT behavior
|
||||
- lavapipe: don't overwrite entire VkFormatProperties3 struct
|
||||
- lavapipe: don't crash on null xfb buffer pointer
|
||||
|
||||
Pavel Ondračka (1):
|
||||
|
||||
- r300: Keep rc_rename_regs() from overflowing RC_REGISTER_MAX_INDEX
|
||||
|
||||
Rhys Perry (1):
|
||||
|
||||
- aco/ra: update register file when updating phi definition
|
||||
|
||||
Tatsuyuki Ishi (1):
|
||||
|
||||
- radv: Fix vkCmdCopyQueryResults -> vkCmdResetPool hazard.
|
@@ -1,159 +0,0 @@
|
||||
Mesa 22.1.5 Release Notes / 2022-08-03
|
||||
======================================
|
||||
|
||||
Mesa 22.1.5 is a bug fix release which fixes bugs found since the 22.1.4 release.
|
||||
|
||||
Mesa 22.1.5 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 22.1.5 implements the Vulkan 1.2 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
6fd60d38efdd25317948c61494b5117e01d42da695278728b1faef9f5f9a47ba mesa-22.1.5.tar.xz
|
||||
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- radv: dynamic vertex input failure
|
||||
- anv: KHR-GL46.tessellation_shader.single.xfb_captures_data_from_correct_stage fails on TGL
|
||||
- anv: GTF-GL46.gtf32.GL3Tests.packed_pixels.packed_pixels_pbo failure
|
||||
- anv: ICL hiz issue
|
||||
- Error compiling gallium-nine on i686 using musl libc
|
||||
- [anv][regression][bisected][bsw,gen9atom] dEQP-VK.memory.mapping.dedicated_alloc failing on bsw and gen9atom
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (2):
|
||||
|
||||
- pan/bi: Require ATEST coverage mask input in R60
|
||||
- panfrost: Add decoupled early-ZS helpers
|
||||
|
||||
Bas Nieuwenhuizen (1):
|
||||
|
||||
- radv: Skip setting empty index buffers to avoid hang
|
||||
|
||||
Brian Paul (5):
|
||||
|
||||
- util/bitset: add BITSET_SIZE()
|
||||
- llvmpipe: add missing tex_info->texture_unit assignment
|
||||
- gallivm: increase LP_MAX_TGSI_SHADER_IMAGES from 16 to 32
|
||||
- lavapipe: fix logicop, independent blend enable/disable
|
||||
- llvmpipe: don't allow texture/resource swizzles on linear path
|
||||
|
||||
Chuansheng Liu (1):
|
||||
|
||||
- iris,anv: correct the max thread number for DG2+
|
||||
|
||||
Daniel Schürmann (2):
|
||||
|
||||
- aco: fix assertion in insert_exec_mask
|
||||
- radv/rt: fix nir_builder cursor in lower_rt_instructions()
|
||||
|
||||
Dave Airlie (5):
|
||||
|
||||
- kms/dri: add mutex lock around map/unmap
|
||||
- crocus: fail query begin if upload allocation fails.
|
||||
- lavapipe: state latest conformance tests passed
|
||||
- llvmpipe: fix aniso cube map arrays.
|
||||
- crocus: fix leak in query code.
|
||||
|
||||
Dylan Baker (2):
|
||||
|
||||
- .pick_status.json: Update to 4cfa777e393705b40cebd0a4cd76aa827ce8b194
|
||||
- .pick_status.json: Update to 9b844d7c42129925525d613c19622b11aee16298
|
||||
|
||||
Erik Faye-Lund (1):
|
||||
|
||||
- zink: fix EXT_color_write_enable check
|
||||
|
||||
Iago Toral Quiroga (1):
|
||||
|
||||
- v3dv: stop tracking push constant buffer references
|
||||
|
||||
Icecream95 (2):
|
||||
|
||||
- panfrost: Only emit images when they are present
|
||||
- panfrost: Don't unbind recently bound streamout targets
|
||||
|
||||
Jason Ekstrand (1):
|
||||
|
||||
- vulkan/nir: Don't remove dead XFB outputs
|
||||
|
||||
Jesse Natalie (1):
|
||||
|
||||
- u_atomic: Fix MSVC p_atomic_add_return
|
||||
|
||||
Lionel Landwerlin (7):
|
||||
|
||||
- intel: protect against empty invalidate ranges
|
||||
- anv: track if images can be fast clear with non-zero color
|
||||
- anv: deal with isl format swizzles for buffer views
|
||||
- spirv: switch to uint64 for rayquery internal type
|
||||
- anv: ensure tile flush before streamout writes
|
||||
- intel/fs: Set NonPerspectiveBarycentricEnable when the interpolator needs it.
|
||||
- anv: fix primitive topology dynamic state emission on gfx7
|
||||
|
||||
Mike Blumenkrantz (11):
|
||||
|
||||
- lavapipe: support inlined shader spirv for compute
|
||||
- zink: allow multiple tex components for depth tg4
|
||||
- zink: always use 32bit sample ops
|
||||
- zink: use right glsl length getter for ntv partial stores
|
||||
- zink: handle max_vertices=0 in geometry shader
|
||||
- zink: handle null samplerview in get_imageview_for_binding()
|
||||
- zink: call bind_last_vertex_stage() when binding vs
|
||||
- zink: fix viewport count tracking
|
||||
- zink: invoke descriptor_program_deinit for programs on context destroy
|
||||
- zink: only flag fbfetch as rp update if fbfetch wasn't already configured
|
||||
- zink: avoid crashing when bindless texture updates aren't used
|
||||
|
||||
Nanley Chery (2):
|
||||
|
||||
- iris: Don't leak surface states for compressed resources
|
||||
- iris: Don't leak compressed resources in iris_create_surface
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (1):
|
||||
|
||||
- radeonsi: check last_dirty_buf_counter and dirty_tex_counter
|
||||
|
||||
Qiang Yu (2):
|
||||
|
||||
- ac/nir/ngg: fix nogs culling scratch size
|
||||
- ac/nir/ngg: add a barrier before prim id export
|
||||
|
||||
Rhys Perry (1):
|
||||
|
||||
- radv: fix vbo_bound_mask indexing
|
||||
|
||||
SoroushIMG (2):
|
||||
|
||||
- zink: Fix spirv stream 0 vertex emit for multistream shaders
|
||||
- Zink: Fix clear being missed when using emulated draws in zink_blit
|
||||
|
||||
Timur Kristóf (1):
|
||||
|
||||
- ac/llvm: Add LLVM bug workaround to ac_build_mbcnt_add.
|
||||
|
||||
newbluemoon (1):
|
||||
|
||||
- nine: replace ulimit with sysconf call
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user