Compare commits
283 Commits
explicit-s
...
mesa-24.0.
Author | SHA1 | Date | |
---|---|---|---|
|
a3df5eab6c | ||
|
11367cc87a | ||
|
8a5c89a294 | ||
|
7e6f55f336 | ||
|
b137afc1e6 | ||
|
b067a61c07 | ||
|
e7244292ce | ||
|
6157ac47f5 | ||
|
dd627a3462 | ||
|
f22f1117bd | ||
|
b44886773c | ||
|
d6aefb583e | ||
|
e94f1fc304 | ||
|
046ca162a9 | ||
|
c440d7ceef | ||
|
20cc365eb2 | ||
|
cf0ed80d3a | ||
|
850c9dbdc9 | ||
|
baba35ed69 | ||
|
ffd79476ec | ||
|
ab000d7951 | ||
|
2728e5f2cc | ||
|
313a9e6b73 | ||
|
f5311e2418 | ||
|
d2c6a48ee9 | ||
|
aead18c79d | ||
|
40ab1da1b4 | ||
|
83250a30aa | ||
|
6aa24ea086 | ||
|
5e178a07a0 | ||
|
da3ac67e23 | ||
|
76bb6e7f8e | ||
|
21090c8d3e | ||
|
c8bdf6129a | ||
|
d50d8ea2ba | ||
|
c7f3e736a0 | ||
|
db5a997626 | ||
|
d3df85a197 | ||
|
d0ea44cfdc | ||
|
2e1ccf1c59 | ||
|
2bc85abbf2 | ||
|
0f8d77fc04 | ||
|
6add041513 | ||
|
0de687d8f8 | ||
|
8dd90997d7 | ||
|
71442fdd6f | ||
|
2128a8a07b | ||
|
e814fc81b0 | ||
|
c126631fe7 | ||
|
519c96f3c8 | ||
|
a85301784d | ||
|
8a338675c6 | ||
|
abd5842ed7 | ||
|
f36d69d1d6 | ||
|
2166ee5c2e | ||
|
3794d15e61 | ||
|
40c72e73e7 | ||
|
7426889729 | ||
|
0738409dc7 | ||
|
cd582fa016 | ||
|
4d87eb83da | ||
|
e730b1b62b | ||
|
b9def8ca05 | ||
|
3c1a634e7e | ||
|
10eb12968b | ||
|
a9c5611b49 | ||
|
1528c6f524 | ||
|
25d2384e10 | ||
|
3120d28d2d | ||
|
7a0833e335 | ||
|
974829185e | ||
|
5da667ad3e | ||
|
1933436ada | ||
|
3ba68813f2 | ||
|
be7a46c3c5 | ||
|
000135abe1 | ||
|
c1b9d9118f | ||
|
edf03628d7 | ||
|
f32c100fcc | ||
|
eb72574c8d | ||
|
ef8f54de13 | ||
|
f43c8e6694 | ||
|
e886ee02ed | ||
|
4c434ac992 | ||
|
be6a909520 | ||
|
f41b8b1323 | ||
|
5c0de4ed9b | ||
|
9d42171013 | ||
|
19d0f2708f | ||
|
92cb6d5938 | ||
|
3e361635b8 | ||
|
68a46fd846 | ||
|
9b4abb2ed0 | ||
|
e4c2cbeb33 | ||
|
8d18be6357 | ||
|
c1afe86299 | ||
|
003ba21b5f | ||
|
73c637fcfe | ||
|
277c905b41 | ||
|
c206849335 | ||
|
a2a141dffa | ||
|
48608401a3 | ||
|
9b2d95ab13 | ||
|
73b955965b | ||
|
23442c825b | ||
|
d1b79ef57b | ||
|
e7c7b4e2f1 | ||
|
e8c13d5b9d | ||
|
ddb4aff2c2 | ||
|
963ad46563 | ||
|
8667ddc209 | ||
|
46c290d94b | ||
|
45c761f2c2 | ||
|
41b9381046 | ||
|
d329b14698 | ||
|
25b67841a1 | ||
|
7d8c7ccc0d | ||
|
feacc7e5a3 | ||
|
7d78a9b36b | ||
|
6e96c0df97 | ||
|
eac978e36d | ||
|
8bb8f2ef2c | ||
|
c3ba03903f | ||
|
cb6f5b00e9 | ||
|
223c8cd0d3 | ||
|
71c1740914 | ||
|
7bca150d5a | ||
|
7a27b2afba | ||
|
acdfcc4243 | ||
|
c47dbea2a0 | ||
|
4c25e80e6c | ||
|
3ee587ed56 | ||
|
d24a93dbec | ||
|
dbf730b14d | ||
|
b9554aead1 | ||
|
3f5b57c696 | ||
|
8c5fafef1d | ||
|
f45c9a38db | ||
|
4ce8d2d8b3 | ||
|
9f0048a73f | ||
|
60d67f1820 | ||
|
22bc2a897c | ||
|
8c6de60c54 | ||
|
e79ec6621b | ||
|
ee25160ed5 | ||
|
150a5d8298 | ||
|
03ecd8b0a5 | ||
|
74a0eb9cfa | ||
|
ec84f5a1e2 | ||
|
63dc250b69 | ||
|
a3a927a1cd | ||
|
f7c73de1c2 | ||
|
a085877c56 | ||
|
438a064a9c | ||
|
627a6d792a | ||
|
098fb7465d | ||
|
b728809a02 | ||
|
cb7fe98f3f | ||
|
22a21925e4 | ||
|
f135adb82a | ||
|
d2064c52fb | ||
|
e5ef4678dd | ||
|
9ac7a658c4 | ||
|
566c2835dc | ||
|
6bcf386f5c | ||
|
cad3474793 | ||
|
bbe9e29fd4 | ||
|
1aab9bc3f0 | ||
|
ec4d013e82 | ||
|
6924679fff | ||
|
780b69ebfc | ||
|
26db70410e | ||
|
d1b2c4152e | ||
|
ce8c959664 | ||
|
e6990f0316 | ||
|
6cced86088 | ||
|
ea8681f985 | ||
|
570faac1c1 | ||
|
a315353199 | ||
|
4c62d39214 | ||
|
5f7921620e | ||
|
8be6eab836 | ||
|
66d3b00eaa | ||
|
68e58263eb | ||
|
88880bfc78 | ||
|
439aff7ff6 | ||
|
e7715e39a5 | ||
|
97c0e12da3 | ||
|
dae3eb155a | ||
|
dc7b4111fd | ||
|
6ffceb7138 | ||
|
8f9db1db2e | ||
|
5b7553a101 | ||
|
77e4a2a06e | ||
|
2588d3f4b9 | ||
|
09bace40bf | ||
|
aba20a934d | ||
|
7e4e5fbdfb | ||
|
77c2a5d4d8 | ||
|
ba5fd74ae3 | ||
|
808f056688 | ||
|
d25222c73f | ||
|
3f1d5726cc | ||
|
466ae8c313 | ||
|
d2094c1e1b | ||
|
73dcdc7a4e | ||
|
1059613931 | ||
|
4410947ebe | ||
|
b85673b086 | ||
|
725af5b50c | ||
|
e2178ddc07 | ||
|
ee57c9df39 | ||
|
2a4f8de54f | ||
|
7af4d666a7 | ||
|
72d36448f8 | ||
|
e99d28b4e2 | ||
|
bfa31de5fd | ||
|
252a87e77c | ||
|
95167b212e | ||
|
8039f6a525 | ||
|
2e4623bd19 | ||
|
812bcc29af | ||
|
21d22653da | ||
|
ebd56d7a76 | ||
|
e1d20b69c4 | ||
|
0392e4bf5c | ||
|
364835c513 | ||
|
83b5a3a3f9 | ||
|
6d1dae874d | ||
|
484a051aaa | ||
|
cfa818f191 | ||
|
69cac7ae19 | ||
|
b428530441 | ||
|
057493cefb | ||
|
219cd6dc40 | ||
|
ba54cfa014 | ||
|
bc9a92aa03 | ||
|
085612fce5 | ||
|
74ee323c17 | ||
|
2ff9219359 | ||
|
ed75400a50 | ||
|
22c416e1c8 | ||
|
a062b0432a | ||
|
01b374ecaf | ||
|
e716b08f86 | ||
|
9d1a064663 | ||
|
f7f823c787 | ||
|
b65d7520f6 | ||
|
1246e54f1c | ||
|
4175b4d547 | ||
|
9732d1bdcd | ||
|
8974222433 | ||
|
ce34ec41cd | ||
|
3dabc03b58 | ||
|
25ae9134dd | ||
|
43a00ad0fa | ||
|
78fd14d938 | ||
|
c5b8590e6d | ||
|
9888a95130 | ||
|
05ff891088 | ||
|
fc4180339c | ||
|
b39ee4d766 | ||
|
5b8984f32f | ||
|
eb3d73073f | ||
|
f19b7d8dfc | ||
|
04ffe4771e | ||
|
0ebdd39d85 | ||
|
fcd78c5281 | ||
|
97ebcff41c | ||
|
6febac5c96 | ||
|
ab960ee0bf | ||
|
fc11cbb37e | ||
|
1f5604ed45 | ||
|
cc677d7c30 | ||
|
f575e2b9f1 | ||
|
3753919715 | ||
|
757192b046 | ||
|
02b5a2348d | ||
|
3c36933195 | ||
|
ae5c0e6600 | ||
|
f1064107e9 | ||
|
6b4f639474 | ||
|
26a96af808 |
@@ -2,7 +2,6 @@
|
||||
# enforcement in the CI.
|
||||
|
||||
src/gallium/drivers/i915
|
||||
src/gallium/targets/teflon/**/*
|
||||
src/amd/vulkan/**/*
|
||||
src/amd/compiler/**/*
|
||||
src/egl/**/*
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,4 +3,3 @@
|
||||
*.pyo
|
||||
*.out
|
||||
/build
|
||||
.venv/
|
||||
|
@@ -160,7 +160,25 @@ include:
|
||||
- local: '.gitlab-ci/farm-rules.yml'
|
||||
- local: '.gitlab-ci/test-source-dep.yml'
|
||||
- local: 'docs/gitlab-ci.yml'
|
||||
- local: 'src/**/ci/gitlab-ci.yml'
|
||||
- local: 'src/amd/ci/gitlab-ci.yml'
|
||||
- local: 'src/broadcom/ci/gitlab-ci.yml'
|
||||
- local: 'src/etnaviv/ci/gitlab-ci.yml'
|
||||
- local: 'src/freedreno/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/crocus/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/d3d12/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/i915/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/r300/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/lima/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/nouveau/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/softpipe/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/virgl/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/drivers/zink/ci/gitlab-ci.yml'
|
||||
- local: 'src/gallium/frontends/lavapipe/ci/gitlab-ci.yml'
|
||||
- local: 'src/intel/ci/gitlab-ci.yml'
|
||||
- local: 'src/microsoft/ci/gitlab-ci.yml'
|
||||
- local: 'src/panfrost/ci/gitlab-ci.yml'
|
||||
- local: 'src/virtio/ci/gitlab-ci.yml'
|
||||
|
||||
|
||||
# YAML anchors for rule conditions
|
||||
@@ -276,32 +294,6 @@ sanity:
|
||||
script:
|
||||
# ci-fairy check-commits --junit-xml=check-commits.xml
|
||||
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
|
||||
- |
|
||||
set -eu
|
||||
image_tags=(
|
||||
DEBIAN_BASE_TAG
|
||||
DEBIAN_BUILD_TAG
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||
DEBIAN_X86_64_TEST_GL_TAG
|
||||
DEBIAN_X86_64_TEST_VK_TAG
|
||||
ALPINE_X86_64_BUILD_TAG
|
||||
ALPINE_X86_64_LAVA_SSH_TAG
|
||||
FEDORA_X86_64_BUILD_TAG
|
||||
KERNEL_ROOTFS_TAG
|
||||
KERNEL_TAG
|
||||
PKG_REPO_REV
|
||||
WINDOWS_X64_MSVC_TAG
|
||||
WINDOWS_X64_BUILD_TAG
|
||||
WINDOWS_X64_TEST_TAG
|
||||
)
|
||||
for var in "${image_tags[@]}"
|
||||
do
|
||||
if [ "$(echo -n "${!var}" | wc -c)" -gt 20 ]
|
||||
then
|
||||
echo "$var is too long; please make sure it is at most 20 chars."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
artifacts:
|
||||
when: on_failure
|
||||
reports:
|
||||
|
@@ -9,9 +9,6 @@
|
||||
# submission, so skip it in the regular CI.
|
||||
dEQP-VK.api.driver_properties.conformance_version
|
||||
|
||||
# Exclude this test which might fail when a new extension is implemented.
|
||||
dEQP-VK.info.device_extensions
|
||||
|
||||
# These are tremendously slow (pushing toward a minute), and aren't
|
||||
# reliable to be run in parallel with other tests due to CPU-side timing.
|
||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
||||
|
@@ -74,11 +74,10 @@ debian-testing:
|
||||
-D platforms=x11,wayland
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
-D gallium-nine=true
|
||||
-D gallium-va=enabled
|
||||
-D gallium-rusticl=true
|
||||
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915,r300"
|
||||
VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau"
|
||||
VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau-experimental"
|
||||
BUILDTYPE: "debugoptimized"
|
||||
EXTRA_OPTION: >
|
||||
-D spirv-to-dxil=true
|
||||
@@ -104,22 +103,8 @@ debian-testing-asan:
|
||||
-D b_sanitize=address
|
||||
-D valgrind=disabled
|
||||
-D tools=dlclose-skip
|
||||
-D intel-clc=system
|
||||
S3_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Do a host build for intel-clc (asan complains not being loaded
|
||||
# as the first library)
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-testing-msan:
|
||||
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
||||
@@ -131,7 +116,6 @@ debian-testing-msan:
|
||||
EXTRA_OPTION:
|
||||
-D b_sanitize=memory
|
||||
-D b_lundef=false
|
||||
-D intel-clc=system
|
||||
S3_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Don't run all the tests yet:
|
||||
@@ -140,19 +124,6 @@ debian-testing-msan:
|
||||
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
||||
GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||
VULKAN_DRIVERS: intel,amd,broadcom,virtio
|
||||
# Do a host build for intel-clc (msan complains about
|
||||
# uninitialized values in the LLVM libs)
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-build-testing:
|
||||
extends: .meson-build
|
||||
@@ -224,7 +195,6 @@ debian-release:
|
||||
-D osmesa=true
|
||||
-D tools=all
|
||||
-D intel-clc=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
BUILDTYPE: "release"
|
||||
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
||||
@@ -249,7 +219,7 @@ alpine-build-testing:
|
||||
-D egl=enabled
|
||||
-D glvnd=false
|
||||
-D platforms=wayland
|
||||
LLVM_VERSION: "16"
|
||||
LLVM_VERSION: ""
|
||||
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
|
||||
@@ -295,9 +265,8 @@ fedora-release:
|
||||
-D selinux=true
|
||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D intel-rt=enabled
|
||||
-D intel-clc=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
@@ -347,7 +316,6 @@ debian-android:
|
||||
-D platform-sdk-version=33
|
||||
-D valgrind=disabled
|
||||
-D android-libbacktrace=disabled
|
||||
-D intel-clc=system
|
||||
GALLIUM_ST: >
|
||||
-D dri3=disabled
|
||||
-D gallium-vdpau=disabled
|
||||
@@ -356,19 +324,8 @@ debian-android:
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-rusticl=false
|
||||
LLVM_VERSION: "15"
|
||||
LLVM_VERSION: ""
|
||||
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||
script:
|
||||
@@ -459,7 +416,6 @@ debian-arm64:
|
||||
-D imagination-srv=true
|
||||
-D perfetto=true
|
||||
-D freedreno-kmds=msm,virtio
|
||||
-D teflon=true
|
||||
S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
|
||||
script:
|
||||
- .gitlab-ci/meson/build.sh
|
||||
@@ -540,7 +496,7 @@ debian-clang:
|
||||
-D opencl-spirv=true
|
||||
-D shared-glapi=enabled
|
||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau
|
||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau-experimental
|
||||
EXTRA_OPTION:
|
||||
-D spirv-to-dxil=true
|
||||
-D osmesa=true
|
||||
@@ -549,9 +505,7 @@ debian-clang:
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D build-aco-tests=true
|
||||
-D intel-clc=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
CC: clang-${LLVM_VERSION}
|
||||
CXX: clang++-${LLVM_VERSION}
|
||||
|
||||
@@ -618,11 +572,11 @@ debian-vulkan:
|
||||
-D c_args=-fno-sanitize-recover=all
|
||||
-D cpp_args=-fno-sanitize-recover=all
|
||||
UBSAN_OPTIONS: "print_stacktrace=1"
|
||||
VULKAN_DRIVERS: amd,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination-experimental,microsoft-experimental,nouveau
|
||||
VULKAN_DRIVERS: amd,broadcom,freedreno,intel,intel_hasvk,virtio,imagination-experimental,microsoft-experimental
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D build-aco-tests=true
|
||||
-D intel-rt=disabled
|
||||
-D intel-clc=disabled
|
||||
-D imagination-srv=true
|
||||
|
||||
debian-x86_32:
|
||||
@@ -637,18 +591,6 @@ debian-x86_32:
|
||||
LLVM_VERSION: 15
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D intel-clc=system
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-s390x:
|
||||
extends:
|
||||
|
@@ -39,6 +39,7 @@ for var in \
|
||||
DEQP_RUNNER_OPTIONS \
|
||||
DEQP_SUITE \
|
||||
DEQP_TEMP_DIR \
|
||||
DEQP_VARIANT \
|
||||
DEQP_VER \
|
||||
DEQP_WIDTH \
|
||||
DEVICE_NAME \
|
||||
@@ -120,7 +121,6 @@ for var in \
|
||||
VK_ICD_FILENAMES \
|
||||
VKD3D_PROTON_RESULTS \
|
||||
VKD3D_CONFIG \
|
||||
VKD3D_TEST_EXCLUDE \
|
||||
ZINK_DESCRIPTORS \
|
||||
ZINK_DEBUG \
|
||||
LVP_POISON_MEMORY \
|
||||
|
@@ -7,8 +7,6 @@
|
||||
# Second-stage init, used to set up devices and our job environment before
|
||||
# running tests.
|
||||
|
||||
shopt -s extglob
|
||||
|
||||
# Make sure to kill itself and all the children process from this script on
|
||||
# exiting, since any console output may interfere with LAVA signals handling,
|
||||
# which based on the log console.
|
||||
@@ -108,13 +106,6 @@ export XDG_CACHE_HOME=/tmp
|
||||
# Make sure Python can find all our imports
|
||||
export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
|
||||
|
||||
# If we need to specify a driver, it means several drivers could pick up this gpu;
|
||||
# ensure that the other driver can't accidentally be used
|
||||
if [ -n "$MESA_LOADER_DRIVER_OVERRIDE" ]; then
|
||||
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
||||
fi
|
||||
ls -1 /install/lib/dri/*_dri.so
|
||||
|
||||
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||
# Ensure initialization of the DRM device (needed by MSM)
|
||||
head -0 /dev/dri/renderD128
|
||||
|
@@ -8,8 +8,6 @@
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export LLVM_VERSION="${LLVM_VERSION:=16}"
|
||||
|
||||
EPHEMERAL=(
|
||||
)
|
||||
|
||||
@@ -18,7 +16,6 @@ DEPS=(
|
||||
bash
|
||||
bison
|
||||
ccache
|
||||
clang16-dev
|
||||
cmake
|
||||
clang-dev
|
||||
coreutils
|
||||
@@ -30,7 +27,6 @@ DEPS=(
|
||||
gettext
|
||||
glslang
|
||||
linux-headers
|
||||
llvm16-static
|
||||
llvm16-dev
|
||||
meson
|
||||
expat-dev
|
||||
@@ -52,10 +48,6 @@ DEPS=(
|
||||
|
||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
|
||||
|
@@ -6,13 +6,13 @@ set -ex
|
||||
git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
|
||||
CROSVM_VERSION=1641c55bcc922588e24de73e9cca7b5e4005bd6d
|
||||
CROSVM_VERSION=e3815e62d675ef436956a992e0ed58b7309c759d
|
||||
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/crosvm/crosvm /platform/crosvm
|
||||
pushd /platform/crosvm
|
||||
git checkout "$CROSVM_VERSION"
|
||||
git submodule update --init
|
||||
|
||||
VIRGLRENDERER_VERSION=d9c002fac153b834a2c17731f2b85c36e333e102
|
||||
VIRGLRENDERER_VERSION=747c6ae5b194ca551a79958a9a86c42bddcc4553
|
||||
rm -rf third_party/virglrenderer
|
||||
git clone --single-branch -b main --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
|
||||
pushd third_party/virglrenderer
|
||||
@@ -31,10 +31,10 @@ RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
--version 0.65.1 \
|
||||
$EXTRA_CARGO_ARGS
|
||||
|
||||
CROSVM_USE_SYSTEM_MINIGBM=1 CROSVM_USE_SYSTEM_VIRGLRENDERER=1 RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
CROSVM_USE_SYSTEM_VIRGLRENDERER=1 RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--locked \
|
||||
--features 'default-no-sandbox gpu x virgl_renderer' \
|
||||
--features 'default-no-sandbox gpu x virgl_renderer virgl_renderer_next' \
|
||||
--path . \
|
||||
--root /usr/local \
|
||||
$EXTRA_CARGO_ARGS
|
||||
|
@@ -3,37 +3,31 @@
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BASE_TAG
|
||||
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
set -ex
|
||||
|
||||
DEQP_RUNNER_VERSION=0.18.0
|
||||
|
||||
DEQP_RUNNER_GIT_URL="${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/mesa/deqp-runner.git}"
|
||||
|
||||
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"
|
||||
DEQP_RUNNER_CARGO_ARGS="--git ${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/anholt/deqp-runner.git}"
|
||||
|
||||
if [ -n "${DEQP_RUNNER_GIT_TAG}" ]; then
|
||||
DEQP_RUNNER_CARGO_ARGS="--tag ${DEQP_RUNNER_GIT_TAG} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||
DEQP_RUNNER_GIT_CHECKOUT="$DEQP_RUNNER_GIT_TAG"
|
||||
else
|
||||
DEQP_RUNNER_CARGO_ARGS="--rev ${DEQP_RUNNER_GIT_REV} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||
DEQP_RUNNER_GIT_CHECKOUT="$DEQP_RUNNER_GIT_REV"
|
||||
fi
|
||||
|
||||
DEQP_RUNNER_CARGO_ARGS="${DEQP_RUNNER_CARGO_ARGS} ${EXTRA_CARGO_ARGS}"
|
||||
else
|
||||
# Install from package registry
|
||||
DEQP_RUNNER_CARGO_ARGS="--version ${DEQP_RUNNER_VERSION} ${EXTRA_CARGO_ARGS} -- deqp-runner"
|
||||
DEQP_RUNNER_GIT_CHECKOUT="v$DEQP_RUNNER_VERSION"
|
||||
fi
|
||||
|
||||
if [[ "$RUST_TARGET" != *-android ]]; then
|
||||
if [ -z "$ANDROID_NDK_HOME" ]; then
|
||||
cargo install --locked \
|
||||
-j ${FDO_CI_CONCURRENT:-4} \
|
||||
--root /usr/local \
|
||||
@@ -41,7 +35,7 @@ if [[ "$RUST_TARGET" != *-android ]]; then
|
||||
else
|
||||
mkdir -p /deqp-runner
|
||||
pushd /deqp-runner
|
||||
git clone --branch "$DEQP_RUNNER_GIT_CHECKOUT" --depth 1 "$DEQP_RUNNER_GIT_URL" deqp-runner-git
|
||||
git clone --branch v${DEQP_RUNNER_VERSION} --depth 1 https://gitlab.freedesktop.org/anholt/deqp-runner.git deqp-runner-git
|
||||
pushd deqp-runner-git
|
||||
|
||||
cargo install --locked \
|
||||
@@ -49,10 +43,10 @@ else
|
||||
--root /usr/local --version 2.10.0 \
|
||||
cargo-ndk
|
||||
|
||||
rustup target add $RUST_TARGET
|
||||
RUSTFLAGS='-C target-feature=+crt-static' cargo ndk --target $RUST_TARGET build --release
|
||||
rustup target add x86_64-linux-android
|
||||
RUSTFLAGS='-C target-feature=+crt-static' cargo ndk --target x86_64-linux-android build
|
||||
|
||||
mv target/$RUST_TARGET/release/deqp-runner /deqp-runner
|
||||
mv target/x86_64-linux-android/debug/deqp-runner /deqp-runner
|
||||
|
||||
cargo uninstall --locked \
|
||||
--root /usr/local \
|
||||
|
@@ -10,15 +10,20 @@
|
||||
|
||||
set -ex -o pipefail
|
||||
|
||||
# See `deqp_build_targets` below for which release is used to produce which
|
||||
# binary. Unless this comment has bitrotten:
|
||||
# - the VK release produces `deqp-vk`,
|
||||
# - the GL release produces `glcts`, and
|
||||
# - the GLES release produces `deqp-gles*` and `deqp-egl`
|
||||
DEQP_VERSION=vulkan-cts-1.3.7.0
|
||||
|
||||
DEQP_VK_VERSION=1.3.7.0
|
||||
DEQP_GL_VERSION=4.6.4.0
|
||||
DEQP_GLES_VERSION=3.2.10.0
|
||||
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 $DEQP_VERSION \
|
||||
--depth 1 \
|
||||
/VK-GL-CTS
|
||||
pushd /VK-GL-CTS
|
||||
|
||||
mkdir -p /deqp
|
||||
|
||||
echo "dEQP base version $DEQP_VERSION" > /deqp/version-log
|
||||
|
||||
# Patches to VulkanCTS may come from commits in their repo (listed in
|
||||
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
||||
@@ -26,8 +31,7 @@ DEQP_GLES_VERSION=3.2.10.0
|
||||
# Both list variables would have comments explaining the reasons behind the
|
||||
# patches.
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_commits_to_backport=(
|
||||
cts_commits_to_backport=(
|
||||
# Take multiview into account for task shader inv. stats
|
||||
22aa3f4c59f6e1d4daebd5a8c9c05bce6cd3b63b
|
||||
|
||||
@@ -39,106 +43,30 @@ vk_cts_commits_to_backport=(
|
||||
|
||||
# Fix several issues in dynamic rendering basic tests
|
||||
c5453824b498c981c6ba42017d119f5de02a3e34
|
||||
|
||||
# Add setVisible for VulkanWindowDirectDrm
|
||||
a8466bf6ea98f6cd6733849ad8081775318a3e3e
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_patch_files=(
|
||||
# Derivate subgroup fix
|
||||
# https://github.com/KhronosGroup/VK-GL-CTS/pull/442
|
||||
build-deqp-vk_Use-subgroups-helper-in-derivate-tests.patch
|
||||
build-deqp-vk_Add-missing-subgroup-support-checks-for-linear-derivate-tests.patch
|
||||
)
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
vk_cts_patch_files+=(
|
||||
build-deqp-vk_Allow-running-on-Android-from-the-command-line.patch
|
||||
build-deqp-vk_Android-prints-to-stdout-instead-of-logcat.patch
|
||||
)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
gl_cts_commits_to_backport=(
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
gl_cts_patch_files=(
|
||||
)
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
gl_cts_patch_files+=(
|
||||
build-deqp-gl_Allow-running-on-Android-from-the-command-line.patch
|
||||
build-deqp-gl_Android-prints-to-stdout-instead-of-logcat.patch
|
||||
)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
# GLES builds also EGL
|
||||
gles_cts_commits_to_backport=(
|
||||
# Implement support for the EGL_EXT_config_select_group extension
|
||||
88ba9ac270db5be600b1ecacbc6d9db0c55d5be4
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
gles_cts_patch_files=(
|
||||
)
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
gles_cts_patch_files+=(
|
||||
build-deqp-gles_Allow-running-on-Android-from-the-command-line.patch
|
||||
build-deqp-gles_Android-prints-to-stdout-instead-of-logcat.patch
|
||||
)
|
||||
fi
|
||||
|
||||
|
||||
### Careful editing anything below this line
|
||||
|
||||
|
||||
git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
|
||||
# shellcheck disable=SC2153
|
||||
case "${DEQP_API}" in
|
||||
VK) DEQP_VERSION="vulkan-cts-$DEQP_VK_VERSION";;
|
||||
GL) DEQP_VERSION="opengl-cts-$DEQP_GL_VERSION";;
|
||||
GLES) DEQP_VERSION="opengl-es-cts-$DEQP_GLES_VERSION";;
|
||||
esac
|
||||
|
||||
git clone \
|
||||
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
||||
-b $DEQP_VERSION \
|
||||
--depth 1 \
|
||||
/VK-GL-CTS
|
||||
pushd /VK-GL-CTS
|
||||
|
||||
mkdir -p /deqp
|
||||
|
||||
# shellcheck disable=SC2153
|
||||
deqp_api=${DEQP_API,,}
|
||||
|
||||
cts_commits_to_backport="${deqp_api}_cts_commits_to_backport[@]"
|
||||
for commit in "${!cts_commits_to_backport}"
|
||||
for commit in "${cts_commits_to_backport[@]}"
|
||||
do
|
||||
PATCH_URL="https://github.com/KhronosGroup/VK-GL-CTS/commit/$commit.patch"
|
||||
echo "Apply patch to ${DEQP_API} CTS from $PATCH_URL"
|
||||
echo "Apply patch to VK-GL-CTS from $PATCH_URL"
|
||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 $PATCH_URL | \
|
||||
git am -
|
||||
done
|
||||
|
||||
cts_patch_files="${deqp_api}_cts_patch_files[@]"
|
||||
for patch in "${!cts_patch_files}"
|
||||
cts_patch_files=(
|
||||
# Android specific patches.
|
||||
build-deqp_Allow-running-on-Android-from-the-command-line.patch
|
||||
build-deqp_Android-prints-to-stdout-instead-of-logcat.patch
|
||||
)
|
||||
|
||||
for patch in "${cts_patch_files[@]}"
|
||||
do
|
||||
echo "Apply patch to ${DEQP_API} CTS from $patch"
|
||||
echo "Apply patch to VK-GL-CTS from $patch"
|
||||
git am < $OLDPWD/.gitlab-ci/container/patches/$patch
|
||||
done
|
||||
|
||||
{
|
||||
echo "dEQP base version $DEQP_VERSION"
|
||||
echo "The following local patches are applied on top:"
|
||||
git log --reverse --oneline $DEQP_VERSION.. --format=%s | sed 's/^/- /'
|
||||
} > /deqp/version-$deqp_api
|
||||
echo "The following local patches are applied on top:" >> /deqp/version-log
|
||||
git log --reverse --oneline $DEQP_VERSION.. --format=%s | sed 's/^/- /' >> /deqp/version-log
|
||||
|
||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
||||
@@ -151,35 +79,26 @@ popd
|
||||
|
||||
pushd /deqp
|
||||
|
||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||
-DDEQP_TARGET=android \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
$EXTRA_CMAKE_ARGS
|
||||
mold --run ninja modules/egl/deqp-egl
|
||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-android
|
||||
else
|
||||
if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||
# When including EGL/X11 testing, do that build first and save off its
|
||||
# deqp-egl binary.
|
||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||
-DDEQP_TARGET=x11_egl_glx \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
$EXTRA_CMAKE_ARGS
|
||||
mold --run ninja modules/egl/deqp-egl
|
||||
ninja modules/egl/deqp-egl
|
||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
|
||||
|
||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||
-DDEQP_TARGET=wayland \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
$EXTRA_CMAKE_ARGS
|
||||
mold --run ninja modules/egl/deqp-egl
|
||||
ninja modules/egl/deqp-egl
|
||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
|
||||
fi
|
||||
fi
|
||||
|
||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||
-DDEQP_TARGET=${DEQP_TARGET} \
|
||||
-DDEQP_TARGET=${DEQP_TARGET:-default} \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
$EXTRA_CMAKE_ARGS
|
||||
|
||||
@@ -190,58 +109,35 @@ if [ "${DEQP_TARGET}" = 'default' ]; then
|
||||
grep -q DEQP_SUPPORT_XCB=1 build.ninja
|
||||
fi
|
||||
|
||||
deqp_build_targets=()
|
||||
case "${DEQP_API}" in
|
||||
VK)
|
||||
deqp_build_targets+=(deqp-vk)
|
||||
;;
|
||||
GL)
|
||||
deqp_build_targets+=(glcts)
|
||||
;;
|
||||
GLES)
|
||||
deqp_build_targets+=(deqp-gles{2,3,31})
|
||||
# deqp-egl also comes from this build, but it is handled separately above.
|
||||
;;
|
||||
esac
|
||||
if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||
deqp_build_targets+=(testlog-to-xml)
|
||||
deqp_build_targets+=(testlog-to-csv)
|
||||
deqp_build_targets+=(testlog-to-junit)
|
||||
mold --run ninja
|
||||
|
||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-android
|
||||
fi
|
||||
|
||||
mold --run ninja "${deqp_build_targets[@]}"
|
||||
# Copy out the mustpass lists we want.
|
||||
mkdir /deqp/mustpass
|
||||
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
||||
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
||||
>> /deqp/mustpass/vk-master.txt
|
||||
done
|
||||
|
||||
if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||
# Copy out the mustpass lists we want.
|
||||
mkdir -p /deqp/mustpass
|
||||
|
||||
if [ "${DEQP_API}" = 'VK' ]; then
|
||||
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
||||
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
||||
>> /deqp/mustpass/vk-master.txt
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "${DEQP_API}" = 'GL' ]; then
|
||||
cp \
|
||||
/VK-GL-CTS/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-main.txt \
|
||||
/deqp/mustpass/
|
||||
cp \
|
||||
/VK-GL-CTS/external/openglcts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
|
||||
/deqp/mustpass/
|
||||
fi
|
||||
|
||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
||||
cp \
|
||||
/VK-GL-CTS/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
|
||||
/deqp/mustpass/
|
||||
cp \
|
||||
/VK-GL-CTS/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-main.txt \
|
||||
/deqp/mustpass/
|
||||
cp \
|
||||
/VK-GL-CTS/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-main.txt \
|
||||
/deqp/mustpass/
|
||||
fi
|
||||
cp \
|
||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
|
||||
/deqp/mustpass/.
|
||||
cp \
|
||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt \
|
||||
/deqp/mustpass/.
|
||||
cp \
|
||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-master.txt \
|
||||
/deqp/mustpass/.
|
||||
cp \
|
||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
|
||||
/deqp/mustpass/.
|
||||
cp \
|
||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
|
||||
/deqp/mustpass/.
|
||||
|
||||
# Save *some* executor utils, but otherwise strip things down
|
||||
# to reduct deqp build size:
|
||||
@@ -252,7 +148,7 @@ if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||
fi
|
||||
|
||||
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
||||
rm -rf /deqp/external/**/mustpass/
|
||||
rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass
|
||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-master*
|
||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-default
|
||||
|
||||
@@ -261,15 +157,9 @@ rm -rf /deqp/modules/internal
|
||||
rm -rf /deqp/execserver
|
||||
rm -rf /deqp/framework
|
||||
find . -depth \( -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' \) -exec rm -rf {} \;
|
||||
if [ "${DEQP_API}" = 'VK' ]; then
|
||||
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
|
||||
fi
|
||||
if [ "${DEQP_API}" = 'GL' ]; then
|
||||
${STRIP_CMD:-strip} external/openglcts/modules/glcts
|
||||
fi
|
||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
||||
${STRIP_CMD:-strip} modules/*/deqp-*
|
||||
fi
|
||||
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
|
||||
${STRIP_CMD:-strip} external/openglcts/modules/glcts
|
||||
${STRIP_CMD:-strip} modules/*/deqp-*
|
||||
du -sh ./*
|
||||
rm -rf /VK-GL-CTS
|
||||
popd
|
||||
|
@@ -2,14 +2,7 @@
|
||||
|
||||
set -ex
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_BASE_TAG
|
||||
# DEBIAN_BUILD_TAG
|
||||
# FEDORA_X86_64_BUILD_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
MOLD_VERSION="2.4.1"
|
||||
MOLD_VERSION="1.11.0"
|
||||
|
||||
git clone -b v"$MOLD_VERSION" --single-branch --depth 1 https://github.com/rui314/mold.git
|
||||
pushd mold
|
||||
|
@@ -1,25 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When changing this file, you need to bump the following
|
||||
# .gitlab-ci/image-tags.yml tags:
|
||||
# DEBIAN_X86_64_TEST_GL_TAG
|
||||
|
||||
set -ex -o pipefail
|
||||
|
||||
### Careful editing anything below this line
|
||||
|
||||
git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
git clone https://github.com/axeldavy/Xnine.git /Xnine
|
||||
mkdir /Xnine/build
|
||||
pushd /Xnine/build
|
||||
git checkout c64753d224c08006bcdcfa7880ada826f27164b1
|
||||
|
||||
cmake .. -DBUILD_TESTS=1 -DWITH_DRI3=1 -DD3DADAPTER9_LOCATION=/install/lib/d3d/d3dadapter9.so
|
||||
make
|
||||
|
||||
mkdir -p /NineTests/
|
||||
mv NineTests/NineTests /NineTests/
|
||||
|
||||
popd
|
||||
rm -rf /Xnine
|
@@ -8,7 +8,7 @@ set -ex
|
||||
# DEBIAN_X86_64_TEST_VK_TAG
|
||||
# KERNEL_ROOTFS_TAG
|
||||
|
||||
REV="1e631479c0b477006dd7561c55e06269d2878d8d"
|
||||
REV="f7db20b03de6896d013826c0a731bc4417c1a5a0"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||
pushd /piglit
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
set -ex
|
||||
|
||||
VALIDATION_TAG="snapshot-2024wk06"
|
||||
VALIDATION_TAG="v1.3.269"
|
||||
|
||||
git clone -b "$VALIDATION_TAG" --single-branch --depth 1 https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
|
||||
pushd Vulkan-ValidationLayers
|
||||
|
@@ -52,8 +52,7 @@ if [[ $arch != "armhf" ]]; then
|
||||
# We don't need clang-format for the crossbuilds, but the installed amd64
|
||||
# package will conflict with libclang. Uninstall clang-format (and its
|
||||
# problematic dependency) to fix.
|
||||
apt-get remove -y "clang-format-${LLVM_VERSION}" "libclang-cpp${LLVM_VERSION}" \
|
||||
"llvm-${LLVM_VERSION}-runtime" "llvm-${LLVM_VERSION}-linker-tools"
|
||||
apt-get remove -y "clang-format-${LLVM_VERSION}" "libclang-cpp${LLVM_VERSION}"
|
||||
|
||||
# llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
|
||||
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
||||
|
@@ -27,7 +27,6 @@ DEPS=(
|
||||
cmake
|
||||
curl
|
||||
fastboot
|
||||
flatbuffers-compiler
|
||||
flex
|
||||
g++
|
||||
git
|
||||
@@ -37,7 +36,6 @@ DEPS=(
|
||||
libdrm-dev
|
||||
libelf-dev
|
||||
libexpat1-dev
|
||||
libflatbuffers-dev
|
||||
libvulkan-dev
|
||||
libx11-dev
|
||||
libx11-xcb-dev
|
||||
@@ -52,7 +50,6 @@ DEPS=(
|
||||
libxext-dev
|
||||
libxrandr-dev
|
||||
libxshmfence-dev
|
||||
libxtensor-dev
|
||||
libxxf86vm-dev
|
||||
libwayland-dev
|
||||
libwayland-egl-backend-dev
|
||||
|
@@ -25,12 +25,10 @@ DEPS=(
|
||||
bison
|
||||
ccache
|
||||
curl
|
||||
"clang-${LLVM_VERSION}"
|
||||
"clang-format-${LLVM_VERSION}"
|
||||
dpkg-cross
|
||||
findutils
|
||||
flex
|
||||
flatbuffers-compiler
|
||||
g++
|
||||
cmake
|
||||
gcc
|
||||
@@ -43,7 +41,6 @@ DEPS=(
|
||||
libelf-dev
|
||||
libepoxy-dev
|
||||
libexpat1-dev
|
||||
libflatbuffers-dev
|
||||
libgtk-3-dev
|
||||
"libllvm${LLVM_VERSION}"
|
||||
libomxil-bellagio-dev
|
||||
@@ -59,7 +56,6 @@ DEPS=(
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
libxshmfence-dev
|
||||
libxtensor-dev
|
||||
libxxf86vm-dev
|
||||
libwayland-egl-backend-dev
|
||||
make
|
||||
@@ -87,10 +83,6 @@ apt-get update
|
||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
$EXTRA_LOCAL_PACKAGES
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||
|
||||
|
@@ -75,6 +75,10 @@ tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
||||
rm -rf $XORGMACROS_VERSION
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
. .gitlab-ci/container/build-shader-db.sh
|
||||
|
@@ -41,7 +41,6 @@ rm "$ndk.zip"
|
||||
############### Build dEQP runner
|
||||
|
||||
export ANDROID_NDK_HOME=/$ndk
|
||||
export RUST_TARGET=x86_64-linux-android
|
||||
. .gitlab-ci/container/build-rust.sh
|
||||
. .gitlab-ci/container/build-deqp-runner.sh
|
||||
|
||||
@@ -50,12 +49,6 @@ rm -rf /root/.rustup
|
||||
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
@@ -80,14 +73,8 @@ popd
|
||||
|
||||
############### Building and installing Debian package ...
|
||||
|
||||
ANDROID_CUTTLEFISH_VERSION=f6494d9fbeaa9974b56923e3029909e5d5f440dd
|
||||
|
||||
mkdir android-cuttlefish
|
||||
git clone --depth 1 https://github.com/google/android-cuttlefish.git
|
||||
pushd android-cuttlefish
|
||||
git init
|
||||
git remote add origin https://github.com/google/android-cuttlefish.git
|
||||
git fetch --depth 1 origin "$ANDROID_CUTTLEFISH_VERSION"
|
||||
git checkout FETCH_HEAD
|
||||
|
||||
pushd base
|
||||
dpkg-buildpackage -uc -us
|
||||
|
@@ -22,7 +22,6 @@ EPHEMERAL=(
|
||||
"libclang-cpp${LLVM_VERSION}-dev"
|
||||
libdrm-dev
|
||||
libgles2-mesa-dev
|
||||
libgtest-dev
|
||||
libpciaccess-dev
|
||||
libpng-dev
|
||||
libudev-dev
|
||||
@@ -31,9 +30,6 @@ EPHEMERAL=(
|
||||
libwayland-dev
|
||||
libx11-xcb-dev
|
||||
libxcb-dri2-0-dev
|
||||
libxcb-dri3-dev
|
||||
libxcb-present-dev
|
||||
libxfixes-dev
|
||||
libxkbcommon-dev
|
||||
libxrandr-dev
|
||||
libxrender-dev
|
||||
@@ -50,7 +46,6 @@ EPHEMERAL=(
|
||||
DEPS=(
|
||||
clinfo
|
||||
iptables
|
||||
kmod
|
||||
"libclang-common-${LLVM_VERSION}-dev"
|
||||
"libclang-cpp${LLVM_VERSION}"
|
||||
libcap2
|
||||
@@ -65,7 +60,6 @@ DEPS=(
|
||||
spirv-tools
|
||||
sysvinit-core
|
||||
weston
|
||||
xwayland
|
||||
)
|
||||
|
||||
apt-get update
|
||||
@@ -82,13 +76,7 @@ PIGLIT_OPTS="-DPIGLIT_BUILD_GLX_TESTS=ON -DPIGLIT_BUILD_CL_TESTS=ON -DPIGLIT_BUI
|
||||
|
||||
############### Build dEQP GL
|
||||
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
DEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
||||
@@ -98,10 +86,6 @@ DEQP_TARGET=surfaceless \
|
||||
|
||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||
|
||||
############### Build nine tests
|
||||
|
||||
. .gitlab-ci/container/build-ninetests.sh
|
||||
|
||||
############### Uninstall the build software
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
@@ -103,8 +103,6 @@ PIGLIT_BUILD_TARGETS="piglit_replayer" . .gitlab-ci/container/build-piglit.sh
|
||||
|
||||
############### Build dEQP VK
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
############### Build apitrace
|
||||
|
@@ -30,7 +30,6 @@ DEPS=(
|
||||
ccache
|
||||
clang-devel
|
||||
flex
|
||||
flatbuffers-compiler
|
||||
gcc
|
||||
gcc-c++
|
||||
gettext
|
||||
@@ -42,7 +41,6 @@ DEPS=(
|
||||
"pkgconfig(SPIRV-Tools)"
|
||||
"pkgconfig(dri2proto)"
|
||||
"pkgconfig(expat)"
|
||||
"pkgconfig(flatbuffers)"
|
||||
"pkgconfig(glproto)"
|
||||
"pkgconfig(libclc)"
|
||||
"pkgconfig(libelf)"
|
||||
@@ -68,7 +66,6 @@ DEPS=(
|
||||
"pkgconfig(xfixes)"
|
||||
"pkgconfig(xrandr)"
|
||||
"pkgconfig(xshmfence)"
|
||||
"pkgconfig(xtensor)"
|
||||
"pkgconfig(xxf86vm)"
|
||||
"pkgconfig(zlib)"
|
||||
procps-ng
|
||||
|
@@ -316,6 +316,7 @@ fedora/x86_64_build:
|
||||
|
||||
|
||||
.kernel+rootfs:
|
||||
timeout: 2h # 24.0-only change
|
||||
extends:
|
||||
- .container+build-rules
|
||||
- .debian-container
|
||||
|
@@ -272,17 +272,7 @@ mv /usr/local/bin/*-runner $ROOTFS/usr/bin/.
|
||||
|
||||
|
||||
############### Build dEQP
|
||||
DEQP_API=GL \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET=surfaceless \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET=default \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
DEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
mv /deqp $ROOTFS/.
|
||||
|
||||
|
@@ -1,182 +0,0 @@
|
||||
From dc97ee83a813f6b170079ddf2a04bbb06221a5a7 Mon Sep 17 00:00:00 2001
|
||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
||||
Subject: [PATCH 1/2] Allow running on Android from the command line
|
||||
|
||||
For testing the Android EGL platform without having to go via the
|
||||
Android activity manager, build deqp-egl.
|
||||
|
||||
Tests that render to native windows are unsupported, as command line
|
||||
programs cannot create windows on Android.
|
||||
|
||||
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
||||
$ ninja -C build modules/egl/deqp-egl
|
||||
|
||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
---
|
||||
CMakeLists.txt | 38 ++-----------------
|
||||
.../android/tcuAndroidNativeActivity.cpp | 36 +++++++++---------
|
||||
.../platform/android/tcuAndroidPlatform.cpp | 12 +++++-
|
||||
3 files changed, 34 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index eb58cc7ba..98b8fc6cc 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -272,7 +272,7 @@ include_directories(
|
||||
external/vulkancts/framework/vulkan
|
||||
)
|
||||
|
||||
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# On Android deqp modules are compiled as libraries and linked into final .so
|
||||
set(DEQP_MODULE_LIBRARIES )
|
||||
set(DEQP_MODULE_ENTRY_POINTS )
|
||||
@@ -316,7 +316,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
||||
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -338,7 +338,7 @@ macro (add_deqp_module_skip_android MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
add_library("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" STATIC ${SRCS})
|
||||
target_link_libraries("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" ${LIBS})
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -390,37 +390,7 @@ add_subdirectory(external/vulkancts/vkscpc ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
add_subdirectory(external/openglcts ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
|
||||
# Single-binary targets
|
||||
-if (DE_OS_IS_ANDROID)
|
||||
- include_directories(executor)
|
||||
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
||||
-
|
||||
- set(DEQP_SRCS
|
||||
- framework/platform/android/tcuAndroidMain.cpp
|
||||
- framework/platform/android/tcuAndroidJNI.cpp
|
||||
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
||||
- framework/platform/android/tcuTestLogParserJNI.cpp
|
||||
- ${DEQP_MODULE_ENTRY_POINTS}
|
||||
- )
|
||||
-
|
||||
- set(DEQP_LIBS
|
||||
- tcutil-platform
|
||||
- xecore
|
||||
- ${DEQP_MODULE_LIBRARIES}
|
||||
- )
|
||||
-
|
||||
- add_library(deqp SHARED ${DEQP_SRCS})
|
||||
- target_link_libraries(deqp ${DEQP_LIBS})
|
||||
-
|
||||
- # Separate out the debug information because it's enormous
|
||||
- add_custom_command(TARGET deqp POST_BUILD
|
||||
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
||||
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
||||
-
|
||||
- # Needed by OpenGL CTS that defines its own activity but depends on
|
||||
- # common Android support code.
|
||||
- target_include_directories(deqp PRIVATE framework/platform/android)
|
||||
-
|
||||
-elseif (DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# Code sign identity
|
||||
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
||||
|
||||
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
index 6f8cd8fc5..b83e30f41 100644
|
||||
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
@@ -116,23 +116,25 @@ namespace Android
|
||||
NativeActivity::NativeActivity (ANativeActivity* activity)
|
||||
: m_activity(activity)
|
||||
{
|
||||
- activity->instance = (void*)this;
|
||||
- activity->callbacks->onStart = onStartCallback;
|
||||
- activity->callbacks->onResume = onResumeCallback;
|
||||
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
- activity->callbacks->onPause = onPauseCallback;
|
||||
- activity->callbacks->onStop = onStopCallback;
|
||||
- activity->callbacks->onDestroy = onDestroyCallback;
|
||||
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ if (activity) {
|
||||
+ activity->instance = (void*)this;
|
||||
+ activity->callbacks->onStart = onStartCallback;
|
||||
+ activity->callbacks->onResume = onResumeCallback;
|
||||
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
+ activity->callbacks->onPause = onPauseCallback;
|
||||
+ activity->callbacks->onStop = onStopCallback;
|
||||
+ activity->callbacks->onDestroy = onDestroyCallback;
|
||||
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ }
|
||||
}
|
||||
|
||||
NativeActivity::~NativeActivity (void)
|
||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
index b8a35898c..cf02e6b70 100644
|
||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
@@ -22,6 +22,7 @@
|
||||
*//*--------------------------------------------------------------------*/
|
||||
|
||||
#include "tcuAndroidPlatform.hpp"
|
||||
+#include "tcuAndroidNativeActivity.hpp"
|
||||
#include "tcuAndroidUtil.hpp"
|
||||
#include "gluRenderContext.hpp"
|
||||
#include "egluNativeDisplay.hpp"
|
||||
@@ -170,7 +171,7 @@ eglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams&
|
||||
Window* window = m_windowRegistry.tryAcquireWindow();
|
||||
|
||||
if (!window)
|
||||
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
|
||||
return new NativeWindow(window, params.width, params.height, format);
|
||||
}
|
||||
@@ -292,6 +293,9 @@ static size_t getTotalSystemMemory (ANativeActivity* activity)
|
||||
|
||||
try
|
||||
{
|
||||
+ if (!activity)
|
||||
+ throw tcu::InternalError("No activity (running from command line?");
|
||||
+
|
||||
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
||||
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
||||
return totalMemory;
|
||||
@@ -388,3 +392,9 @@ bool Platform::hasDisplay (vk::wsi::Type wsiType) const
|
||||
|
||||
} // Android
|
||||
} // tcu
|
||||
+
|
||||
+tcu::Platform* createPlatform (void)
|
||||
+{
|
||||
+ tcu::Android::NativeActivity activity(NULL);
|
||||
+ return new tcu::Android::Platform(activity);
|
||||
+}
|
||||
--
|
||||
2.42.0
|
||||
|
@@ -1,182 +0,0 @@
|
||||
From dc97ee83a813f6b170079ddf2a04bbb06221a5a7 Mon Sep 17 00:00:00 2001
|
||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
||||
Subject: [PATCH 1/2] Allow running on Android from the command line
|
||||
|
||||
For testing the Android EGL platform without having to go via the
|
||||
Android activity manager, build deqp-egl.
|
||||
|
||||
Tests that render to native windows are unsupported, as command line
|
||||
programs cannot create windows on Android.
|
||||
|
||||
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
||||
$ ninja -C build modules/egl/deqp-egl
|
||||
|
||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
---
|
||||
CMakeLists.txt | 38 ++-----------------
|
||||
.../android/tcuAndroidNativeActivity.cpp | 36 +++++++++---------
|
||||
.../platform/android/tcuAndroidPlatform.cpp | 12 +++++-
|
||||
3 files changed, 34 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index eb58cc7ba..98b8fc6cc 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -272,7 +272,7 @@ include_directories(
|
||||
external/vulkancts/framework/vulkan
|
||||
)
|
||||
|
||||
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# On Android deqp modules are compiled as libraries and linked into final .so
|
||||
set(DEQP_MODULE_LIBRARIES )
|
||||
set(DEQP_MODULE_ENTRY_POINTS )
|
||||
@@ -316,7 +316,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
||||
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -338,7 +338,7 @@ macro (add_deqp_module_skip_android MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||||
add_library("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" STATIC ${SRCS})
|
||||
target_link_libraries("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" ${LIBS})
|
||||
|
||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||||
+ if (NOT DE_OS_IS_IOS)
|
||||
# Executable target
|
||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||||
@@ -390,37 +390,7 @@ add_subdirectory(external/vulkancts/vkscpc ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
add_subdirectory(external/openglcts ${MAYBE_EXCLUDE_FROM_ALL})
|
||||
|
||||
# Single-binary targets
|
||||
-if (DE_OS_IS_ANDROID)
|
||||
- include_directories(executor)
|
||||
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
||||
-
|
||||
- set(DEQP_SRCS
|
||||
- framework/platform/android/tcuAndroidMain.cpp
|
||||
- framework/platform/android/tcuAndroidJNI.cpp
|
||||
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
||||
- framework/platform/android/tcuTestLogParserJNI.cpp
|
||||
- ${DEQP_MODULE_ENTRY_POINTS}
|
||||
- )
|
||||
-
|
||||
- set(DEQP_LIBS
|
||||
- tcutil-platform
|
||||
- xecore
|
||||
- ${DEQP_MODULE_LIBRARIES}
|
||||
- )
|
||||
-
|
||||
- add_library(deqp SHARED ${DEQP_SRCS})
|
||||
- target_link_libraries(deqp ${DEQP_LIBS})
|
||||
-
|
||||
- # Separate out the debug information because it's enormous
|
||||
- add_custom_command(TARGET deqp POST_BUILD
|
||||
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
||||
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
||||
-
|
||||
- # Needed by OpenGL CTS that defines its own activity but depends on
|
||||
- # common Android support code.
|
||||
- target_include_directories(deqp PRIVATE framework/platform/android)
|
||||
-
|
||||
-elseif (DE_OS_IS_IOS)
|
||||
+if (DE_OS_IS_IOS)
|
||||
# Code sign identity
|
||||
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
||||
|
||||
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
index 6f8cd8fc5..b83e30f41 100644
|
||||
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||||
@@ -116,23 +116,25 @@ namespace Android
|
||||
NativeActivity::NativeActivity (ANativeActivity* activity)
|
||||
: m_activity(activity)
|
||||
{
|
||||
- activity->instance = (void*)this;
|
||||
- activity->callbacks->onStart = onStartCallback;
|
||||
- activity->callbacks->onResume = onResumeCallback;
|
||||
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
- activity->callbacks->onPause = onPauseCallback;
|
||||
- activity->callbacks->onStop = onStopCallback;
|
||||
- activity->callbacks->onDestroy = onDestroyCallback;
|
||||
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ if (activity) {
|
||||
+ activity->instance = (void*)this;
|
||||
+ activity->callbacks->onStart = onStartCallback;
|
||||
+ activity->callbacks->onResume = onResumeCallback;
|
||||
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||||
+ activity->callbacks->onPause = onPauseCallback;
|
||||
+ activity->callbacks->onStop = onStopCallback;
|
||||
+ activity->callbacks->onDestroy = onDestroyCallback;
|
||||
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||||
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||||
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||||
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||||
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||||
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||||
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||||
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||||
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||||
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||||
+ }
|
||||
}
|
||||
|
||||
NativeActivity::~NativeActivity (void)
|
||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
index b8a35898c..cf02e6b70 100644
|
||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
||||
@@ -22,6 +22,7 @@
|
||||
*//*--------------------------------------------------------------------*/
|
||||
|
||||
#include "tcuAndroidPlatform.hpp"
|
||||
+#include "tcuAndroidNativeActivity.hpp"
|
||||
#include "tcuAndroidUtil.hpp"
|
||||
#include "gluRenderContext.hpp"
|
||||
#include "egluNativeDisplay.hpp"
|
||||
@@ -170,7 +171,7 @@ eglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams&
|
||||
Window* window = m_windowRegistry.tryAcquireWindow();
|
||||
|
||||
if (!window)
|
||||
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||||
|
||||
return new NativeWindow(window, params.width, params.height, format);
|
||||
}
|
||||
@@ -292,6 +293,9 @@ static size_t getTotalSystemMemory (ANativeActivity* activity)
|
||||
|
||||
try
|
||||
{
|
||||
+ if (!activity)
|
||||
+ throw tcu::InternalError("No activity (running from command line?");
|
||||
+
|
||||
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
||||
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
||||
return totalMemory;
|
||||
@@ -388,3 +392,9 @@ bool Platform::hasDisplay (vk::wsi::Type wsiType) const
|
||||
|
||||
} // Android
|
||||
} // tcu
|
||||
+
|
||||
+tcu::Platform* createPlatform (void)
|
||||
+{
|
||||
+ tcu::Android::NativeActivity activity(NULL);
|
||||
+ return new tcu::Android::Platform(activity);
|
||||
+}
|
||||
--
|
||||
2.42.0
|
||||
|
@@ -1,26 +0,0 @@
|
||||
From a602822c53e22e985f942f843ccadbfb64613212 Mon Sep 17 00:00:00 2001
|
||||
From: Helen Koike <helen.koike@collabora.com>
|
||||
Date: Tue, 27 Sep 2022 12:35:22 -0300
|
||||
Subject: [PATCH 2/2] Android prints to stdout instead of logcat
|
||||
|
||||
Signed-off-by: Helen Koike <helen.koike@collabora.com>
|
||||
---
|
||||
framework/qphelper/qpDebugOut.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/framework/qphelper/qpDebugOut.c b/framework/qphelper/qpDebugOut.c
|
||||
index 6579e9f48..c200c6f6b 100644
|
||||
--- a/framework/qphelper/qpDebugOut.c
|
||||
+++ b/framework/qphelper/qpDebugOut.c
|
||||
@@ -98,7 +98,7 @@ void qpDiev (const char* format, va_list args)
|
||||
}
|
||||
|
||||
/* print() implementation. */
|
||||
-#if (DE_OS == DE_OS_ANDROID)
|
||||
+#if (0)
|
||||
|
||||
#include <android/log.h>
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@@ -1,29 +0,0 @@
|
||||
From 7c9aa6f846f9f2f0d70b5c4a8e7c99a3d31b3b1a Mon Sep 17 00:00:00 2001
|
||||
From: Rob Clark <robdclark@chromium.org>
|
||||
Date: Sat, 27 Jan 2024 10:59:00 -0800
|
||||
Subject: [PATCH] Add missing subgroup support checks for linear derivate tests
|
||||
|
||||
Some of these tests require subgroup ops support, but didn't bother
|
||||
checking whether they were supported. Add this missing checks.
|
||||
---
|
||||
.../vulkan/shaderrender/vktShaderRenderDerivateTests.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
index 3253505958..709044f2e8 100644
|
||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
@@ -1145,6 +1145,13 @@ LinearDerivateCase::~LinearDerivateCase (void)
|
||||
TestInstance* LinearDerivateCase::createInstance (Context& context) const
|
||||
{
|
||||
DE_ASSERT(m_uniformSetup != DE_NULL);
|
||||
+ if (m_fragmentTmpl.find("gl_SubgroupInvocationID") != std::string::npos) {
|
||||
+ if (!subgroups::areQuadOperationsSupportedForStages(context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
||||
+ throw tcu::NotSupportedError("test requires VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
+
|
||||
+ if (subgroups::getSubgroupSize(context) < 4)
|
||||
+ throw tcu::NotSupportedError("test requires subgroupSize >= 4");
|
||||
+ }
|
||||
return new LinearDerivateCaseInstance(context, *m_uniformSetup, m_definitions, m_values);
|
||||
}
|
||||
|
@@ -1,26 +0,0 @@
|
||||
From a602822c53e22e985f942f843ccadbfb64613212 Mon Sep 17 00:00:00 2001
|
||||
From: Helen Koike <helen.koike@collabora.com>
|
||||
Date: Tue, 27 Sep 2022 12:35:22 -0300
|
||||
Subject: [PATCH 2/2] Android prints to stdout instead of logcat
|
||||
|
||||
Signed-off-by: Helen Koike <helen.koike@collabora.com>
|
||||
---
|
||||
framework/qphelper/qpDebugOut.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/framework/qphelper/qpDebugOut.c b/framework/qphelper/qpDebugOut.c
|
||||
index 6579e9f48..c200c6f6b 100644
|
||||
--- a/framework/qphelper/qpDebugOut.c
|
||||
+++ b/framework/qphelper/qpDebugOut.c
|
||||
@@ -98,7 +98,7 @@ void qpDiev (const char* format, va_list args)
|
||||
}
|
||||
|
||||
/* print() implementation. */
|
||||
-#if (DE_OS == DE_OS_ANDROID)
|
||||
+#if (0)
|
||||
|
||||
#include <android/log.h>
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@@ -1,56 +0,0 @@
|
||||
From ed3794c975d284a5453ae33ae59dd1541a9eb804 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Clark <robdclark@chromium.org>
|
||||
Date: Sat, 27 Jan 2024 10:57:28 -0800
|
||||
Subject: [PATCH] Use subgroups helper in derivate tests
|
||||
|
||||
For the tests that need subgroup ops, use the existing subgroups helper,
|
||||
rather than open-coding the same checks.
|
||||
---
|
||||
.../vktShaderRenderDerivateTests.cpp | 23 ++++---------------
|
||||
1 file changed, 5 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
index a8bb5a3ba7..3253505958 100644
|
||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include "vktShaderRenderDerivateTests.hpp"
|
||||
#include "vktShaderRender.hpp"
|
||||
+#include "subgroups/vktSubgroupsTestsUtils.hpp"
|
||||
#include "vkImageUtil.hpp"
|
||||
#include "vkQueryUtil.hpp"
|
||||
|
||||
@@ -707,28 +708,14 @@ tcu::TestStatus TriangleDerivateCaseInstance::iterate (void)
|
||||
{
|
||||
const std::string errorPrefix = m_definitions.inNonUniformControlFlow ? "Derivatives in dynamic control flow" :
|
||||
"Manual derivatives with subgroup operations";
|
||||
- if (!m_context.contextSupports(vk::ApiVersion(0, 1, 1, 0)))
|
||||
- throw tcu::NotSupportedError(errorPrefix + " require Vulkan 1.1");
|
||||
-
|
||||
- vk::VkPhysicalDeviceSubgroupProperties subgroupProperties;
|
||||
- deMemset(&subgroupProperties, 0, sizeof(subgroupProperties));
|
||||
- subgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
|
||||
-
|
||||
- vk::VkPhysicalDeviceProperties2 properties2;
|
||||
- deMemset(&properties2, 0, sizeof(properties2));
|
||||
- properties2.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
||||
- properties2.pNext = &subgroupProperties;
|
||||
-
|
||||
- m_context.getInstanceInterface().getPhysicalDeviceProperties2(m_context.getPhysicalDevice(), &properties2);
|
||||
+ if (!subgroups::areQuadOperationsSupportedForStages(m_context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
||||
+ throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
|
||||
- if (subgroupProperties.subgroupSize < 4)
|
||||
+ if (subgroups::getSubgroupSize(m_context) < 4)
|
||||
throw tcu::NotSupportedError(errorPrefix + " require subgroupSize >= 4");
|
||||
|
||||
- if ((subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT) == 0)
|
||||
+ if (!subgroups::isSubgroupFeatureSupportedForDevice(m_context, VK_SUBGROUP_FEATURE_BALLOT_BIT))
|
||||
throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_BALLOT_BIT");
|
||||
-
|
||||
- if (isSubgroupFunc(m_definitions.func) && (subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_QUAD_BIT) == 0)
|
||||
- throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
||||
}
|
||||
|
||||
setup();
|
@@ -48,7 +48,7 @@ $ADB shell setenforce 0
|
||||
# deqp
|
||||
|
||||
$ADB push /deqp/modules/egl/deqp-egl-android /data/.
|
||||
$ADB push /deqp/assets/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-main.txt /data/
|
||||
$ADB push /deqp/assets/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt /data/.
|
||||
$ADB push /deqp-runner/deqp-runner /data/.
|
||||
|
||||
# download Android Mesa from S3
|
||||
|
@@ -46,6 +46,7 @@ if [ -z "$DEQP_SUITE" ]; then
|
||||
DEQP_WIDTH=${DEQP_WIDTH:-256}
|
||||
DEQP_HEIGHT=${DEQP_HEIGHT:-256}
|
||||
DEQP_CONFIG=${DEQP_CONFIG:-rgba8888d24s8ms0}
|
||||
DEQP_VARIANT=${DEQP_VARIANT:-master}
|
||||
|
||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-width=$DEQP_WIDTH --deqp-surface-height=$DEQP_HEIGHT"
|
||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=${DEQP_SURFACE_TYPE:-pbuffer}"
|
||||
@@ -59,16 +60,16 @@ if [ -z "$DEQP_SUITE" ]; then
|
||||
|
||||
# Generate test case list file.
|
||||
if [ "$DEQP_VER" = "vk" ]; then
|
||||
MUSTPASS=/deqp/mustpass/vk-master.txt
|
||||
MUSTPASS=/deqp/mustpass/vk-$DEQP_VARIANT.txt
|
||||
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
|
||||
elif [ "$DEQP_VER" = "gles2" ] || [ "$DEQP_VER" = "gles3" ] || [ "$DEQP_VER" = "gles31" ] || [ "$DEQP_VER" = "egl" ]; then
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
|
||||
elif [ "$DEQP_VER" = "gles2-khr" ] || [ "$DEQP_VER" = "gles3-khr" ] || [ "$DEQP_VER" = "gles31-khr" ] || [ "$DEQP_VER" = "gles32-khr" ]; then
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||
DEQP=/deqp/external/openglcts/modules/glcts
|
||||
else
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||
DEQP=/deqp/external/openglcts/modules/glcts
|
||||
fi
|
||||
|
||||
@@ -168,13 +169,7 @@ fi
|
||||
|
||||
uncollapsed_section_switch deqp "deqp: deqp-runner"
|
||||
|
||||
# Print the detailed version with the list of backports and local patches
|
||||
for api in vk gl; do
|
||||
deqp_version_log=/deqp/version-$api
|
||||
if [ -r "$deqp_version_log" ]; then
|
||||
cat "$deqp_version_log"
|
||||
fi
|
||||
done
|
||||
cat /deqp/version-log
|
||||
|
||||
set +e
|
||||
if [ -z "$DEQP_SUITE" ]; then
|
||||
|
@@ -1,22 +1,16 @@
|
||||
# Keep the tags below under 20 chars each, as they end up combined into
|
||||
# Keep the tags below under 25-30 chars each, as they end up combined into
|
||||
# docker image tags, and docker has a length limit of 128 chars total in tags.
|
||||
#
|
||||
# The word after the date doesn't need to be overly descriptive, it exists
|
||||
# purely to avoid the risk of two people updating an image tag on the same day
|
||||
# while working on different changes, so it doesn't matter whether that word
|
||||
# will make sense to someone else. Aim for "nobody else will pick that word
|
||||
# for their change".
|
||||
#
|
||||
# If you update a tag and you get an error like this:
|
||||
# cannot parse input: "$image:$tag": invalid reference format
|
||||
# check the length of $tag; if it's > 128 chars you need to shorten your tag.
|
||||
|
||||
variables:
|
||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
||||
DEBIAN_BASE_TAG: "20240307-virglcrosvm"
|
||||
DEBIAN_BASE_TAG: "2024-01-14-runner24"
|
||||
|
||||
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
||||
DEBIAN_BUILD_TAG: "20240301-mold"
|
||||
DEBIAN_BUILD_TAG: "2024-01-04-find"
|
||||
|
||||
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
||||
|
||||
@@ -24,23 +18,23 @@ variables:
|
||||
DEBIAN_X86_64_TEST_IMAGE_VK_PATH: "debian/x86_64_test-vk"
|
||||
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
||||
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG: "20240311-runner"
|
||||
DEBIAN_X86_64_TEST_GL_TAG: "20240313-ninetests"
|
||||
DEBIAN_X86_64_TEST_VK_TAG: "20240317-direct_drm"
|
||||
KERNEL_ROOTFS_TAG: "20240317-direct_drm"
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG: "2024-01-14-runner24"
|
||||
DEBIAN_X86_64_TEST_GL_TAG: "2024-01-14-check24"
|
||||
DEBIAN_X86_64_TEST_VK_TAG: "2024-01-14-check24"
|
||||
|
||||
ALPINE_X86_64_BUILD_TAG: "20240208-libclc-5"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20230626-v1"
|
||||
FEDORA_X86_64_BUILD_TAG: "20240301-mold"
|
||||
KERNEL_TAG: "v6.6.21-mesa-19fc"
|
||||
ALPINE_X86_64_BUILD_TAG: "2023-01-07-libdrm2_4_119"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "2023-06-26-first-version"
|
||||
FEDORA_X86_64_BUILD_TAG: "2024-01-06-libdrm"
|
||||
KERNEL_ROOTFS_TAG: "2024-01-14-runner24"
|
||||
KERNEL_TAG: "v6.6.4-for-mesa-ci-e4f4c500f7fb"
|
||||
KERNEL_REPO: "gfx-ci/linux"
|
||||
PKG_REPO_REV: "3cc12a2a"
|
||||
PKG_REPO_REV: "67f2c46b"
|
||||
|
||||
WINDOWS_X64_MSVC_PATH: "windows/x86_64_msvc"
|
||||
WINDOWS_X64_MSVC_TAG: "20231222-msvc"
|
||||
WINDOWS_X64_MSVC_TAG: "2023-12-22-msvc"
|
||||
|
||||
WINDOWS_X64_BUILD_PATH: "windows/x86_64_build"
|
||||
WINDOWS_X64_BUILD_TAG: "20240117-vulkan-sdk"
|
||||
WINDOWS_X64_BUILD_TAG: "2023-12-22-msvc"
|
||||
|
||||
WINDOWS_X64_TEST_PATH: "windows/x86_64_test"
|
||||
WINDOWS_X64_TEST_TAG: "20240117-vulkan-sdk"
|
||||
WINDOWS_X64_TEST_TAG: "2023-12-22-msvc"
|
||||
|
@@ -12,14 +12,3 @@ JOB_PRIORITY = int(getenv("JOB_PRIORITY", 75))
|
||||
# Use UART over the default SSH mechanism to follow logs.
|
||||
# Caution: this can lead to device silence in some devices in Mesa CI.
|
||||
FORCE_UART = bool(getenv("LAVA_FORCE_UART", False))
|
||||
|
||||
# How many times the r8152 error may happen to consider it a known issue.
|
||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER: int = 10
|
||||
KNOWN_ISSUE_R8152_PATTERNS: tuple[str, ...] = (
|
||||
r"r8152 \S+ eth0: Tx status -71",
|
||||
r"nfs: server \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} not responding, still trying",
|
||||
)
|
||||
|
||||
# This is considered noise, since LAVA produces this log after receiving a package of feedback
|
||||
# messages.
|
||||
LOG_DEBUG_FEEDBACK_NOISE = "Listened to connection for namespace 'dut' done"
|
||||
|
@@ -2,78 +2,42 @@ from __future__ import annotations
|
||||
|
||||
import re
|
||||
from dataclasses import dataclass, field
|
||||
from typing import TYPE_CHECKING, Any, Sequence
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from lava.utils import LogFollower
|
||||
|
||||
from lava.exceptions import MesaCIKnownIssueException
|
||||
from lava.utils.console_format import CONSOLE_LOG
|
||||
from lava.utils.constants import (
|
||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER,
|
||||
LOG_DEBUG_FEEDBACK_NOISE,
|
||||
KNOWN_ISSUE_R8152_PATTERNS,
|
||||
)
|
||||
from lava.utils.log_section import LogSectionType
|
||||
|
||||
|
||||
def search_known_issue_patterns(patterns: Sequence[str], line: str) -> str:
|
||||
for pattern in patterns:
|
||||
if re.search(pattern, line):
|
||||
return pattern
|
||||
return ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class LAVALogHints:
|
||||
log_follower: LogFollower
|
||||
r8152_issue_consecutive_counter: int = field(default=0, init=False)
|
||||
reboot_counter: int = field(default=0, init=False)
|
||||
|
||||
def raise_known_issue(self, message) -> None:
|
||||
raise MesaCIKnownIssueException(
|
||||
"Found known issue: "
|
||||
f"{CONSOLE_LOG['FG_MAGENTA']}"
|
||||
f"{message}"
|
||||
f"{CONSOLE_LOG['RESET']}"
|
||||
)
|
||||
has_r8152_issue_history: bool = field(default=False, init=False)
|
||||
|
||||
def detect_failure(self, new_lines: list[dict[str, Any]]):
|
||||
for line in new_lines:
|
||||
if line["msg"] == LOG_DEBUG_FEEDBACK_NOISE:
|
||||
continue
|
||||
self.detect_r8152_issue(line)
|
||||
self.detect_forced_reboot(line)
|
||||
|
||||
def detect_r8152_issue(self, line):
|
||||
if self.log_follower.phase in (
|
||||
LogSectionType.LAVA_BOOT,
|
||||
LogSectionType.TEST_CASE,
|
||||
) and line["lvl"] in ("feedback", "target"):
|
||||
if search_known_issue_patterns(KNOWN_ISSUE_R8152_PATTERNS, line["msg"]):
|
||||
if (
|
||||
self.r8152_issue_consecutive_counter
|
||||
< KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER
|
||||
):
|
||||
self.r8152_issue_consecutive_counter += 1
|
||||
return
|
||||
|
||||
self.raise_known_issue(
|
||||
"Probable network issue failure encountered, retrying the job"
|
||||
)
|
||||
|
||||
# Reset the status, as the `nfs... still trying` complaint was not detected
|
||||
self.r8152_issue_consecutive_counter = 0
|
||||
|
||||
def detect_forced_reboot(self, line: dict[str, Any]) -> None:
|
||||
if (
|
||||
self.log_follower.phase == LogSectionType.TEST_CASE
|
||||
and line["lvl"] == "feedback"
|
||||
and line["lvl"] == "target"
|
||||
):
|
||||
if re.search(r"^Reboot requested", line["msg"]):
|
||||
self.reboot_counter += 1
|
||||
if re.search(r"r8152 \S+ eth0: Tx status -71", line["msg"]):
|
||||
self.has_r8152_issue_history = True
|
||||
return
|
||||
|
||||
if self.reboot_counter > 0:
|
||||
self.raise_known_issue(
|
||||
"Forced reboot detected during test phase, failing the job..."
|
||||
)
|
||||
if self.has_r8152_issue_history and re.search(
|
||||
r"nfs: server \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} not responding, still trying",
|
||||
line["msg"],
|
||||
):
|
||||
raise MesaCIKnownIssueException(
|
||||
f"{CONSOLE_LOG['FG_MAGENTA']}"
|
||||
"Probable network issue failure encountered, retrying the job"
|
||||
f"{CONSOLE_LOG['RESET']}"
|
||||
)
|
||||
|
||||
self.has_r8152_issue_history = False
|
||||
|
@@ -187,25 +187,6 @@ class LogFollower:
|
||||
|
||||
return False
|
||||
|
||||
def ignore_dut_feedback_lines(self, line: dict[str, str]) -> bool:
|
||||
"""
|
||||
Ignores feedback lines from LAVA.
|
||||
If we only receive this level of message for some time, it means that the job is
|
||||
misbehaving. E.g Rebooting.
|
||||
|
||||
Args:
|
||||
line: A dictionary representing a single log line.
|
||||
|
||||
Returns:
|
||||
A boolean indicating whether the current line is a feedback line.
|
||||
"""
|
||||
if line["lvl"] == "feedback" and line["ns"] == "dut":
|
||||
return True
|
||||
if line["lvl"] == "debug":
|
||||
# This message happens after LAVA end receiving the feedback from the DUT
|
||||
if line["msg"] == "Listened to connection for namespace 'dut' done":
|
||||
return True
|
||||
return False
|
||||
|
||||
def feed(self, new_lines: list[dict[str, str]]) -> bool:
|
||||
"""Input data to be processed by LogFollower instance
|
||||
@@ -226,9 +207,6 @@ class LogFollower:
|
||||
if self.merge_carriage_return_lines(line):
|
||||
continue
|
||||
|
||||
if self.ignore_dut_feedback_lines(line):
|
||||
continue
|
||||
|
||||
# At least we are fed with a non-kernel dump log, it seems that the
|
||||
# job is progressing
|
||||
is_job_healthy = True
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# shellcheck disable=SC1003 # works for us now...
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
section_switch meson-cross-file "meson: cross file generate"
|
||||
section_switch meson-configure "meson: configure"
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
@@ -49,38 +49,6 @@ if [ -n "$CROSS" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$HOST_BUILD_OPTIONS" ]; then
|
||||
section_switch meson-host-configure "meson: host configure"
|
||||
|
||||
# Stash the PKG_CONFIG_LIBDIR so that we can use the base x86_64 image
|
||||
# libraries.
|
||||
tmp_pkg_config_libdir=$PKG_CONFIG_LIBDIR
|
||||
unset PKG_CONFIG_LIBDIR
|
||||
|
||||
# Compile a host version for the few tools we need for a cross build (for
|
||||
# now just intel-clc)
|
||||
rm -rf _host_build
|
||||
meson setup _host_build \
|
||||
--native-file=native.file \
|
||||
-D prefix=/usr \
|
||||
-D libdir=lib \
|
||||
${HOST_BUILD_OPTIONS}
|
||||
|
||||
pushd _host_build
|
||||
|
||||
section_switch meson-host-build "meson: host build"
|
||||
|
||||
meson configure
|
||||
ninja
|
||||
ninja install
|
||||
popd
|
||||
|
||||
# Restore PKG_CONFIG_LIBDIR
|
||||
if [ -n "$tmp_pkg_config_libdir" ]; then
|
||||
export PKG_CONFIG_LIBDIR=$tmp_pkg_config_libdir
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only use GNU time if available, not any shell built-in command
|
||||
case $CI_JOB_NAME in
|
||||
# ASAN leak detection is incompatible with strace
|
||||
@@ -98,8 +66,6 @@ case $CI_JOB_NAME in
|
||||
;;
|
||||
esac
|
||||
|
||||
section_switch meson-configure "meson: configure"
|
||||
|
||||
rm -rf _build
|
||||
meson setup _build \
|
||||
--native-file=native.file \
|
||||
|
@@ -15,10 +15,6 @@ mkdir -p "$RESULTS"
|
||||
|
||||
export PIGLIT_REPLAY_DESCRIPTION_FILE="$INSTALL/$PIGLIT_TRACES_FILE"
|
||||
|
||||
# FIXME: guess why /usr/local/bin is not included in all runners PATH.
|
||||
# Needed because yq and ci-fairy are installed there.
|
||||
PATH="/usr/local/bin:$PATH"
|
||||
|
||||
if [ "$PIGLIT_REPLAY_SUBCOMMAND" = "profile" ]; then
|
||||
yq -iY 'del(.traces[][] | select(.label[]? == "no-perf"))' \
|
||||
"$PIGLIT_REPLAY_DESCRIPTION_FILE"
|
||||
|
@@ -238,3 +238,25 @@
|
||||
- changes: *rust_file_list
|
||||
when: on_success
|
||||
allow_failure: true
|
||||
|
||||
.lint-clang-format-rules:
|
||||
rules:
|
||||
- !reference [.never-post-merge-rules, rules]
|
||||
- !reference [.core-rules, rules]
|
||||
# in merge pipeline, formatting checks are not allowed to fail
|
||||
- if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
changes: &clang_format_file_list
|
||||
- .clang-format
|
||||
- .clang-format-include
|
||||
- .clang-format-ignore
|
||||
- src/**/.clang-format
|
||||
- src/egl/**/*
|
||||
- src/amd/vulkan/**/*
|
||||
- src/amd/compiler/**/*
|
||||
- src/etnaviv/isa/**/*
|
||||
when: on_success
|
||||
allow_failure: false
|
||||
# in other pipelines, formatting checks are allowed to fail
|
||||
- changes: *clang_format_file_list
|
||||
when: on_success
|
||||
allow_failure: true
|
||||
|
@@ -43,6 +43,20 @@ rustfmt:
|
||||
- rustfmt --verbose src/**/lib.rs
|
||||
- rustfmt --verbose src/**/main.rs
|
||||
|
||||
.clang-format:
|
||||
extends:
|
||||
- .formatting-check
|
||||
- .lint-clang-format-rules
|
||||
variables:
|
||||
LLVM_VERSION: 15
|
||||
before_script:
|
||||
- shopt -s globstar
|
||||
# We need a meson build dir, but its config doesn't actually matter, so
|
||||
# let's just use the default.
|
||||
- meson setup build
|
||||
- clang-format-${LLVM_VERSION} --version
|
||||
- ninja -C build clang-format
|
||||
|
||||
.test-check:
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
@@ -171,6 +185,12 @@ python-test:
|
||||
reports:
|
||||
junit: results/junit.xml
|
||||
|
||||
.deqp-test-vk:
|
||||
extends:
|
||||
- .deqp-test
|
||||
variables:
|
||||
DEQP_VER: vk
|
||||
|
||||
.fossilize-test:
|
||||
script:
|
||||
- ./install/fossilize-runner.sh
|
||||
|
@@ -9,9 +9,8 @@ import os
|
||||
import xmlrpc.client
|
||||
from contextlib import nullcontext as does_not_raise
|
||||
from datetime import datetime
|
||||
from itertools import islice, repeat
|
||||
from itertools import chain, repeat
|
||||
from pathlib import Path
|
||||
from typing import Generator
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
@@ -342,15 +341,13 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
||||
if not data_chunk:
|
||||
return
|
||||
|
||||
first_log = lava_yaml.load(data_chunk[0])[0]
|
||||
first_log_time = first_log["dt"]
|
||||
first_log_time = data_chunk[0]["dt"]
|
||||
frozen_time.move_to(first_log_time)
|
||||
yield
|
||||
|
||||
last_log = lava_yaml.load(data_chunk[-1])[0]
|
||||
last_log_time = last_log["dt"]
|
||||
last_log_time = data_chunk[-1]["dt"]
|
||||
frozen_time.move_to(last_log_time)
|
||||
yield
|
||||
return
|
||||
|
||||
def time_travel_to_test_time():
|
||||
# Suppose that the first message timestamp of the entire LAVA job log is
|
||||
@@ -360,31 +357,22 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
||||
first_log_time = lava_yaml.load(first_log)[0]["dt"]
|
||||
frozen_time.move_to(first_log_time)
|
||||
|
||||
def load_lines() -> Generator[tuple[bool, str], None, None]:
|
||||
def load_lines() -> list:
|
||||
with open("/tmp/log.yaml", "r") as f:
|
||||
# data = yaml.safe_load(f)
|
||||
log_lines = f.readlines()
|
||||
serial_message: str = ""
|
||||
chunk_start_line = 0
|
||||
chunk_end_line = 0
|
||||
chunk_max_size = 100
|
||||
data = f.readlines()
|
||||
stream = chain(data)
|
||||
try:
|
||||
while True:
|
||||
chunk_end_line = chunk_start_line + random.randint(1, chunk_max_size)
|
||||
# split the log in chunks of random size
|
||||
log_chunk = list(islice(log_lines, chunk_start_line, chunk_end_line))
|
||||
chunk_start_line = chunk_end_line + 1
|
||||
serial_message = "".join(log_chunk)
|
||||
# time_traveller_gen will make the time trave according to the timestamp from
|
||||
# the message
|
||||
time_traveller_gen = time_travel_from_log_chunk(log_chunk)
|
||||
data_chunk = [next(stream) for _ in range(random.randint(0, 50))]
|
||||
serial_message = "".join(data_chunk)
|
||||
# Suppose that the first message timestamp is the same of
|
||||
# log fetch RPC call
|
||||
next(time_traveller_gen)
|
||||
time_travel_from_log_chunk(data_chunk)
|
||||
yield False, "[]"
|
||||
# Travel to the same datetime of the last fetched log line
|
||||
# in the chunk
|
||||
next(time_traveller_gen)
|
||||
time_travel_from_log_chunk(data_chunk)
|
||||
yield False, serial_message
|
||||
except StopIteration:
|
||||
yield True, serial_message
|
||||
@@ -396,20 +384,11 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
||||
proxy.scheduler.jobs.logs.side_effect = load_lines()
|
||||
|
||||
proxy.scheduler.jobs.submit = reset_logs
|
||||
try:
|
||||
with pytest.raises(MesaCIRetryError):
|
||||
time_travel_to_test_time()
|
||||
start_time = datetime.now()
|
||||
lava_job_submitter.submit()
|
||||
retriable_follow_job(proxy, "")
|
||||
finally:
|
||||
try:
|
||||
# If the job fails, maybe there will be no structured log
|
||||
print(lava_job_submitter.structured_log_file.read_text())
|
||||
finally:
|
||||
end_time = datetime.now()
|
||||
print("---- Reproduction log stats ----")
|
||||
print(f"Start time: {start_time}")
|
||||
print(f"End time: {end_time}")
|
||||
print(f"Duration: {end_time - start_time}")
|
||||
print(lava_job_submitter.structured_log_file.read_text())
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@@ -16,15 +16,8 @@ from lava.utils import (
|
||||
fix_lava_gitlab_section_log,
|
||||
hide_sensitive_data,
|
||||
)
|
||||
from lava.utils.constants import KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER
|
||||
|
||||
from ..lava.helpers import (
|
||||
create_lava_yaml_msg,
|
||||
does_not_raise,
|
||||
lava_yaml,
|
||||
mock_lava_signal,
|
||||
yaml_dump,
|
||||
)
|
||||
from ..lava.helpers import create_lava_yaml_msg, does_not_raise, lava_yaml, yaml_dump
|
||||
|
||||
GITLAB_SECTION_SCENARIOS = {
|
||||
"start collapsed": (
|
||||
@@ -318,56 +311,47 @@ def test_gitlab_section_id(case_name, expected_id):
|
||||
assert gl.id == expected_id
|
||||
|
||||
|
||||
def a618_network_issue_logs(level: str = "target") -> list:
|
||||
net_error = create_lava_yaml_msg(
|
||||
msg="[ 1733.599402] r8152 2-1.3:1.0 eth0: Tx status -71", lvl=level)
|
||||
|
||||
nfs_error = create_lava_yaml_msg(
|
||||
msg="[ 1733.604506] nfs: server 192.168.201.1 not responding, still trying",
|
||||
lvl=level,
|
||||
)
|
||||
|
||||
return [
|
||||
*(KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER*[net_error]),
|
||||
nfs_error
|
||||
]
|
||||
|
||||
|
||||
TEST_PHASE_LAVA_SIGNAL = mock_lava_signal(LogSectionType.TEST_CASE)
|
||||
A618_NET_ISSUE_BOOT = a618_network_issue_logs(level="feedback")
|
||||
A618_NET_ISSUE_TEST = [TEST_PHASE_LAVA_SIGNAL, *a618_network_issue_logs(level="target")]
|
||||
A618_NETWORK_ISSUE_LOGS = [
|
||||
create_lava_yaml_msg(
|
||||
msg="[ 1733.599402] r8152 2-1.3:1.0 eth0: Tx status -71", lvl="target"
|
||||
),
|
||||
create_lava_yaml_msg(
|
||||
msg="[ 1733.604506] nfs: server 192.168.201.1 not responding, still trying",
|
||||
lvl="target",
|
||||
),
|
||||
]
|
||||
TEST_PHASE_LAVA_SIGNAL = create_lava_yaml_msg(
|
||||
msg="Received signal: <STARTTC> mesa-ci_a618_vk", lvl="debug"
|
||||
)
|
||||
|
||||
|
||||
A618_NETWORK_ISSUE_SCENARIOS = {
|
||||
"Fail - R8152 kmsg during boot phase": (
|
||||
A618_NET_ISSUE_BOOT,
|
||||
pytest.raises(MesaCIKnownIssueException),
|
||||
),
|
||||
"Pass - R8152 kmsg during boot": (A618_NETWORK_ISSUE_LOGS, does_not_raise()),
|
||||
"Fail - R8152 kmsg during test phase": (
|
||||
A618_NET_ISSUE_TEST,
|
||||
[TEST_PHASE_LAVA_SIGNAL, *A618_NETWORK_ISSUE_LOGS],
|
||||
pytest.raises(MesaCIKnownIssueException),
|
||||
),
|
||||
"Pass - Partial (1) R8152 kmsg during test phase": (
|
||||
A618_NET_ISSUE_TEST[:1],
|
||||
[TEST_PHASE_LAVA_SIGNAL, A618_NETWORK_ISSUE_LOGS[0]],
|
||||
does_not_raise(),
|
||||
),
|
||||
"Pass - Partial (2) R8152 kmsg during test phase": (
|
||||
A618_NET_ISSUE_TEST[:2],
|
||||
[TEST_PHASE_LAVA_SIGNAL, A618_NETWORK_ISSUE_LOGS[1]],
|
||||
does_not_raise(),
|
||||
),
|
||||
"Pass - Partial (3) subsequent R8152 kmsg during test phase": (
|
||||
"Pass - Partial subsequent (3) R8152 kmsg during test phase": (
|
||||
[
|
||||
TEST_PHASE_LAVA_SIGNAL,
|
||||
A618_NET_ISSUE_TEST[1],
|
||||
A618_NET_ISSUE_TEST[1],
|
||||
A618_NETWORK_ISSUE_LOGS[0],
|
||||
A618_NETWORK_ISSUE_LOGS[0],
|
||||
],
|
||||
does_not_raise(),
|
||||
),
|
||||
"Pass - Partial (4) subsequent nfs kmsg during test phase": (
|
||||
"Pass - Partial subsequent (4) R8152 kmsg during test phase": (
|
||||
[
|
||||
TEST_PHASE_LAVA_SIGNAL,
|
||||
A618_NET_ISSUE_TEST[-1],
|
||||
A618_NET_ISSUE_TEST[-1],
|
||||
A618_NETWORK_ISSUE_LOGS[1],
|
||||
A618_NETWORK_ISSUE_LOGS[1],
|
||||
],
|
||||
does_not_raise(),
|
||||
),
|
||||
@@ -380,13 +364,6 @@ A618_NETWORK_ISSUE_SCENARIOS = {
|
||||
ids=A618_NETWORK_ISSUE_SCENARIOS.keys(),
|
||||
)
|
||||
def test_detect_failure(messages, expectation):
|
||||
boot_section = GitlabSection(
|
||||
id="lava_boot",
|
||||
header="LAVA boot",
|
||||
type=LogSectionType.LAVA_BOOT,
|
||||
start_collapsed=True,
|
||||
)
|
||||
boot_section.start()
|
||||
lf = LogFollower(starting_section=boot_section)
|
||||
lf = LogFollower()
|
||||
with expectation:
|
||||
lf.feed(messages)
|
||||
|
@@ -59,6 +59,7 @@ meson setup `
|
||||
-Dopencl-spirv=true `
|
||||
-Dmicrosoft-clc=enabled `
|
||||
-Dstatic-libclc=all `
|
||||
-Dopencl-external-clang-headers=disabled `
|
||||
-Dspirv-to-dxil=true `
|
||||
-Dbuild-tests=true `
|
||||
-Dwerror=true `
|
||||
|
@@ -158,12 +158,12 @@ Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path $llvm_build
|
||||
|
||||
Get-Date
|
||||
Write-Host "Cloning SPIRV-Tools"
|
||||
git clone -b "vulkan-sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Tools deps/SPIRV-Tools
|
||||
git clone -b "sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Tools deps/SPIRV-Tools
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone SPIRV-Tools repository"
|
||||
Exit 1
|
||||
}
|
||||
git clone -b "vulkan-sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Headers deps/SPIRV-Tools/external/SPIRV-Headers
|
||||
git clone -b "sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Headers deps/SPIRV-Tools/external/SPIRV-Headers
|
||||
if (!$?) {
|
||||
Write-Host "Failed to clone SPIRV-Headers repository"
|
||||
Exit 1
|
||||
|
@@ -18,7 +18,7 @@ Remove-Item -Recurse 'C:\agility'
|
||||
|
||||
Write-Host "Downloading Updated WARP at:"
|
||||
Get-Date
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.9 -OutFile 'warp.zip'
|
||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.7.1 -OutFile 'warp.zip'
|
||||
Expand-Archive -Path 'warp.zip' -DestinationPath 'C:\warp'
|
||||
# Copy WARP into mesa-deps\bin
|
||||
Copy-Item 'C:\warp\build\native\amd64\d3d10warp.dll' -Destination $depsInstallPath\bin
|
||||
|
@@ -53,7 +53,7 @@ New-Item -ItemType Directory -Path "$piglit_source" | Out-Null
|
||||
Push-Location -Path $piglit_source
|
||||
git init
|
||||
git remote add origin https://gitlab.freedesktop.org/mesa/piglit.git
|
||||
git fetch --depth 1 origin 814046fe6942eac660ee4a6cc5fcc54011a49945 # of branch main
|
||||
git fetch --depth 1 origin b41accc83689966f91217fc5b57dbe06202b8c8c # of branch main
|
||||
if (!$?) {
|
||||
Write-Host "Failed to fetch Piglit repository"
|
||||
Pop-Location
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# Touch this file needs update both WINDOWS_X64_BUILD_TAG WINDOWS_X64_TEST_TAG
|
||||
# This file needs run in administrator mode
|
||||
|
||||
$env:VULKAN_SDK_VERSION="1.3.275.0"
|
||||
$env:VULKAN_SDK_VERSION="1.3.211.0"
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
|
||||
|
@@ -1,5 +1,4 @@
|
||||
$env:PIGLIT_NO_FAST_SKIP = 1
|
||||
$env:PIGLIT_SPIRV_AS_BINARY = "C:\VulkanSDK\$env:VULKAN_SDK_VERSION\Bin\spirv-as.exe"
|
||||
|
||||
Copy-Item -Path _install\bin\opengl32.dll -Destination C:\Piglit\bin\opengl32.dll
|
||||
Copy-Item -Path _install\bin\libgallium_wgl.dll -Destination C:\Piglit\bin\libgallium_wgl.dll
|
||||
|
@@ -1,279 +0,0 @@
|
||||
# version field is required
|
||||
version: 1
|
||||
project:
|
||||
name: 'mesa'
|
||||
id: 176
|
||||
instance: https://gitlab.freedesktop.org
|
||||
|
||||
issues:
|
||||
topics: &topics
|
||||
'aco': 'ACO'
|
||||
'anv': 'ANV'
|
||||
'asahi': 'asahi'
|
||||
'blorp': 'blorp'
|
||||
'ci': 'CI'
|
||||
'clc': 'OpenCL'
|
||||
'clover': 'clover'
|
||||
'crocus': 'crocus'
|
||||
'd3d12': 'd3d12'
|
||||
'docs': 'docs'
|
||||
'dozen': 'dozen'
|
||||
'drirc': 'drirc'
|
||||
'dzn': 'dozen'
|
||||
'egl': 'EGL'
|
||||
'etnaviv': 'etnaviv'
|
||||
'freedreno': 'freedreno'
|
||||
'freedreno/ir3': ['freedreno', 'ir3']
|
||||
'gallium': 'gallium'
|
||||
'gbm': 'gbm'
|
||||
'gitlab-ci': 'CI'
|
||||
'glsl': 'GLSL'
|
||||
'glvnd': 'GLVND'
|
||||
'glx': 'GLX'
|
||||
'hasvk': 'hasvk'
|
||||
'i915': 'i915'
|
||||
'i965': 'i965'
|
||||
'intel/compiler': 'intel-compiler'
|
||||
'intel/brw': 'intel-brw'
|
||||
'intel/elk': 'intel-elk'
|
||||
'intel/tools': 'intel-tools'
|
||||
'iris': 'iris'
|
||||
'isl': 'ISL'
|
||||
'lima': 'lima'
|
||||
'lima/ppir' : 'lima'
|
||||
'llvmpipe': 'llvmpipe'
|
||||
'mesa' : 'mesa'
|
||||
'meson' : 'meson'
|
||||
'microsoft/compiler': 'd3d12'
|
||||
'nak' : 'NAK'
|
||||
'nine' : 'nine'
|
||||
'nir': 'NIR'
|
||||
'nir2dxil': 'd3d12'
|
||||
'nouveau' : 'nouveau'
|
||||
'nv30' : ['nouveau', 'nv30']
|
||||
'nv50' : ['nouveau', 'nv50']
|
||||
'nv50/ir' : 'nouveau'
|
||||
'nvc0' : ['nouveau', 'nvc0']
|
||||
'nvk' : 'NVK'
|
||||
'panfrost' : 'panfrost'
|
||||
'pan/midgard' : 'panfrost'
|
||||
'pvr' : 'powervr'
|
||||
'r100' : 'r100'
|
||||
'r200' : 'r200'
|
||||
'r300' : 'r300'
|
||||
'r600' : 'r600'
|
||||
'radeonsi' : 'radeonsi'
|
||||
'radv': 'RADV'
|
||||
'radv/aco': ['RADV', 'ACO']
|
||||
'rusticl': 'Rusticl'
|
||||
'softpipe' : 'softpipe'
|
||||
'spirv' : 'SPIR-V'
|
||||
'swr' : 'swr'
|
||||
'swrast' : 'swrast'
|
||||
'tegra' : 'tegra'
|
||||
'tgsi' : 'TGSI'
|
||||
'turnip': 'turnip'
|
||||
'util' : 'util'
|
||||
'v3d': 'v3d'
|
||||
'vaapi' : 'VA-API'
|
||||
'vc4' : 'vc4'
|
||||
'vdpau' : 'VDPAU'
|
||||
'vieux' : 'vieux'
|
||||
'virgl' : 'virgl'
|
||||
'vmwgfx' : 'vmwgfx'
|
||||
'zink': 'zink'
|
||||
|
||||
titles: &titles
|
||||
'android': 'android'
|
||||
'bisected': 'bisected'
|
||||
'coverity': 'coverity'
|
||||
'deqp': 'deqp'
|
||||
'feature request': 'feature_request'
|
||||
'haiku' : 'haiku'
|
||||
'regression': 'regression'
|
||||
|
||||
'i915_dri.so' : 'i915'
|
||||
'i965_dri.so' : 'i965'
|
||||
'iris_dri.so' : 'iris'
|
||||
'nouveau_dri.so' : 'nouveau'
|
||||
'nouveau_vieux_dri.so' : 'vieux'
|
||||
'r200_dri.so' : 'r200'
|
||||
'r300_dri.so' : 'r300'
|
||||
'r600_dri.so' : 'r600'
|
||||
'radeonsi_dri.so' : 'radeonsi'
|
||||
'swrast_dri.so' : 'swrast'
|
||||
'vmwgfx_dri.so' : 'vmwgfx'
|
||||
|
||||
merge_requests:
|
||||
topics:
|
||||
*topics
|
||||
titles:
|
||||
*titles
|
||||
|
||||
paths:
|
||||
'^.gitlab/issue_templates/' : ['docs']
|
||||
'^.gitlab-ci' : ['CI']
|
||||
'^.*/gitlab-ci.yml' : ['CI']
|
||||
'^.*/ci/' : ['CI']
|
||||
'^.gitlab-ci/windows/' : ['Windows']
|
||||
'^bin/__init__.py$' : ['maintainer-scripts']
|
||||
'^bin/gen_release_notes' : ['maintainer-scripts']
|
||||
'^bin/git_sha1_gen.py$' : ['meson', 'android']
|
||||
'^bin/install_megadrivers.py$' : ['meson']
|
||||
'^bin/meson-cmd-extract.py$' : ['meson']
|
||||
'^bin/meson.build$' : ['meson']
|
||||
'^bin/pick-ui' : ['maintainer-scripts']
|
||||
'^bin/pick/' : ['maintainer-scripts']
|
||||
'^bin/post_version' : ['maintainer-scripts']
|
||||
'^bin/symbols-check.py$' : ['meson']
|
||||
'^docs/' : ['docs']
|
||||
'^include/drm-uapi/i915_drm.h' : ['intel']
|
||||
'^include/drm-uapi/xe_drm.h' : ['intel']
|
||||
'^include/vulkan/' : ['vulkan']
|
||||
'^meson_options.txt' : ['meson']
|
||||
'^README.rst' : ['docs']
|
||||
'^src/amd/addrlib/' : ['AMD common']
|
||||
'^src/amd/common/' : ['AMD common']
|
||||
'^src/amd/compiler/' : ['ACO']
|
||||
'^src/amd/llvm/' : ['AMD common']
|
||||
'^src/amd/registers/' : ['AMD common']
|
||||
'^src/amd/vulkan/' : ['RADV']
|
||||
'^src/asahi/' : ['asahi']
|
||||
'^src/broadcom/drm-shim/v3d' : ['v3d']
|
||||
'^src/broadcom/vulkan/' : ['v3dv']
|
||||
'^src/compiler/clc' : ['OpenCL']
|
||||
'^src/compiler/glsl' : ['GLSL']
|
||||
'^src/compiler/nir' : ['NIR']
|
||||
'^src/compiler/spirv/' : ['SPIR-V']
|
||||
'^src/egl/' : ['EGL']
|
||||
'^src/egl/drivers/wgl/' : ['wgl']
|
||||
'^src/etnaviv/' : ['etnaviv']
|
||||
'^src/freedreno/' : ['freedreno']
|
||||
'^src/freedreno/ir3/' : ['ir3']
|
||||
'^src/freedreno/vulkan/' : ['turnip']
|
||||
'^src/gallium/auxiliary/' : ['gallium']
|
||||
'^src/gallium/auxiliary/nir/' : ['NIR']
|
||||
'^src/gallium/auxiliary/nir/.*tgsi.*' : ['TGSI']
|
||||
'^src/gallium/auxiliary/tgsi/' : ['TGSI']
|
||||
'^src/gallium/docs/' : ['gallium']
|
||||
'^src/gallium/drivers/asahi/' : ['asahi']
|
||||
'^src/gallium/drivers/crocus/' : ['crocus']
|
||||
'^src/gallium/drivers/d3d12/' : ['d3d12']
|
||||
'^src/gallium/drivers/etnaviv/' : ['etnaviv']
|
||||
'^src/gallium/drivers/freedreno/' : ['freedreno']
|
||||
'^src/gallium/drivers/grate/' : ['tegra']
|
||||
'^src/gallium/drivers/i915/' : ['i915g']
|
||||
'^src/gallium/drivers/iris/' : ['iris']
|
||||
'^src/gallium/drivers/lima/' : ['lima']
|
||||
'^src/gallium/drivers/llvmpipe/' : ['llvmpipe']
|
||||
'^src/gallium/drivers/nouveau/' : ['nouveau']
|
||||
'^src/gallium/drivers/nouveau/nv30' : ['nv30']
|
||||
'^src/gallium/drivers/nouveau/nv50' : ['nv50']
|
||||
'^src/gallium/drivers/nouveau/nvc0' : ['nvc0']
|
||||
'^src/gallium/drivers/panfrost/' : ['panfrost']
|
||||
'^src/gallium/drivers/r300/' : ['r300']
|
||||
'^src/gallium/drivers/r600/' : ['r600']
|
||||
'^src/gallium/drivers/radeonsi' : ['radeonsi']
|
||||
'^src/gallium/drivers/softpipe' : ['softpipe']
|
||||
'^src/gallium/drivers/svga/' : ['svga']
|
||||
'^src/gallium/drivers/swr/' : ['swr']
|
||||
'^src/gallium/drivers/tegra/' : ['tegra']
|
||||
'^src/gallium/drivers/v3d/' : ['v3d']
|
||||
'^src/gallium/drivers/vc4/' : ['vc4']
|
||||
'^src/gallium/drivers/virgl/' : ['virgl']
|
||||
'^src/gallium/drivers/zink/' : ['zink']
|
||||
'^src/gallium/frontends/clover/' : ['clover']
|
||||
'^src/gallium/frontends/dri/' : ['gallium']
|
||||
'^src/gallium/frontends/glx/' : ['GLX']
|
||||
'^src/gallium/frontends/hgl/' : ['haiku']
|
||||
'^src/gallium/frontends/lavapipe/' : ['lavapipe']
|
||||
'^src/gallium/frontends/nine/' : ['nine']
|
||||
'^src/gallium/frontends/omx/' : ['omx']
|
||||
'^src/gallium/frontends/osmesa/' : ['osmesa']
|
||||
'^src/gallium/frontends/rusticl/' : ['Rusticl']
|
||||
'^src/gallium/frontends/va/' : ['VA-API']
|
||||
'^src/gallium/frontends/vdpau/' : ['VDPAU']
|
||||
'^src/gallium/frontends/wgl/' : ['wgl']
|
||||
# '^src/gallium/frontends/xa/' : ['']
|
||||
'^src/gallium/include/' : ['gallium']
|
||||
'^src/gallium/targets/' : ['gallium']
|
||||
'^src/gallium/targets/opencl/' : ['clover']
|
||||
'^src/gallium/targets/osmesa/' : ['osmesa']
|
||||
'^src/gallium/targets/rusticl/' : ['Rusticl']
|
||||
'^src/gallium/tests/' : ['gallium']
|
||||
'^src/gallium/tools/' : ['gallium']
|
||||
# '^src/gallium/winsys/amdgpu/' : ['']
|
||||
'^src/gallium/winsys/crocus/' : ['crocus']
|
||||
'^src/gallium/winsys/d3d12/' : ['d3d12']
|
||||
'^src/gallium/winsys/etnaviv/' : ['etnaviv']
|
||||
'^src/gallium/winsys/freedreno/' : ['freedreno']
|
||||
'^src/gallium/winsys/grate/' : ['tegra']
|
||||
'^src/gallium/winsys/i915/' : ['i915g']
|
||||
'^src/gallium/winsys/iris/' : ['iris']
|
||||
# '^src/gallium/winsys/kmsro/' : ['']
|
||||
'^src/gallium/winsys/lima/' : ['lima']
|
||||
'^src/gallium/winsys/nouveau/' : ['nouveau']
|
||||
'^src/gallium/winsys/panfrost/' : ['panfrost']
|
||||
# '^src/gallium/winsys/radeon/' : ['radeon']
|
||||
'^src/gallium/winsys/svga/' : ['svga']
|
||||
# '^src/gallium/winsys/sw/' : ['']
|
||||
'^src/gallium/winsys/sw/gdi/' : ['wgl']
|
||||
'^src/gallium/winsys/tegra/' : ['tegra']
|
||||
'^src/gallium/winsys/v3d/' : ['v3d']
|
||||
'^src/gallium/winsys/vc4/' : ['vc4']
|
||||
'^src/gallium/winsys/virgl/' : ['virgl']
|
||||
'^src/gbm/' : ['gbm']
|
||||
'^src/glx/' : ['GLX']
|
||||
'^src/imagination/' : ['powervr']
|
||||
'^src/intel/blorp/' : ['blorp']
|
||||
'^src/intel/common/' : ['intel']
|
||||
'^src/intel/compiler/' : ['intel-compiler']
|
||||
'^src/intel/compiler/brw' : ['intel-brw']
|
||||
'^src/intel/compiler/elk' : ['intel-elk']
|
||||
'^src/intel/dev/' : ['intel']
|
||||
'^src/intel/ds/' : ['intel']
|
||||
'^src/intel/genxml/' : ['intel']
|
||||
'^src/intel/isl/' : ['ISL']
|
||||
'^src/intel/nullhw-layer/' : ['intel']
|
||||
'^src/intel/perf/' : ['intel']
|
||||
'^src/intel/tools/' : ['intel-tools']
|
||||
'^src/intel/vulkan/' : ['ANV']
|
||||
'^src/intel/vulkan_hasvk/' : ['hasvk']
|
||||
'^src/loader/' : ['loader']
|
||||
'^src/mapi/' : ['mapi']
|
||||
'^src/mesa/drivers/dri/i915/' : ['i915']
|
||||
'^src/mesa/drivers/dri/i965/' : ['i965']
|
||||
'^src/mesa/drivers/dri/nouveau/' : ['vieux']
|
||||
'^src/mesa/drivers/dri/r200/' : ['r200']
|
||||
'^src/mesa/drivers/dri/radeon/' : ['radeon']
|
||||
'^src/mesa/drivers/dri/swrast/' : ['swrast']
|
||||
'^src/mesa/drivers/osmesa' : ['osmesa']
|
||||
'^src/mesa/main/' : ['mesa']
|
||||
'^src/mesa/state_tracker/.*glsl.*' : ['GLSL']
|
||||
'^src/mesa/state_tracker/.*tgsi.*' : ['TGSI']
|
||||
'^src/mesa/state_tracker/.*nir.*' : ['NIR']
|
||||
'^src/microsoft/clc/' : ['d3d12']
|
||||
'^src/microsoft/compiler/' : ['d3d12']
|
||||
'^src/microsoft/spirv_to_dxil/' : ['dozen']
|
||||
'^src/microsoft/vulkan/' : ['dozen']
|
||||
'^src/nouveau/codegen/' : ['nouveau']
|
||||
'^src/nouveau/compiler/' : ['NAK']
|
||||
'^src/nouveau/drm-shim/' : ['nouveau']
|
||||
'^src/nouveau/mme/' : ['NVK']
|
||||
'^src/nouveau/nil/' : ['NVK']
|
||||
'^src/nouveau/nvidia-headers/' : ['NVK']
|
||||
'^src/nouveau/vulkan/' : ['NVK']
|
||||
'^src/nouveau/winsys/' : ['NVK']
|
||||
'^src/panfrost/' : ['panfrost']
|
||||
'^src/virtio/vulkan/' : ['venus']
|
||||
'^src/virtio/venus-protocol/' : ['venus']
|
||||
'^src/virtio/ci/' : ['venus']
|
||||
'^src/util/' : ['util']
|
||||
'^src/util/00-mesa-defaults.conf' : ['drirc']
|
||||
'^src/vulkan/' : ['vulkan']
|
||||
'^VERSION$' : ['maintainer-scripts']
|
||||
|
||||
'Android' : ['android']
|
||||
'EGL' : ['EGL']
|
||||
'meson.build' : ['meson']
|
||||
'wayland' : ['wayland']
|
22432
.pick_status.json
Normal file
22432
.pick_status.json
Normal file
File diff suppressed because it is too large
Load Diff
14
CODEOWNERS
14
CODEOWNERS
@@ -29,7 +29,7 @@ meson.build @dbaker @eric
|
||||
|
||||
# Compatibility headers
|
||||
/include/c99* @xexaxo
|
||||
/src/c11/ @lygstate
|
||||
/src/c11/ @eric @lygstate
|
||||
|
||||
# Documentation
|
||||
/docs/ @eric @xexaxo
|
||||
@@ -43,8 +43,8 @@ meson.build @dbaker @eric
|
||||
/src/compiler/nir/ @gfxstrand
|
||||
|
||||
# Vulkan
|
||||
/src/vulkan/ @gfxstrand
|
||||
/include/vulkan/ @gfxstrand
|
||||
/src/vulkan/ @eric @gfxstrand
|
||||
/include/vulkan/ @eric @gfxstrand
|
||||
|
||||
|
||||
#############
|
||||
@@ -99,10 +99,6 @@ meson.build @dbaker @eric
|
||||
# CI #
|
||||
######
|
||||
|
||||
/.gitlab-ci.yml @eric
|
||||
/.gitlab-ci/ @eric
|
||||
gitlab-ci*.yml @eric
|
||||
|
||||
# Broadcom
|
||||
/src/broadcom/ci/ @jasuarez @chema
|
||||
|
||||
@@ -124,8 +120,8 @@ gitlab-ci*.yml @eric
|
||||
/src/gallium/drivers/freedreno/ @robclark
|
||||
|
||||
# Imagination
|
||||
/include/drm-uapi/pvr_drm.h @aashishc @frankbinns @luigi.santivetti
|
||||
/src/imagination/ @aashishc @frankbinns @luigi.santivetti
|
||||
/include/drm-uapi/pvr_drm.h @CreativeCylon @frankbinns @MTCoster
|
||||
/src/imagination/ @CreativeCylon @frankbinns @MTCoster
|
||||
/src/imagination/rogue/ @simon-perretta-img
|
||||
|
||||
# Intel
|
||||
|
@@ -79,6 +79,11 @@ LOCAL_SHARED_LIBRARIES += libdrm_radeon
|
||||
MESON_GEN_PKGCONFIGS += libdrm_radeon:$(LIBDRM_VERSION)
|
||||
endif
|
||||
|
||||
ifneq ($(filter nouveau,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||
LOCAL_SHARED_LIBRARIES += libdrm_nouveau
|
||||
MESON_GEN_PKGCONFIGS += libdrm_nouveau:$(LIBDRM_VERSION)
|
||||
endif
|
||||
|
||||
ifneq ($(filter d3d12,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||
LOCAL_HEADER_LIBRARIES += DirectX-Headers
|
||||
LOCAL_STATIC_LIBRARIES += DirectX-Guids
|
||||
@@ -123,21 +128,23 @@ endif
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# $1: name
|
||||
# $2: subdir
|
||||
# $3: source prebuilt
|
||||
# $4: export headers
|
||||
# $2: symlink suffix
|
||||
# $3: subdir
|
||||
# $4: source prebuilt
|
||||
# $5: export headers
|
||||
define mesa3d-lib
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_MODULE := $1
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
LOCAL_MODULE_RELATIVE_PATH := $2
|
||||
LOCAL_PREBUILT_MODULE_FILE := $($3)
|
||||
LOCAL_MODULE_RELATIVE_PATH := $3
|
||||
LOCAL_PREBUILT_MODULE_FILE := $($4)
|
||||
LOCAL_MULTILIB := first
|
||||
LOCAL_CHECK_ELF_FILES := false
|
||||
LOCAL_MODULE_SUFFIX := .so
|
||||
LOCAL_MODULE_SYMLINKS := $1$2
|
||||
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $4
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
ifdef TARGET_2ND_ARCH
|
||||
@@ -145,13 +152,14 @@ include $(CLEAR_VARS)
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_MODULE := $1
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
LOCAL_MODULE_RELATIVE_PATH := $2
|
||||
LOCAL_PREBUILT_MODULE_FILE := $(2ND_$3)
|
||||
LOCAL_MODULE_RELATIVE_PATH := $3
|
||||
LOCAL_PREBUILT_MODULE_FILE := $(2ND_$4)
|
||||
LOCAL_MULTILIB := 32
|
||||
LOCAL_CHECK_ELF_FILES := false
|
||||
LOCAL_MODULE_SUFFIX := .so
|
||||
LOCAL_MODULE_SYMLINKS := $1$2
|
||||
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $4
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
||||
include $(BUILD_PREBUILT)
|
||||
endif
|
||||
endef
|
||||
@@ -159,25 +167,25 @@ endef
|
||||
ifneq ($(strip $(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||
# Module 'libgallium_dri', produces '/vendor/lib{64}/dri/libgallium_dri.so'
|
||||
# This module also trigger DRI symlinks creation process
|
||||
$(eval $(call mesa3d-lib,libgallium_dri,dri,MESA3D_GALLIUM_DRI_BIN))
|
||||
$(eval $(call mesa3d-lib,libgallium_dri,.so.0,dri,MESA3D_GALLIUM_DRI_BIN))
|
||||
# Module 'libglapi', produces '/vendor/lib{64}/libglapi.so'
|
||||
$(eval $(call mesa3d-lib,libglapi,,MESA3D_LIBGLAPI_BIN))
|
||||
$(eval $(call mesa3d-lib,libglapi,.so.0,,MESA3D_LIBGLAPI_BIN))
|
||||
|
||||
# Module 'libEGL_mesa', produces '/vendor/lib{64}/egl/libEGL_mesa.so'
|
||||
$(eval $(call mesa3d-lib,libEGL_mesa,egl,MESA3D_LIBEGL_BIN))
|
||||
$(eval $(call mesa3d-lib,libEGL_mesa,.so.1,egl,MESA3D_LIBEGL_BIN))
|
||||
# Module 'libGLESv1_CM_mesa', produces '/vendor/lib{64}/egl/libGLESv1_CM_mesa.so'
|
||||
$(eval $(call mesa3d-lib,libGLESv1_CM_mesa,egl,MESA3D_LIBGLESV1_BIN))
|
||||
$(eval $(call mesa3d-lib,libGLESv1_CM_mesa,.so.1,egl,MESA3D_LIBGLESV1_BIN))
|
||||
# Module 'libGLESv2_mesa', produces '/vendor/lib{64}/egl/libGLESv2_mesa.so'
|
||||
$(eval $(call mesa3d-lib,libGLESv2_mesa,egl,MESA3D_LIBGLESV2_BIN))
|
||||
$(eval $(call mesa3d-lib,libGLESv2_mesa,.so.2,egl,MESA3D_LIBGLESV2_BIN))
|
||||
endif
|
||||
|
||||
# Modules 'vulkan.{driver_name}', produces '/vendor/lib{64}/hw/vulkan.{driver_name}.so' HAL
|
||||
$(foreach driver,$(BOARD_MESA3D_VULKAN_DRIVERS), \
|
||||
$(eval $(call mesa3d-lib,vulkan.$(MESA_VK_LIB_SUFFIX_$(driver)),hw,MESA3D_VULKAN_$(driver)_BIN)))
|
||||
$(eval $(call mesa3d-lib,vulkan.$(MESA_VK_LIB_SUFFIX_$(driver)),.so.0,hw,MESA3D_VULKAN_$(driver)_BIN)))
|
||||
|
||||
ifneq ($(filter true, $(BOARD_MESA3D_BUILD_LIBGBM)),)
|
||||
# Modules 'libgbm', produces '/vendor/lib{64}/libgbm.so'
|
||||
$(eval $(call mesa3d-lib,$(MESA_LIBGBM_NAME),,MESA3D_LIBGBM_BIN,$(MESA3D_TOP)/src/gbm/main))
|
||||
$(eval $(call mesa3d-lib,$(MESA_LIBGBM_NAME),.so.1,,MESA3D_LIBGBM_BIN,$(MESA3D_TOP)/src/gbm/main))
|
||||
endif
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@@ -65,11 +65,11 @@ MESON_GEN_FILES_TARGET := $(MESON_GEN_DIR)/.timestamp
|
||||
|
||||
MESA3D_GALLIUM_DRI_DIR := $(MESON_OUT_DIR)/install/usr/local/lib/dri
|
||||
$(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libgallium_dri.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libEGL.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv1_CM.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv2.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLAPI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libglapi.so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/$(MESA_LIBGBM_NAME).so
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libEGL.so.1.0.0
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv1_CM.so.1.1.0
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv2.so.2.0.0
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGLAPI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libglapi.so.0.0.0
|
||||
$(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/$(MESA_LIBGBM_NAME).so.1.0.0
|
||||
|
||||
|
||||
MESA3D_GLES_BINS := \
|
||||
@@ -256,7 +256,7 @@ $(MESON_GEN_FILES_TARGET): $(sort $(shell find -L $(MESA3D_TOP) -not -path '*/\.
|
||||
"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(call relative-to-absolute,$(MESON_GEN_DIR))', '/usr/bin/pkg-config']\n\n" \
|
||||
"llvm-config = '/dev/null'\n" \
|
||||
"[host_machine]\n" \
|
||||
"system = 'android'\n" \
|
||||
"system = 'linux'\n" \
|
||||
"cpu_family = '$(MESON_CPU_FAMILY)'\n" \
|
||||
"cpu = '$(MESON_CPU_FAMILY)'\n" \
|
||||
"endian = 'little'" > $(dir $@)/aosp_cross
|
||||
|
@@ -1,162 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright © 2023 Collabora Ltd.
|
||||
# Authors:
|
||||
# Helen Koike <helen.koike@collabora.com>
|
||||
#
|
||||
# For the dependencies, see the requirements.txt
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
||||
import argparse
|
||||
import gitlab
|
||||
import plotly.express as px
|
||||
from gitlab_common import pretty_duration
|
||||
from datetime import datetime, timedelta
|
||||
from gitlab_common import read_token, GITLAB_URL, get_gitlab_pipeline_from_url
|
||||
|
||||
|
||||
def calculate_queued_at(job):
|
||||
# we can have queued_duration without started_at when a job is canceled
|
||||
if not job.queued_duration or not job.started_at:
|
||||
return None
|
||||
started_at = job.started_at.replace("Z", "+00:00")
|
||||
return datetime.fromisoformat(started_at) - timedelta(seconds=job.queued_duration)
|
||||
|
||||
|
||||
def calculate_time_difference(time1, time2):
|
||||
if not time1 or not time2:
|
||||
return None
|
||||
if type(time1) is str:
|
||||
time1 = datetime.fromisoformat(time1.replace("Z", "+00:00"))
|
||||
if type(time2) is str:
|
||||
time2 = datetime.fromisoformat(time2.replace("Z", "+00:00"))
|
||||
|
||||
diff = time2 - time1
|
||||
return pretty_duration(diff.seconds)
|
||||
|
||||
|
||||
def create_task_name(job):
|
||||
status_color = {"success": "green", "failed": "red"}.get(job.status, "grey")
|
||||
return f"{job.name}\t(<span style='color: {status_color}'>{job.status}</span>,<a href='{job.web_url}'>{job.id}</a>)"
|
||||
|
||||
|
||||
def add_gantt_bar(job, tasks):
|
||||
queued_at = calculate_queued_at(job)
|
||||
task_name = create_task_name(job)
|
||||
|
||||
tasks.append(
|
||||
{
|
||||
"Job": task_name,
|
||||
"Start": job.created_at,
|
||||
"Finish": queued_at,
|
||||
"Duration": calculate_time_difference(job.created_at, queued_at),
|
||||
"Phase": "Waiting dependencies",
|
||||
}
|
||||
)
|
||||
tasks.append(
|
||||
{
|
||||
"Job": task_name,
|
||||
"Start": queued_at,
|
||||
"Finish": job.started_at,
|
||||
"Duration": calculate_time_difference(queued_at, job.started_at),
|
||||
"Phase": "Queued",
|
||||
}
|
||||
)
|
||||
tasks.append(
|
||||
{
|
||||
"Job": task_name,
|
||||
"Start": job.started_at,
|
||||
"Finish": job.finished_at,
|
||||
"Duration": calculate_time_difference(job.started_at, job.finished_at),
|
||||
"Phase": "Running",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def generate_gantt_chart(pipeline):
|
||||
if pipeline.yaml_errors:
|
||||
raise ValueError("Pipeline YAML errors detected")
|
||||
|
||||
# Convert the data into a list of dictionaries for plotly
|
||||
tasks = []
|
||||
|
||||
for job in pipeline.jobs.list(all=True, include_retried=True):
|
||||
add_gantt_bar(job, tasks)
|
||||
|
||||
# Make it easier to see retried jobs
|
||||
tasks.sort(key=lambda x: x["Job"])
|
||||
|
||||
title = f"Gantt chart of jobs in pipeline <a href='{pipeline.web_url}'>{pipeline.web_url}</a>."
|
||||
title += (
|
||||
f" Total duration {str(timedelta(seconds=pipeline.duration))}"
|
||||
if pipeline.duration
|
||||
else ""
|
||||
)
|
||||
|
||||
# Create a Gantt chart
|
||||
fig = px.timeline(
|
||||
tasks,
|
||||
x_start="Start",
|
||||
x_end="Finish",
|
||||
y="Job",
|
||||
color="Phase",
|
||||
title=title,
|
||||
hover_data=["Duration"],
|
||||
)
|
||||
|
||||
# Calculate the height dynamically
|
||||
fig.update_layout(height=len(tasks) * 10, yaxis_tickfont_size=14)
|
||||
|
||||
# Add a deadline line to the chart
|
||||
created_at = datetime.fromisoformat(pipeline.created_at.replace("Z", "+00:00"))
|
||||
timeout_at = created_at + timedelta(hours=1)
|
||||
fig.add_vrect(
|
||||
x0=timeout_at,
|
||||
x1=timeout_at,
|
||||
annotation_text="1h Timeout",
|
||||
fillcolor="gray",
|
||||
line_width=2,
|
||||
line_color="gray",
|
||||
line_dash="dash",
|
||||
annotation_position="top left",
|
||||
annotation_textangle=90,
|
||||
)
|
||||
|
||||
return fig
|
||||
|
||||
|
||||
def parse_args() -> None:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Generate the Gantt chart from a given pipeline."
|
||||
)
|
||||
parser.add_argument("pipeline_url", type=str, help="URLs to the pipeline.")
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--output",
|
||||
type=str,
|
||||
help="Output file name. Use html ou image suffixes to choose the format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--token",
|
||||
metavar="token",
|
||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = parse_args()
|
||||
|
||||
token = read_token(args.token)
|
||||
|
||||
gl = gitlab.Gitlab(url=GITLAB_URL, private_token=token, retry_transient_errors=True)
|
||||
|
||||
pipeline, _ = get_gitlab_pipeline_from_url(gl, args.pipeline_url)
|
||||
fig = generate_gantt_chart(pipeline)
|
||||
if args.output and "htm" in args.output:
|
||||
fig.write_html(args.output)
|
||||
elif args.output:
|
||||
fig.update_layout(width=1000)
|
||||
fig.write_image(args.output)
|
||||
else:
|
||||
fig.show()
|
@@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
this_dir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
|
||||
readonly this_dir
|
||||
|
||||
exec \
|
||||
"$this_dir/../python-venv.sh" \
|
||||
"$this_dir/requirements.txt" \
|
||||
"$this_dir/ci_gantt_chart.py" "$@"
|
@@ -1,178 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright © 2023 Collabora Ltd.
|
||||
# Authors:
|
||||
# Helen Koike <helen.koike@collabora.com>
|
||||
#
|
||||
# For the dependencies, see the requirements.txt
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
||||
import argparse
|
||||
import gitlab
|
||||
import re
|
||||
import os
|
||||
import pytz
|
||||
import traceback
|
||||
from datetime import datetime, timedelta
|
||||
from gitlab_common import (
|
||||
read_token,
|
||||
GITLAB_URL,
|
||||
get_gitlab_pipeline_from_url,
|
||||
)
|
||||
from ci_gantt_chart import generate_gantt_chart
|
||||
|
||||
MARGE_USER_ID = 9716 # Marge
|
||||
|
||||
LAST_MARGE_EVENT_FILE = os.path.expanduser("~/.config/last_marge_event")
|
||||
|
||||
|
||||
def read_last_event_date_from_file():
|
||||
try:
|
||||
with open(LAST_MARGE_EVENT_FILE, "r") as f:
|
||||
last_event_date = f.read().strip()
|
||||
except FileNotFoundError:
|
||||
# 3 days ago
|
||||
last_event_date = (datetime.now() - timedelta(days=3)).isoformat()
|
||||
return last_event_date
|
||||
|
||||
|
||||
def pretty_time(time_str):
|
||||
"""Pretty print time"""
|
||||
local_timezone = datetime.now().astimezone().tzinfo
|
||||
|
||||
time_d = datetime.fromisoformat(time_str.replace("Z", "+00:00")).astimezone(
|
||||
local_timezone
|
||||
)
|
||||
return f'{time_str} ({time_d.strftime("%d %b %Y %Hh%Mm%Ss")} {local_timezone})'
|
||||
|
||||
|
||||
def compose_message(file_name, attachment_url):
|
||||
return f"""
|
||||
Here is the Gantt chart for the referred pipeline, I hope it helps 😄 (tip: click on the "Pan" button on the top right bar):
|
||||
|
||||
[{file_name}]({attachment_url})
|
||||
|
||||
<details>
|
||||
<summary>more info</summary>
|
||||
|
||||
This message was generated by the ci_post_gantt.py script, which is running on a server at Collabora.
|
||||
</details>
|
||||
"""
|
||||
|
||||
|
||||
def gitlab_upload_file_get_url(gl, project_id, filepath):
|
||||
project = gl.projects.get(project_id)
|
||||
uploaded_file = project.upload(filepath, filepath=filepath)
|
||||
return uploaded_file["url"]
|
||||
|
||||
|
||||
def gitlab_post_reply_to_note(gl, event, reply_message):
|
||||
"""
|
||||
Post a reply to a note in thread based on a GitLab event.
|
||||
|
||||
:param gl: The GitLab connection instance.
|
||||
:param event: The event object containing the note details.
|
||||
:param reply_message: The reply message.
|
||||
"""
|
||||
try:
|
||||
note_id = event.target_id
|
||||
merge_request_iid = event.note["noteable_iid"]
|
||||
|
||||
project = gl.projects.get(event.project_id)
|
||||
merge_request = project.mergerequests.get(merge_request_iid)
|
||||
|
||||
# Find the discussion to which the note belongs
|
||||
discussions = merge_request.discussions.list(as_list=False)
|
||||
target_discussion = next(
|
||||
(
|
||||
d
|
||||
for d in discussions
|
||||
if any(n["id"] == note_id for n in d.attributes["notes"])
|
||||
),
|
||||
None,
|
||||
)
|
||||
|
||||
if target_discussion is None:
|
||||
raise ValueError("Discussion for the note not found.")
|
||||
|
||||
# Add a reply to the discussion
|
||||
reply = target_discussion.notes.create({"body": reply_message})
|
||||
return reply
|
||||
|
||||
except gitlab.exceptions.GitlabError as e:
|
||||
print(f"Failed to post a reply to '{event.note['body']}': {e}")
|
||||
return None
|
||||
|
||||
|
||||
def parse_args() -> None:
|
||||
parser = argparse.ArgumentParser(description="Monitor rejected pipelines by Marge.")
|
||||
parser.add_argument(
|
||||
"--token",
|
||||
metavar="token",
|
||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--since",
|
||||
metavar="since",
|
||||
help="consider only events after this date (ISO format), otherwise it's read from ~/.config/last_marge_event",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = parse_args()
|
||||
|
||||
token = read_token(args.token)
|
||||
|
||||
gl = gitlab.Gitlab(url=GITLAB_URL, private_token=token, retry_transient_errors=True)
|
||||
|
||||
user = gl.users.get(MARGE_USER_ID)
|
||||
last_event_at = args.since if args.since else read_last_event_date_from_file()
|
||||
|
||||
print(f"Retrieving Marge messages since {pretty_time(last_event_at)}\n")
|
||||
|
||||
# the "after" only considers the "2023-10-24" part, it doesn't consider the time
|
||||
events = user.events.list(
|
||||
all=True,
|
||||
target_type="note",
|
||||
after=(datetime.now() - timedelta(days=3)).isoformat(),
|
||||
sort="asc",
|
||||
)
|
||||
|
||||
last_event_at_date = datetime.fromisoformat(
|
||||
last_event_at.replace("Z", "+00:00")
|
||||
).replace(tzinfo=pytz.UTC)
|
||||
|
||||
for event in events:
|
||||
created_at_date = datetime.fromisoformat(
|
||||
event.created_at.replace("Z", "+00:00")
|
||||
).replace(tzinfo=pytz.UTC)
|
||||
if created_at_date <= last_event_at_date:
|
||||
continue
|
||||
last_event_at = event.created_at
|
||||
|
||||
match = re.search(r"https://[^ ]+", event.note["body"])
|
||||
if match:
|
||||
try:
|
||||
print("Found message:", event.note["body"])
|
||||
pipeline_url = match.group(0)[:-1]
|
||||
pipeline, _ = get_gitlab_pipeline_from_url(gl, pipeline_url)
|
||||
print("Generating gantt chart...")
|
||||
fig = generate_gantt_chart(pipeline)
|
||||
file_name = "Gantt.html"
|
||||
fig.write_html(file_name)
|
||||
print("Uploading gantt file...")
|
||||
file_url = gitlab_upload_file_get_url(gl, event.project_id, file_name)
|
||||
print("Posting reply ...\n")
|
||||
message = compose_message(file_name, file_url)
|
||||
gitlab_post_reply_to_note(gl, event, message)
|
||||
except Exception as e:
|
||||
print(f"Failed to generate gantt chart, not posting reply.{e}")
|
||||
traceback.print_exc()
|
||||
|
||||
if not args.since:
|
||||
print(
|
||||
f"Updating last event date to {pretty_time(last_event_at)} on {LAST_MARGE_EVENT_FILE}\n"
|
||||
)
|
||||
with open(LAST_MARGE_EVENT_FILE, "w") as f:
|
||||
f.write(last_event_at)
|
@@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
this_dir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
|
||||
readonly this_dir
|
||||
|
||||
exec \
|
||||
"$this_dir/../python-venv.sh" \
|
||||
"$this_dir/requirements.txt" \
|
||||
"$this_dir/ci_post_gantt.py" "$@"
|
@@ -20,27 +20,24 @@ from collections import defaultdict
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from functools import partial
|
||||
from itertools import chain
|
||||
from subprocess import check_output, CalledProcessError
|
||||
from subprocess import check_output
|
||||
from typing import TYPE_CHECKING, Iterable, Literal, Optional
|
||||
|
||||
import gitlab
|
||||
import gitlab.v4.objects
|
||||
from colorama import Fore, Style
|
||||
from gitlab_common import (
|
||||
GITLAB_URL,
|
||||
TOKEN_DIR,
|
||||
get_gitlab_pipeline_from_url,
|
||||
get_gitlab_project,
|
||||
get_token_from_default_dir,
|
||||
pretty_duration,
|
||||
read_token,
|
||||
wait_for_pipeline,
|
||||
pretty_duration,
|
||||
)
|
||||
from gitlab_gql import GitlabGQL, create_job_needs_dag, filter_dag, print_dag
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from gitlab_gql import Dag
|
||||
|
||||
GITLAB_URL = "https://gitlab.freedesktop.org"
|
||||
|
||||
REFRESH_WAIT_LOG = 10
|
||||
REFRESH_WAIT_JOBS = 6
|
||||
|
||||
@@ -66,9 +63,6 @@ def print_job_status(job, new_status=False) -> None:
|
||||
if job.status == "canceled":
|
||||
return
|
||||
|
||||
if new_status and job.status == "created":
|
||||
return
|
||||
|
||||
if job.duration:
|
||||
duration = job.duration
|
||||
elif job.started_at:
|
||||
@@ -120,10 +114,10 @@ def monitor_pipeline(
|
||||
stress < 0
|
||||
or sum(stress_status_counter[job.name].values()) < stress
|
||||
):
|
||||
job = enable_job(project, pipeline, job, "retry", force_manual)
|
||||
enable_job(project, job, "retry", force_manual)
|
||||
stress_status_counter[job.name][job.status] += 1
|
||||
else:
|
||||
job = enable_job(project, pipeline, job, "target", force_manual)
|
||||
enable_job(project, job, "target", force_manual)
|
||||
|
||||
print_job_status(job, job.status not in target_statuses[job.name])
|
||||
target_statuses[job.name] = job.status
|
||||
@@ -136,7 +130,7 @@ def monitor_pipeline(
|
||||
|
||||
# run dependencies and cancel the rest
|
||||
if job.name in dependencies:
|
||||
job = enable_job(project, pipeline, job, "dep", True)
|
||||
enable_job(project, job, "dep", True)
|
||||
if job.status == "failed":
|
||||
deps_failed.append(job.name)
|
||||
else:
|
||||
@@ -191,37 +185,23 @@ def monitor_pipeline(
|
||||
pretty_wait(REFRESH_WAIT_JOBS)
|
||||
|
||||
|
||||
def get_pipeline_job(
|
||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||
id: int,
|
||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
||||
pipeline_jobs = pipeline.jobs.list(all=True)
|
||||
return [j for j in pipeline_jobs if j.id == id][0]
|
||||
|
||||
|
||||
def enable_job(
|
||||
project: gitlab.v4.objects.Project,
|
||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
||||
action_type: Literal["target", "dep", "retry"],
|
||||
force_manual: bool,
|
||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
||||
project, job, action_type: Literal["target", "dep", "retry"], force_manual: bool
|
||||
) -> None:
|
||||
"""enable job"""
|
||||
if (
|
||||
(job.status in ["success", "failed"] and action_type != "retry")
|
||||
or (job.status == "manual" and not force_manual)
|
||||
or job.status in ["skipped", "running", "created", "pending"]
|
||||
):
|
||||
return job
|
||||
return
|
||||
|
||||
pjob = project.jobs.get(job.id, lazy=True)
|
||||
|
||||
if job.status in ["success", "failed", "canceled"]:
|
||||
new_job = pjob.retry()
|
||||
job = get_pipeline_job(pipeline, new_job["id"])
|
||||
pjob.retry()
|
||||
else:
|
||||
pjob.play()
|
||||
job = get_pipeline_job(pipeline, pjob.id)
|
||||
|
||||
if action_type == "target":
|
||||
jtype = "🞋 "
|
||||
@@ -232,8 +212,6 @@ def enable_job(
|
||||
|
||||
print(Fore.MAGENTA + f"{jtype} job {job.name} manually enabled" + Style.RESET_ALL)
|
||||
|
||||
return job
|
||||
|
||||
|
||||
def cancel_job(project, job) -> None:
|
||||
"""Cancel GitLab job"""
|
||||
@@ -267,7 +245,7 @@ def print_log(project, job_id) -> None:
|
||||
job = project.jobs.get(job_id)
|
||||
|
||||
# GitLab's REST API doesn't offer pagination for logs, so we have to refetch it all
|
||||
lines = job.trace().decode().splitlines()
|
||||
lines = job.trace().decode("raw_unicode_escape").splitlines()
|
||||
for line in lines[printed_lines:]:
|
||||
print(line)
|
||||
printed_lines = len(lines)
|
||||
@@ -291,15 +269,11 @@ def parse_args() -> None:
|
||||
metavar="target-job",
|
||||
help="Target job regex. For multiple targets, separate with pipe | character",
|
||||
required=True,
|
||||
nargs=argparse.ONE_OR_MORE,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--token",
|
||||
metavar="token",
|
||||
type=str,
|
||||
default=get_token_from_default_dir(),
|
||||
help="Use the provided GitLab token or token file, "
|
||||
f"otherwise it's read from {TOKEN_DIR / 'gitlab-token'}",
|
||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--force-manual", action="store_true", help="Force jobs marked as manual"
|
||||
@@ -360,31 +334,8 @@ def print_detected_jobs(
|
||||
print_job_set(Fore.BLUE, "target", target_jobs)
|
||||
|
||||
|
||||
def find_dependencies(token: str | None,
|
||||
target_jobs_regex: re.Pattern,
|
||||
project_path: str,
|
||||
iid: int) -> set[str]:
|
||||
"""
|
||||
Find the dependencies of the target jobs in a GitLab pipeline.
|
||||
|
||||
This function uses the GitLab GraphQL API to fetch the job dependency graph
|
||||
of a pipeline, filters the graph to only include the target jobs and their
|
||||
dependencies, and returns the names of these jobs.
|
||||
|
||||
Args:
|
||||
token (str | None): The GitLab API token. If None, the API is accessed without
|
||||
authentication.
|
||||
target_jobs_regex (re.Pattern): A regex pattern to match the names of the target jobs.
|
||||
project_path (str): The path of the GitLab project.
|
||||
iid (int): The internal ID of the pipeline.
|
||||
|
||||
Returns:
|
||||
set[str]: A set of the names of the target jobs and their dependencies.
|
||||
|
||||
Raises:
|
||||
SystemExit: If no target jobs are found in the pipeline.
|
||||
"""
|
||||
gql_instance = GitlabGQL(token=token)
|
||||
def find_dependencies(target_jobs_regex: re.Pattern, project_path: str, iid: int) -> set[str]:
|
||||
gql_instance = GitlabGQL()
|
||||
dag = create_job_needs_dag(
|
||||
gql_instance, {"projectPath": project_path.path_with_namespace, "iid": iid}
|
||||
)
|
||||
@@ -415,7 +366,15 @@ if __name__ == "__main__":
|
||||
REV: str = args.rev
|
||||
|
||||
if args.pipeline_url:
|
||||
pipe, cur_project = get_gitlab_pipeline_from_url(gl, args.pipeline_url)
|
||||
assert args.pipeline_url.startswith(GITLAB_URL)
|
||||
url_path = args.pipeline_url[len(GITLAB_URL):]
|
||||
url_path_components = url_path.split("/")
|
||||
project_name = "/".join(url_path_components[1:3])
|
||||
assert url_path_components[3] == "-"
|
||||
assert url_path_components[4] == "pipelines"
|
||||
pipeline_id = int(url_path_components[5])
|
||||
cur_project = gl.projects.get(project_name)
|
||||
pipe = cur_project.pipelines.get(pipeline_id)
|
||||
REV = pipe.sha
|
||||
else:
|
||||
mesa_project = gl.projects.get("mesa/mesa")
|
||||
@@ -424,58 +383,20 @@ if __name__ == "__main__":
|
||||
REV = mesa_project.mergerequests.get(args.mr).sha
|
||||
else:
|
||||
REV = check_output(['git', 'rev-parse', REV]).decode('ascii').strip()
|
||||
|
||||
if args.rev == 'HEAD':
|
||||
try:
|
||||
branch_name = check_output([
|
||||
'git', 'symbolic-ref', '-q', 'HEAD',
|
||||
]).decode('ascii').strip()
|
||||
except CalledProcessError:
|
||||
branch_name = ""
|
||||
|
||||
# Ignore detached heads
|
||||
if branch_name:
|
||||
tracked_remote = check_output([
|
||||
'git', 'for-each-ref', '--format=%(upstream)',
|
||||
branch_name,
|
||||
]).decode('ascii').strip()
|
||||
|
||||
# Ignore local branches that do not track any remote
|
||||
if tracked_remote:
|
||||
remote_rev = check_output([
|
||||
'git', 'rev-parse', tracked_remote,
|
||||
]).decode('ascii').strip()
|
||||
|
||||
if REV != remote_rev:
|
||||
print(
|
||||
f"Local HEAD commit {REV[:10]} is different than "
|
||||
f"tracked remote HEAD commit {remote_rev[:10]}"
|
||||
)
|
||||
print("Did you forget to `git push` ?")
|
||||
|
||||
projects.append(get_gitlab_project(gl, args.project))
|
||||
(pipe, cur_project) = wait_for_pipeline(projects, REV)
|
||||
|
||||
print(f"Revision: {REV}")
|
||||
print(f"Pipeline: {pipe.web_url}")
|
||||
|
||||
target = '|'.join(args.target)
|
||||
target = target.strip()
|
||||
target_jobs_regex = re.compile(args.target.strip())
|
||||
|
||||
deps = set()
|
||||
print("🞋 job: " + Fore.BLUE + target + Style.RESET_ALL)
|
||||
|
||||
# Implicitly include `parallel:` jobs
|
||||
target = f'({target})' + r'( \d+/\d+)?'
|
||||
|
||||
target_jobs_regex = re.compile(target)
|
||||
|
||||
deps = find_dependencies(
|
||||
token=token,
|
||||
target_jobs_regex=target_jobs_regex,
|
||||
iid=pipe.iid,
|
||||
project_path=cur_project
|
||||
)
|
||||
if args.target:
|
||||
print("🞋 job: " + Fore.BLUE + args.target + Style.RESET_ALL)
|
||||
deps = find_dependencies(
|
||||
target_jobs_regex=target_jobs_regex, iid=pipe.iid, project_path=cur_project
|
||||
)
|
||||
target_job_id, ret = monitor_pipeline(
|
||||
cur_project, pipe, target_jobs_regex, deps, args.force_manual, args.stress
|
||||
)
|
||||
|
@@ -3,33 +3,13 @@
|
||||
# Authors:
|
||||
# Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||
# David Heidelberg <david.heidelberg@collabora.com>
|
||||
# Guilherme Gallo <guilherme.gallo@collabora.com>
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
'''Shared functions between the scripts.'''
|
||||
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
GITLAB_URL = "https://gitlab.freedesktop.org"
|
||||
TOKEN_DIR = Path(os.getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
|
||||
|
||||
# Known GitLab token prefixes: https://docs.gitlab.com/ee/security/token_overview.html#token-prefixes
|
||||
TOKEN_PREFIXES: dict[str, str] = {
|
||||
"Personal access token": "glpat-",
|
||||
"OAuth Application Secret": "gloas-",
|
||||
"Deploy token": "gldt-",
|
||||
"Runner authentication token": "glrt-",
|
||||
"CI/CD Job token": "glcbt-",
|
||||
"Trigger token": "glptt-",
|
||||
"Feed token": "glft-",
|
||||
"Incoming mail token": "glimt-",
|
||||
"GitLab Agent for Kubernetes token": "glagent-",
|
||||
"SCIM Tokens": "glsoat-"
|
||||
}
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def pretty_duration(seconds):
|
||||
@@ -43,19 +23,6 @@ def pretty_duration(seconds):
|
||||
return f"{seconds:0.0f}s"
|
||||
|
||||
|
||||
def get_gitlab_pipeline_from_url(gl, pipeline_url):
|
||||
assert pipeline_url.startswith(GITLAB_URL)
|
||||
url_path = pipeline_url[len(GITLAB_URL) :]
|
||||
url_path_components = url_path.split("/")
|
||||
project_name = "/".join(url_path_components[1:3])
|
||||
assert url_path_components[3] == "-"
|
||||
assert url_path_components[4] == "pipelines"
|
||||
pipeline_id = int(url_path_components[5])
|
||||
cur_project = gl.projects.get(project_name)
|
||||
pipe = cur_project.pipelines.get(pipeline_id)
|
||||
return pipe, cur_project
|
||||
|
||||
|
||||
def get_gitlab_project(glab, name: str):
|
||||
"""Finds a specified gitlab project for given user"""
|
||||
if "/" in name:
|
||||
@@ -67,81 +34,15 @@ def get_gitlab_project(glab, name: str):
|
||||
return glab.projects.get(project_path)
|
||||
|
||||
|
||||
def get_token_from_default_dir() -> str:
|
||||
"""
|
||||
Retrieves the GitLab token from the default directory.
|
||||
|
||||
Returns:
|
||||
str: The path to the GitLab token file.
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: If the token file is not found.
|
||||
"""
|
||||
token_file = TOKEN_DIR / "gitlab-token"
|
||||
try:
|
||||
return str(token_file.resolve())
|
||||
except FileNotFoundError as ex:
|
||||
print(
|
||||
f"Could not find {token_file}, please provide a token file as an argument"
|
||||
)
|
||||
raise ex
|
||||
|
||||
|
||||
def validate_gitlab_token(token: str) -> bool:
|
||||
token_suffix = token.split("-")[-1]
|
||||
# Basic validation of the token suffix based on:
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/gems/gitlab-secret_detection/lib/gitleaks.toml
|
||||
if not re.match(r"(\w+-)?[0-9a-zA-Z_\-]{20,64}", token_suffix):
|
||||
return False
|
||||
|
||||
for token_type, token_prefix in TOKEN_PREFIXES.items():
|
||||
if token.startswith(token_prefix):
|
||||
logging.info(f"Found probable token type: {token_type}")
|
||||
return True
|
||||
|
||||
# If the token type is not recognized, return False
|
||||
return False
|
||||
|
||||
|
||||
def get_token_from_arg(token_arg: str | Path | None) -> str | None:
|
||||
if not token_arg:
|
||||
logging.info("No token provided.")
|
||||
return None
|
||||
|
||||
token_path = Path(token_arg)
|
||||
if token_path.is_file():
|
||||
return read_token_from_file(token_path)
|
||||
|
||||
return handle_direct_token(token_path, token_arg)
|
||||
|
||||
|
||||
def read_token_from_file(token_path: Path) -> str:
|
||||
token = token_path.read_text().strip()
|
||||
logging.info(f"Token read from file: {token_path}")
|
||||
return token
|
||||
|
||||
|
||||
def handle_direct_token(token_path: Path, token_arg: str | Path) -> str | None:
|
||||
if token_path == Path(get_token_from_default_dir()):
|
||||
logging.warning(
|
||||
f"The default token file {token_path} was not found. "
|
||||
"Please provide a token file or a token directly via --token arg."
|
||||
)
|
||||
return None
|
||||
logging.info("Token provided directly as an argument.")
|
||||
return str(token_arg)
|
||||
|
||||
|
||||
def read_token(token_arg: str | Path | None) -> str | None:
|
||||
token = get_token_from_arg(token_arg)
|
||||
if token and not validate_gitlab_token(token):
|
||||
logging.warning("The provided token is either an old token or does not seem to "
|
||||
"be a valid token.")
|
||||
logging.warning("Newer tokens are the ones created from a Gitlab 14.5+ instance.")
|
||||
logging.warning("See https://about.gitlab.com/releases/2021/11/22/"
|
||||
"gitlab-14-5-released/"
|
||||
"#new-gitlab-access-token-prefix-and-detection")
|
||||
return token
|
||||
def read_token(token_arg: Optional[str]) -> str:
|
||||
"""pick token from args or file"""
|
||||
if token_arg:
|
||||
return token_arg
|
||||
return (
|
||||
open(os.path.expanduser("~/.config/gitlab-token"), encoding="utf-8")
|
||||
.readline()
|
||||
.rstrip()
|
||||
)
|
||||
|
||||
|
||||
def wait_for_pipeline(projects, sha: str, timeout=None):
|
||||
|
@@ -9,6 +9,7 @@ from collections import OrderedDict
|
||||
from copy import deepcopy
|
||||
from dataclasses import dataclass, field
|
||||
from itertools import accumulate
|
||||
from os import getenv
|
||||
from pathlib import Path
|
||||
from subprocess import check_output
|
||||
from textwrap import dedent
|
||||
@@ -16,7 +17,6 @@ from typing import Any, Iterable, Optional, Pattern, TypedDict, Union
|
||||
|
||||
import yaml
|
||||
from filecache import DAY, filecache
|
||||
from gitlab_common import get_token_from_default_dir
|
||||
from gql import Client, gql
|
||||
from gql.transport.requests import RequestsHTTPTransport
|
||||
from graphql import DocumentNode
|
||||
@@ -34,6 +34,18 @@ Dag = dict[str, DagNode]
|
||||
|
||||
|
||||
StageSeq = OrderedDict[str, set[str]]
|
||||
TOKEN_DIR = Path(getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
|
||||
|
||||
|
||||
def get_token_from_default_dir() -> str:
|
||||
token_file = TOKEN_DIR / "gitlab-token"
|
||||
try:
|
||||
return str(token_file.resolve())
|
||||
except FileNotFoundError as ex:
|
||||
print(
|
||||
f"Could not find {token_file}, please provide a token file as an argument"
|
||||
)
|
||||
raise ex
|
||||
|
||||
|
||||
def get_project_root_dir():
|
||||
@@ -229,7 +241,7 @@ def traverse_dag_needs(jobs_metadata: Dag) -> None:
|
||||
partial = True
|
||||
|
||||
while partial:
|
||||
next_depth: set[str] = {n for dn in final_needs if dn in jobs_metadata for n in jobs_metadata[dn]["needs"]}
|
||||
next_depth: set[str] = {n for dn in final_needs for n in jobs_metadata[dn]["needs"]}
|
||||
partial: bool = not final_needs.issuperset(next_depth)
|
||||
final_needs = final_needs.union(next_depth)
|
||||
|
||||
@@ -343,12 +355,8 @@ def fetch_merged_yaml(gl_gql: GitlabGQL, params) -> dict[str, Any]:
|
||||
- local: .gitlab-ci.yml
|
||||
""")
|
||||
raw_response = gl_gql.query("job_details.gql", params)
|
||||
ci_config = raw_response["ciConfig"]
|
||||
if merged_yaml := ci_config["mergedYaml"]:
|
||||
if merged_yaml := raw_response["ciConfig"]["mergedYaml"]:
|
||||
return yaml.safe_load(merged_yaml)
|
||||
if "errors" in ci_config:
|
||||
for error in ci_config["errors"]:
|
||||
print(error)
|
||||
|
||||
gl_gql.invalidate_query_cache()
|
||||
raise ValueError(
|
||||
|
@@ -1,10 +1,7 @@
|
||||
colorama==0.4.5
|
||||
filecache==0.81
|
||||
gql==3.4.0
|
||||
kaleido==0.2.1
|
||||
python-dateutil==2.8.2
|
||||
pandas==2.1.1
|
||||
plotly==5.17.0
|
||||
python-gitlab==3.5.0
|
||||
PyYAML==6.0.1
|
||||
ruamel.yaml.clib==0.2.8
|
||||
|
@@ -177,8 +177,6 @@ SOURCES = [
|
||||
Source('include/vulkan/vulkan_xlib.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib.h'),
|
||||
Source('include/vulkan/vulkan_xlib_xrandr.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib_xrandr.h'),
|
||||
Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT'),
|
||||
Source('include/vk_video/vulkan_video_codec_av1std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std.h'),
|
||||
Source('include/vk_video/vulkan_video_codec_av1std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std_decode.h'),
|
||||
Source('include/vk_video/vulkan_video_codec_h264std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std.h'),
|
||||
Source('include/vk_video/vulkan_video_codec_h264std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_decode.h'),
|
||||
Source('include/vk_video/vulkan_video_codec_h264std_encode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_encode.h'),
|
||||
|
@@ -41,7 +41,7 @@ Then, create your Meson cross file to use it, something like this
|
||||
Now, use that cross file for your Android build directory (as in this
|
||||
one cross-compiling the turnip driver for a stock Pixel phone)
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup build-android-aarch64 \
|
||||
--cross-file android-aarch64 \
|
||||
@@ -61,7 +61,7 @@ read-only disk image on ``/vendor``. To be able to replace them for
|
||||
driver development, we need to unlock the device and remount
|
||||
``/vendor`` read/write.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
adb disable-verity
|
||||
adb reboot
|
||||
@@ -69,7 +69,7 @@ driver development, we need to unlock the device and remount
|
||||
|
||||
Now you can replace drivers as in:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
adb push build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so /vendor/lib64/hw/vulkan.sdm710.so
|
||||
|
||||
@@ -91,7 +91,7 @@ using scp from outside the container.
|
||||
On your device, you'll want to make ``/`` read-write. ssh in as root
|
||||
and run:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
crossystem dev_boot_signed_only=0
|
||||
/usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 4
|
||||
@@ -100,7 +100,7 @@ and run:
|
||||
Then, we'll switch Android from using an image for ``/vendor`` to using a
|
||||
bind-mount from a directory we control.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
cd /opt/google/containers/android/
|
||||
mkdir vendor-ro
|
||||
@@ -123,7 +123,7 @@ change it to::
|
||||
|
||||
Now, restart the UI to do a full reload:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
restart ui
|
||||
|
||||
@@ -136,7 +136,7 @@ then the ``mount`` command should show::
|
||||
Now, replacing your DRI driver with a new one built for Android should
|
||||
be a matter of:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
scp msm_dri.so $HOST:/opt/google/containers/android/vendor-rw/lib64/dri/
|
||||
|
||||
@@ -149,7 +149,7 @@ available to the NDK, assuming you're building anything but the
|
||||
Freedreno Vulkan driver for KGSL. You can mostly put things in place
|
||||
with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
scp $HOST:/opt/google/containers/android/vendor-rw/lib64/libdrm.so \
|
||||
NDKDIR/sysroot/usr/lib/aarch64-linux-android/lib/
|
||||
@@ -166,6 +166,6 @@ find you need to reload the whole Android container. To do so without
|
||||
having to log in to Chrome again every time, you can just kill the
|
||||
container and let it restart:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
kill $(cat /run/containers/android-run_oci/container.pid )
|
||||
|
@@ -35,7 +35,7 @@ than the given year.
|
||||
|
||||
For example, if the game was released in 2001, do
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
export MESA_EXTENSION_MAX_YEAR=2001
|
||||
|
||||
|
@@ -138,7 +138,7 @@ Setup
|
||||
Each board will be registered in freedesktop.org GitLab. You'll want
|
||||
something like this to register a fastboot board:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo gitlab-runner register \
|
||||
--url https://gitlab.freedesktop.org \
|
||||
@@ -194,7 +194,7 @@ Caching downloads
|
||||
To improve the runtime for downloading traces during traces job runs, you will
|
||||
want a pass-through HTTP cache. On your runner box, install nginx:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo apt install nginx libnginx-mod-http-lua
|
||||
|
||||
@@ -213,7 +213,7 @@ your devices are on.
|
||||
|
||||
Enable the site and restart nginx:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo rm /etc/nginx/sites-enabled/default
|
||||
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
|
||||
|
@@ -64,13 +64,13 @@ Farm management
|
||||
|
||||
When the farm starts failing for any reason (power, network, out-of-space), it needs to be disabled by pushing separate MR with
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git mv .ci-farms{,-disabled}/$farm_name
|
||||
|
||||
After farm restore functionality can be enabled by pushing a new merge request, which contains
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git mv .ci-farms{-disabled,}/$farm_name
|
||||
|
||||
@@ -279,7 +279,7 @@ command`` instead of ``run -it $IMAGE bash`` (which you may also find
|
||||
useful for debug). Extract your build setup variables from
|
||||
.gitlab-ci.yml and run the CI meson build script:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
IMAGE=registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
|
||||
sudo docker pull $IMAGE
|
||||
@@ -288,7 +288,7 @@ useful for debug). Extract your build setup variables from
|
||||
All you have left over from the build is its output, and a _build
|
||||
directory. You can hack on mesa and iterate testing the build with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo docker run --rm -v `pwd`:/mesa $IMAGE meson compile -C /mesa/_build
|
||||
|
||||
|
@@ -12,7 +12,7 @@ Running single trace
|
||||
--------------------
|
||||
A simple run to see the output of the trace can be done with
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
apitrace replay -w name_of_trace.trace
|
||||
|
||||
@@ -20,7 +20,7 @@ For more information, look into the `Apitrace documentation <https://github.com/
|
||||
|
||||
For comparing checksums use:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
cd piglit/replayer
|
||||
export PIGLIT_SOURCE_DIR="../"
|
||||
@@ -34,7 +34,7 @@ Sometimes it's useful to be able to test traces on your local machine instead of
|
||||
|
||||
Download the YAML file from your driver's ``ci/`` directory and then change the path in the YAML file from local proxy or MinIO to the local directory (url-like format ``file://``)
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
# The PIGLIT_REPLAY_DEVICE_NAME has to match name in the YAML file.
|
||||
export PIGLIT_REPLAY_DEVICE_NAME='your_device_name'
|
||||
|
@@ -126,7 +126,7 @@ Basic formatting guidelines
|
||||
- This GNU indent command generally does the right thing for
|
||||
formatting:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
|
||||
|
||||
|
@@ -28,13 +28,13 @@ Mesa releases are available in two formats: ``.tar.xz`` and ``.tar.gz``.
|
||||
|
||||
To unpack the tarball:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
tar xf mesa-Y.N.P.tar.xz
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
tar xf mesa-Y.N.P.tar.gz
|
||||
|
||||
|
@@ -388,13 +388,3 @@ executed :
|
||||
"main-command-buffer":f1 -> "ring-buffer":f1 [color="#0000ff"];
|
||||
"main-command-buffer":f1 -> "ring-buffer":f2 [color="#0000ff"];
|
||||
}
|
||||
|
||||
Runtime dependencies
|
||||
--------------------
|
||||
|
||||
Starting with Intel 12th generation/Alder Lake-P and Intel Arc Alchemist, the Intel 3D driver stack requires GuC firmware for proper operation. You have two options to install the firmware:
|
||||
|
||||
- Distro package: Install the pre-packaged firmware included in your Linux distribution's repositories.
|
||||
- Manual download: You can download the firmware from the official repository: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915. Place the downloaded files in the /lib/firmware/i915 directory.
|
||||
|
||||
Important: For optimal performance, we recommend updating the GuC firmware to version 70.6.3 or later.
|
@@ -205,7 +205,8 @@ Strided linear images have numerous limitations:
|
||||
- Strides must be a multiple of 16 bytes.
|
||||
- Strides must be nonzero. For 1D images where the stride is logically
|
||||
irrelevant, ail will internally select the minimal stride.
|
||||
- Only 1D, 2D, and 2D Array images may be linear. In particular, no 3D or cubemaps.
|
||||
- Only 1D and 2D images may be linear. In particular, no 3D or cubemaps.
|
||||
- Array texture may not be linear. No 2D arrays or cubemap arrays.
|
||||
- 2D images must not be mipmapped.
|
||||
- Block-compressed formats and multisampled images are unsupported. Elements of
|
||||
a strided linear image are simply pixels.
|
||||
@@ -306,14 +307,14 @@ useful for exercising the compiler. To build, use options:
|
||||
|
||||
Then run an OpenGL workload with environment variable:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so
|
||||
|
||||
For example to compile a shader with shaderdb and print some statistics along
|
||||
with the IR:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
~/shader-db$ AGX_MESA_DEBUG=shaders,shaderdb ASAHI_MESA_DEBUG=precompile LIBGL_DRIVERS_PATH=~/lib/dri/ LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so ./run shaders/glmark/1-12.shader_test
|
||||
|
||||
|
@@ -308,7 +308,7 @@ the GPU (including its internal hang detection). If a fault in GPU address
|
||||
space happened, you should expect to find a message from the iommu, with the
|
||||
faulting address and a hardware unit involved:
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
*** gpu fault: ttbr0=000000001c941000 iova=000000010066a000 dir=READ type=TRANSLATION source=TP|VFD (0,0,0,1)
|
||||
|
||||
@@ -346,7 +346,7 @@ though going here is the last resort and likely won't be helpful.
|
||||
The ``PC`` value is an instruction address in the current firmware.
|
||||
You would need to disassemble the firmware (/lib/firmware/qcom/aXXX_sqe.fw) via:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
afuc-disasm -v a650_sqe.fw > a650_sqe.fw.disasm
|
||||
|
||||
@@ -369,17 +369,18 @@ Command Stream Capture
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
During Mesa development, it's often useful to look at the command streams we
|
||||
send to the kernel. We have an interface for the kernel to capture all
|
||||
submitted command streams:
|
||||
send to the kernel. Mesa itself doesn't implement a way to stream them out
|
||||
(though it maybe should!). Instead, we have an interface for the kernel to
|
||||
capture all submitted command streams:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
cat /sys/kernel/debug/dri/0/rd > cmdstream &
|
||||
|
||||
By default, command stream capture does not capture texture/vertex/etc. data.
|
||||
You can enable capturing all the BOs with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
echo Y > /sys/module/msm/parameters/rd_full
|
||||
|
||||
@@ -390,28 +391,6 @@ probably want to cause a crash in the GPU during a frame of interest so that a
|
||||
single GPU core dump is generated. Emitting ``0xdeadbeef`` in the CS should be
|
||||
enough to cause a fault.
|
||||
|
||||
``fd_rd_output`` facilities provide support for generating the command stream
|
||||
capture from inside Mesa. Different ``FD_RD_DUMP`` options are available:
|
||||
|
||||
- ``enable`` simply enables dumping the command stream on each submit for a
|
||||
given logical device. When a more advanced option is specified, ``enable`` is
|
||||
implied as specified.
|
||||
- ``combine`` will combine all dumps into a single file instead of writing the
|
||||
dump for each submit into a standalone file.
|
||||
- ``full`` will dump every buffer object, which is necessary for replays of
|
||||
command streams (see below).
|
||||
- ``trigger`` will establish a trigger file through which dumps can be better
|
||||
controlled. Writing a positive integer value into the file will enable dumping
|
||||
of that many subsequent submits. Writing -1 will enable dumping of submits
|
||||
until disabled. Writing 0 (or any other value) will disable dumps.
|
||||
|
||||
Output dump files and trigger file (when enabled) are hard-coded to be placed
|
||||
under ``/tmp``, or ``/data/local/tmp`` under Android.
|
||||
|
||||
Functionality is generic to any Freedreno-based backend, but is currently only
|
||||
integrated in the MSM backend of Turnip. Using the existing ``TU_DEBUG=rd``
|
||||
option will translate to ``FD_RD_DUMP=enable``.
|
||||
|
||||
Capturing Hang RD
|
||||
+++++++++++++++++
|
||||
|
||||
@@ -421,7 +400,7 @@ Additionally it is geared towards analyzing the GPU state at the moment of the c
|
||||
Alternatively, it's possible to obtain the whole submission with all command
|
||||
streams via ``/sys/kernel/debug/dri/0/hangrd``:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo cat /sys/kernel/debug/dri/0/hangrd > logfile.rd // Do the cat _before_ the expected hang
|
||||
|
||||
@@ -442,17 +421,17 @@ Dumping rendering results or even just memory is currently unsupported.
|
||||
|
||||
Replaying is done via `replay` tool:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./replay test_replay.rd
|
||||
|
||||
More examples:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./replay --first=start_submit_n --last=last_submit_n test_replay.rd
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./replay --override=0 --generator=./generate_rd test_replay.rd
|
||||
|
||||
@@ -474,7 +453,7 @@ The workflow would look like this:
|
||||
1. Find the cmdstream № you want to edit;
|
||||
2. Decompile it:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./rddecompiler -s %cmd_stream_n% example.rd > generate_rd.c
|
||||
|
||||
@@ -482,7 +461,7 @@ The workflow would look like this:
|
||||
4. Compile it back, see rdcompiler-meson.build for the instructions;
|
||||
5. Plug the generator into cmdstream replay:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./replay --override=%cmd_stream_№% --generator=~/generate_rd
|
||||
|
||||
@@ -550,7 +529,7 @@ because it would require much less breadcrumb writes and syncs.
|
||||
|
||||
Breadcrumbs settings:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
TU_BREADCRUMBS=%IP%:%PORT%,break=%BREAKPOINT%:%BREAKPOINT_HITS%
|
||||
|
||||
@@ -565,26 +544,26 @@ A typical work flow would be:
|
||||
|
||||
- Start listening for breadcrumbs on a remote host:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
nc -lvup $PORT | stdbuf -o0 xxd -pc -c 4 | awk -Wposix '{printf("%u:%u\n", "0x" $0, a[$0]++)}'
|
||||
|
||||
- Start capturing command stream;
|
||||
- Replay the hanging trace with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
TU_BREADCRUMBS=$IP:$PORT,break=-1:0
|
||||
|
||||
- Increase hangcheck period:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
echo -n 60000 > /sys/kernel/debug/dri/0/hangcheck_period_ms
|
||||
|
||||
- After GPU hang note the last breadcrumb and relaunch trace with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
TU_BREADCRUMBS=%IP%:%PORT%,break=%LAST_BREADCRUMB%:%HITS%
|
||||
|
||||
@@ -610,7 +589,7 @@ Finding instances of stale reg reads
|
||||
Turnip has a debug option to stomp the registers with invalid values to catch
|
||||
the cases where stale data is read.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
MESA_VK_ABORT_ON_DEVICE_LOSS=1 \
|
||||
TU_DEBUG_STALE_REGS_RANGE=0x00000c00,0x0000be01 \
|
||||
|
@@ -55,7 +55,6 @@ These are some display drivers that have been tested with Lima:
|
||||
- Exynos: ``exynos``
|
||||
- Rockchip: ``rockchip``
|
||||
- Tiny DRM: ``tinydrm``
|
||||
- Xilinx ZynqMP: ``zynqmp-dpsub``
|
||||
|
||||
Environment variables
|
||||
---------------------
|
||||
|
@@ -31,7 +31,7 @@ Requirements
|
||||
|
||||
For Linux, on a recent Debian based distribution do:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
aptitude install llvm-dev
|
||||
|
||||
@@ -42,7 +42,7 @@ Requirements
|
||||
|
||||
For a RPM-based distribution do:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
yum install llvm-devel
|
||||
|
||||
@@ -76,7 +76,7 @@ Building
|
||||
|
||||
To build everything on Linux invoke meson as:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
@@ -18,8 +18,9 @@ NVK requires at least a Linux 6.6 kernel
|
||||
Conformance status:
|
||||
-------------------
|
||||
|
||||
NVK is a conformant Vulkan 1.3 implementation for all Turing (RTX 20XX and
|
||||
GTX 16XX) and later GPUs.
|
||||
NVK is not currently conformant on any hardware. As of the writing of this
|
||||
documentation, it was failing about 2000 tests with the current feature
|
||||
set.
|
||||
|
||||
Debugging
|
||||
---------
|
||||
@@ -27,35 +28,16 @@ Debugging
|
||||
Here are a few environment variable debug environment variables
|
||||
specific to NVK:
|
||||
|
||||
:envvar:`NAK_DEBUG`:
|
||||
a comma-separated list of named flags affecting the NVK back-end shader
|
||||
compiler:
|
||||
|
||||
``print``
|
||||
Prints the shader at various stages of the compile pipeline
|
||||
``serial``
|
||||
Forces serial instruction execution; this is often useful for
|
||||
debugging or working around dependency bugs
|
||||
``spill``
|
||||
Forces the GPR file to a minimal size to test the spilling code
|
||||
``annotate``
|
||||
Adds extra annotation instructions to the IR to track information
|
||||
from various compile passes
|
||||
|
||||
:envvar:`NVK_DEBUG`:
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
||||
``push``
|
||||
``push_dump``
|
||||
Dumps all pusbufs to stderr on submit. This requires that
|
||||
``push_sync`` also be set.
|
||||
``push_sync``
|
||||
Waits for submit to complete before continuing
|
||||
``zero_memory``
|
||||
Zeros all VkDeviceMemory objects upon creation
|
||||
``vm``
|
||||
Logs VM binds and unbinds
|
||||
``no_cbuf``
|
||||
Disables automatic promotion of UBOs to constant buffers
|
||||
|
||||
:envvar:`NVK_I_WANT_A_BROKEN_VULKAN_DRIVER`
|
||||
If defined to ``1`` or ``true``, this will enable enumeration of all
|
||||
|
@@ -6,28 +6,25 @@ GPUs based on the Midgard and Bifrost microarchitectures. It is **conformant**
|
||||
on Mali-G52 and Mali-G57 but **non-conformant** on other GPUs. The following
|
||||
hardware is currently supported:
|
||||
|
||||
========= ============= ============ =======
|
||||
Product Architecture OpenGL ES OpenGL
|
||||
========= ============= ============ =======
|
||||
Mali T600 Midgard (v4) 2.0 2.1
|
||||
Mali T620 Midgard (v4) 2.0 2.1
|
||||
Mali T720 Midgard (v4) 2.0 2.1
|
||||
Mali T760 Midgard (v5) 3.1 3.1
|
||||
Mali T820 Midgard (v5) 3.1 3.1
|
||||
Mali T830 Midgard (v5) 3.1 3.1
|
||||
Mali T860 Midgard (v5) 3.1 3.1
|
||||
Mali T880 Midgard (v5) 3.1 3.1
|
||||
Mali G72 Bifrost (v6) 3.1 3.1
|
||||
Mali G31 Bifrost (v7) 3.1 3.1
|
||||
Mali G51 Bifrost (v7) 3.1 3.1
|
||||
Mali G52 Bifrost (v7) 3.1 3.1
|
||||
Mali G76 Bifrost (v7) 3.1 3.1
|
||||
Mali G57 Valhall (v9) 3.1 3.1
|
||||
Mali G310 Valhall (v10) 3.1 3.1
|
||||
Mali G610 Valhall (v10) 3.1 3.1
|
||||
========= ============= ============ =======
|
||||
========= ============ ============ =======
|
||||
Product Architecture OpenGL ES OpenGL
|
||||
========= ============ ============ =======
|
||||
Mali T620 Midgard (v4) 2.0 2.1
|
||||
Mali T720 Midgard (v4) 2.0 2.1
|
||||
Mali T760 Midgard (v5) 3.1 3.1
|
||||
Mali T820 Midgard (v5) 3.1 3.1
|
||||
Mali T830 Midgard (v5) 3.1 3.1
|
||||
Mali T860 Midgard (v5) 3.1 3.1
|
||||
Mali T880 Midgard (v5) 3.1 3.1
|
||||
Mali G72 Bifrost (v6) 3.1 3.1
|
||||
Mali G31 Bifrost (v7) 3.1 3.1
|
||||
Mali G51 Bifrost (v7) 3.1 3.1
|
||||
Mali G52 Bifrost (v7) 3.1 3.1
|
||||
Mali G76 Bifrost (v7) 3.1 3.1
|
||||
Mali G57 Valhall (v9) 3.1 3.1
|
||||
========= ============ ============ =======
|
||||
|
||||
Other Midgard and Bifrost chips (e.g. G71) are not yet supported.
|
||||
Other Midgard and Bifrost chips (T604, G71) are not yet supported.
|
||||
|
||||
Older Mali chips based on the Utgard architecture (Mali 400, Mali 450) are
|
||||
supported in the :doc:`Lima <lima>` driver, not Panfrost. Lima is also
|
||||
@@ -105,16 +102,15 @@ was installed.
|
||||
By default, drm-shim mocks a Mali-G52 system. To select a specific Mali GPU,
|
||||
set the ``PAN_GPU_ID`` environment variable to the desired GPU ID:
|
||||
|
||||
========= ============= =======
|
||||
Product Architecture GPU ID
|
||||
========= ============= =======
|
||||
Mali-T720 Midgard (v4) 720
|
||||
Mali-T860 Midgard (v5) 860
|
||||
Mali-G72 Bifrost (v6) 6221
|
||||
Mali-G52 Bifrost (v7) 7212
|
||||
Mali-G57 Valhall (v9) 9093
|
||||
Mali-G610 Valhall (v10) a867
|
||||
========= ============= =======
|
||||
========= ============ =======
|
||||
Product Architecture GPU ID
|
||||
========= ============ =======
|
||||
Mali-T720 Midgard (v4) 720
|
||||
Mali-T860 Midgard (v5) 860
|
||||
Mali-G72 Bifrost (v6) 6221
|
||||
Mali-G52 Bifrost (v7) 7212
|
||||
Mali-G57 Valhall (v9) 9093
|
||||
========= ============ =======
|
||||
|
||||
Additional GPU IDs are enumerated in the ``panfrost_model_list`` list in
|
||||
``src/panfrost/lib/pan_props.c``.
|
||||
@@ -122,7 +118,7 @@ Additional GPU IDs are enumerated in the ``panfrost_model_list`` list in
|
||||
As an example: assuming Mesa is installed to a local path ``~/lib`` and Mesa's
|
||||
build directory is ``~/mesa/build``, a shader can be compiled for Mali-G52 as:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
~/shader-db$ BIFROST_MESA_DEBUG=shaders \
|
||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||
@@ -132,7 +128,7 @@ build directory is ``~/mesa/build``, a shader can be compiled for Mali-G52 as:
|
||||
|
||||
The same shader can be compiled for Mali-T720 as:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
~/shader-db$ MIDGARD_MESA_DEBUG=shaders \
|
||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||
@@ -152,7 +148,7 @@ and various flags to dEQP mimic the surfaceless environment that our
|
||||
continuous integration (CI) uses. This eliminates window system dependencies,
|
||||
although it requires a specially built CTS:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
~/VK-GL-CTS/build/external/openglcts/modules$ PAN_MESA_DEBUG=trace,dump \
|
||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||
|
@@ -51,7 +51,7 @@ vtest
|
||||
The simplest way to test Venus is to use virglrenderer's vtest server. To
|
||||
build virglrenderer with Venus support and to start the vtest server,
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git
|
||||
$ cd virglrenderer
|
||||
@@ -63,7 +63,7 @@ build virglrenderer with Venus support and to start the vtest server,
|
||||
|
||||
In another shell,
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ export VK_ICD_FILENAMES=<path-to-virtio_icd.x86_64.json>
|
||||
$ export VN_DEBUG=vtest
|
||||
@@ -84,7 +84,7 @@ driver, which was upstreamed in kernel 5.16.
|
||||
crosvm is written in Rust. To build crosvm, make sure Rust has been installed
|
||||
and
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone --recurse-submodules \
|
||||
https://chromium.googlesource.com/chromiumos/platform/crosvm
|
||||
@@ -97,7 +97,7 @@ Note that crosvm must be built with ``default-no-sandbox`` or started with
|
||||
|
||||
This is how one might want to start crosvm
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo LD_LIBRARY_PATH=<...> VK_ICD_FILENAMES=<...> ./target/debug/crosvm run \
|
||||
--gpu vulkan=true \
|
||||
@@ -126,7 +126,7 @@ the `Chrome OS kernel
|
||||
|
||||
To build minigbm and to enable minigbm support in virglrenderer,
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://chromium.googlesource.com/chromiumos/platform/minigbm
|
||||
$ cd minigbm
|
||||
@@ -141,7 +141,7 @@ Make sure a host Wayland compositor is running. Replace
|
||||
|
||||
In the guest, build and start sommelier, the special Wayland compositor,
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://chromium.googlesource.com/chromiumos/platform2
|
||||
$ cd platform2/vm_tools/sommelier
|
||||
|
@@ -18,7 +18,7 @@ Build EGL
|
||||
#. Configure your build with the desired client APIs and enable the
|
||||
driver for your hardware. For example:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ meson configure \
|
||||
-D egl=enabled \
|
||||
|
@@ -349,9 +349,6 @@ Core Mesa environment variables
|
||||
* - ``rra``
|
||||
- Radeon Raytracing Analyzer
|
||||
- ``RADV``
|
||||
* - ``ctxroll``
|
||||
- Context rolls
|
||||
- ``RADV``
|
||||
|
||||
- Creating RMV captures requires the ``scripts/setup.sh`` script in the
|
||||
Radeon Developer Tools folder to be run beforehand
|
||||
@@ -1067,7 +1064,6 @@ Rusticl environment variables
|
||||
- ``clc`` dumps all OpenCL C source being compiled
|
||||
- ``program`` dumps compilation logs to stderr
|
||||
- ``sync`` waits on the GPU to complete after every event
|
||||
- ``validate`` validates any internally generated SPIR-Vs, e.g. through compiling OpenCL C code
|
||||
|
||||
.. _clc-env-var:
|
||||
|
||||
@@ -1269,8 +1265,6 @@ RADV driver environment variables
|
||||
disable FMASK compression on MSAA images (GFX6-GFX10.3)
|
||||
``nogpl``
|
||||
disable VK_EXT_graphics_pipeline_library
|
||||
``nogsfastlaunch2``
|
||||
disable GS_FAST_LAUNCH=2 for Mesh shaders (GFX11 only)
|
||||
``nohiz``
|
||||
disable HIZ for depthstencil images
|
||||
``noibs``
|
||||
@@ -1282,9 +1276,7 @@ RADV driver environment variables
|
||||
``nongg``
|
||||
disable NGG for GFX10 and GFX10.3
|
||||
``nonggc``
|
||||
disable NGG culling on GPUs where it's enabled by default (GFX10.3 only).
|
||||
``nongg_gs``
|
||||
disable NGG GS for GFX10 and GFX10.3
|
||||
disable NGG culling on GPUs where it's enabled by default (GFX10.3+ only).
|
||||
``nort``
|
||||
skip executing vkCmdTraceRays and ray queries (RT extensions will still be
|
||||
advertised)
|
||||
@@ -1350,26 +1342,22 @@ RADV driver environment variables
|
||||
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
||||
``localbos``
|
||||
enable local BOs
|
||||
``nggc``
|
||||
enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
|
||||
``nircache``
|
||||
cache per-stage NIR for graphics pipelines
|
||||
``nosam``
|
||||
disable optimizations that get enabled when all VRAM is CPU visible.
|
||||
``pswave32``
|
||||
enable wave32 for pixel shaders (GFX10+)
|
||||
``rtwave32``
|
||||
enable wave32 for ray tracing shaders (GFX11+)
|
||||
``rtwave64``
|
||||
enable wave64 for ray tracing shaders (GFX10-10.3)
|
||||
``nggc``
|
||||
enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
|
||||
``sam``
|
||||
enable optimizations to move more driver internal objects to VRAM.
|
||||
``shader_object``
|
||||
enable experimental implementation of VK_EXT_shader_object
|
||||
``rtwave64``
|
||||
enable wave64 for ray tracing shaders (GFX10+)
|
||||
``transfer_queue``
|
||||
enable experimental transfer queue support (GFX9+, not yet spec compliant)
|
||||
``video_decode``
|
||||
enable experimental video decoding support
|
||||
``gsfastlaunch2``
|
||||
use GS_FAST_LAUNCH=2 for Mesh shaders (GFX11+ dGPUs only)
|
||||
|
||||
.. envvar:: RADV_TEX_ANISO
|
||||
|
||||
@@ -1397,16 +1385,6 @@ RADV driver environment variables
|
||||
enable validation of captured acceleration structures. Can be
|
||||
useful if RRA crashes upon opening a trace.
|
||||
|
||||
.. envvar:: RADV_RRA_TRACE_HISTORY_SIZE
|
||||
|
||||
set the ray history buffer size when capturing RRA traces (default value is 100MiB,
|
||||
small buffers may result in incomplete traces)
|
||||
|
||||
.. envvar:: RADV_RRA_TRACE_RESOLUTION_SCALE
|
||||
|
||||
decrease the resolution used for dumping the ray history resolution when capturing
|
||||
RRA traces. This allows for dumping every Nth invocation along each dispatch dimension.
|
||||
|
||||
.. envvar:: ACO_DEBUG
|
||||
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
@@ -91,7 +91,7 @@ GL 3.2, GLSL 1.50 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
||||
GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||
GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||
GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, crocus)
|
||||
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost)
|
||||
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost, asahi)
|
||||
GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, crocus)
|
||||
GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||
GLX_ARB_create_context_profile DONE
|
||||
@@ -111,43 +111,43 @@ GL 3.3, GLSL 3.30 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (v3d, panfrost)
|
||||
|
||||
|
||||
GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
||||
GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+
|
||||
|
||||
GL_ARB_draw_buffers_blend DONE (freedreno, nv50, softpipe, panfrost, v3d, crocus/gen6+)
|
||||
GL_ARB_draw_indirect DONE (freedreno, softpipe, v3d)
|
||||
GL_ARB_gpu_shader5 DONE (freedreno/a6xx)
|
||||
- 'precise' qualifier DONE (softpipe)
|
||||
- Dynamically uniform sampler array indices DONE (softpipe)
|
||||
- Dynamically uniform UBO array indices DONE (freedreno, softpipe)
|
||||
- Implicit signed -> unsigned conversions DONE (softpipe)
|
||||
- Fused multiply-add DONE (softpipe)
|
||||
- Packing/bitfield/conversion functions DONE (freedreno, softpipe, panfrost)
|
||||
- Enhanced textureGather DONE (freedreno, softpipe, panfrost)
|
||||
- Geometry shader instancing DONE (softpipe)
|
||||
- Geometry shader multiple streams DONE (softpipe)
|
||||
- Enhanced per-sample shading DONE ()
|
||||
- Interpolation functions DONE (softpipe)
|
||||
- New overload resolution rules DONE (softpipe)
|
||||
GL_ARB_draw_buffers_blend DONE (freedreno, nv50, softpipe, panfrost, v3d, asahi, crocus/gen6+)
|
||||
GL_ARB_draw_indirect DONE (freedreno, softpipe, v3d, asahi)
|
||||
GL_ARB_gpu_shader5 DONE (freedreno/a6xx, asahi)
|
||||
- 'precise' qualifier DONE (softpipe, asahi)
|
||||
- Dynamically uniform sampler array indices DONE (softpipe, asahi)
|
||||
- Dynamically uniform UBO array indices DONE (freedreno, softpipe, asahi)
|
||||
- Implicit signed -> unsigned conversions DONE (softpipe, asahi)
|
||||
- Fused multiply-add DONE (softpipe, asahi)
|
||||
- Packing/bitfield/conversion functions DONE (freedreno, softpipe, panfrost, asahi)
|
||||
- Enhanced textureGather DONE (freedreno, softpipe, panfrost, asahi)
|
||||
- Geometry shader instancing DONE (softpipe, asahi)
|
||||
- Geometry shader multiple streams DONE (softpipe, asahi)
|
||||
- Enhanced per-sample shading DONE (asahi)
|
||||
- Interpolation functions DONE (softpipe, asahi)
|
||||
- New overload resolution rules DONE (softpipe, asahi)
|
||||
GL_ARB_gpu_shader_fp64 DONE (freedreno/a6xx, softpipe)
|
||||
GL_ARB_sample_shading DONE (freedreno/a6xx, nv50, panfrost, crocus/gen6+)
|
||||
GL_ARB_sample_shading DONE (freedreno/a6xx, nv50, panfrost, crocus/gen6+, asahi)
|
||||
GL_ARB_shader_subroutine DONE (freedreno, nv50, softpipe, crocus/gen6+)
|
||||
GL_ARB_tessellation_shader DONE (freedreno/a6xx)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, softpipe, panfrost, crocus/gen6+)
|
||||
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+)
|
||||
GL_ARB_texture_gather DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, softpipe, panfrost, asahi, crocus/gen6+)
|
||||
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+, asahi)
|
||||
GL_ARB_texture_gather DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||
GL_ARB_texture_query_lod DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus/gen5+)
|
||||
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, nv50, softpipe, v3d, panfrost, crocus/gen6+)
|
||||
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, softpipe)
|
||||
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, nv50, softpipe, v3d, panfrost, asahi, crocus/gen6+)
|
||||
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, softpipe, asahi)
|
||||
|
||||
|
||||
GL 4.1, GLSL 4.10 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
||||
GL 4.1, GLSL 4.10 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+
|
||||
|
||||
GL_ARB_ES2_compatibility DONE (freedreno, nv50, softpipe, v3d, vc4, panfrost, lima, crocus)
|
||||
GL_ARB_get_program_binary DONE (freedreno, v3d, 0 or 1 binary formats)
|
||||
GL_ARB_ES2_compatibility DONE (freedreno, nv50, softpipe, v3d, vc4, panfrost, lima, asahi, crocus)
|
||||
GL_ARB_get_program_binary DONE (freedreno, v3d, asahi, 0 or 1 binary formats)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_shader_precision DONE (freedreno/a6xx, all drivers that support GLSL 4.10)
|
||||
GL_ARB_shader_precision DONE (freedreno/a6xx, all drivers that support GLSL 4.10, asahi)
|
||||
GL_ARB_vertex_attrib_64bit DONE (freedreno/a6xx, softpipe)
|
||||
GL_ARB_viewport_array DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
||||
GL_ARB_viewport_array DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||
|
||||
|
||||
GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
||||
@@ -166,38 +166,38 @@ GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v
|
||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7.5+, asahi
|
||||
GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7.5+
|
||||
|
||||
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
|
||||
GL_ARB_clear_buffer_object DONE (all drivers)
|
||||
GL_ARB_compute_shader DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
||||
GL_ARB_compute_shader DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||
GL_ARB_copy_image DONE (freedreno/a6xx, nv50, softpipe, v3d, crocus)
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_fragment_layer_viewport DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, crocus/gen7+)
|
||||
GL_ARB_fragment_layer_viewport DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, asahi, crocus/gen7+)
|
||||
GL_ARB_internalformat_query2 DONE (all drivers)
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
GL_ARB_multi_draw_indirect DONE (freedreno, softpipe, v3d, crocus/gen7+)
|
||||
GL_ARB_multi_draw_indirect DONE (freedreno, softpipe, v3d, crocus/gen7+, asahi)
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_robust_buffer_access_behavior DONE (freedreno)
|
||||
GL_ARB_shader_image_size DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
||||
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
||||
GL_ARB_stencil_texturing DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_shader_image_size DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||
GL_ARB_stencil_texturing DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||
GL_ARB_texture_buffer_range DONE (freedreno, nv50, softpipe, v3d, crocus)
|
||||
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_texture_view DONE (freedreno, nv50, softpipe, v3d, crocus/gen7+)
|
||||
GL_ARB_texture_view DONE (freedreno, nv50, softpipe, v3d, asahi, crocus/gen7+)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12, asahi
|
||||
GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12
|
||||
|
||||
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
|
||||
GL_ARB_buffer_storage DONE (freedreno, nv50, v3d, vc4, lima, panfrost, softpipe, etnaviv, crocus)
|
||||
GL_ARB_buffer_storage DONE (freedreno, nv50, v3d, vc4, lima, panfrost, asahi, softpipe, etnaviv, crocus)
|
||||
GL_ARB_clear_texture DONE (all drivers)
|
||||
GL_ARB_enhanced_layouts DONE (freedreno/a3xx+, nv50, softpipe, crocus)
|
||||
GL_ARB_enhanced_layouts DONE (freedreno/a3xx+, nv50, softpipe, crocus, asahi)
|
||||
- compile-time constant expressions DONE
|
||||
- explicit byte offsets for blocks DONE
|
||||
- forced alignment within blocks DONE
|
||||
@@ -206,37 +206,37 @@ GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v
|
||||
- input/output block locations DONE
|
||||
GL_ARB_multi_bind DONE (all drivers)
|
||||
GL_ARB_query_buffer_object DONE (freedreno/a6xx)
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus)
|
||||
GL_ARB_texture_stencil8 DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, nv50, softpipe, panfrost, crocus)
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi, crocus)
|
||||
GL_ARB_texture_stencil8 DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, nv50, softpipe, panfrost, asahi, crocus)
|
||||
|
||||
GL 4.5, GLSL 4.50 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12, asahi
|
||||
GL 4.5, GLSL 4.50 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12
|
||||
|
||||
GL_ARB_ES3_1_compatibility DONE (freedreno/a6xx, softpipe)
|
||||
GL_ARB_clip_control DONE (freedreno, nv50, softpipe, lima, crocus)
|
||||
GL_ARB_conditional_render_inverted DONE (freedreno, nv50, softpipe, panfrost, crocus/gen6+)
|
||||
GL_ARB_cull_distance DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
||||
GL_ARB_derivative_control DONE (freedreno/a3xx+, nv50, softpipe, crocus/gen7+)
|
||||
GL_ARB_clip_control DONE (freedreno, nv50, softpipe, lima, crocus, asahi)
|
||||
GL_ARB_conditional_render_inverted DONE (freedreno, nv50, softpipe, panfrost, asahi, crocus/gen6+)
|
||||
GL_ARB_cull_distance DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||
GL_ARB_derivative_control DONE (freedreno/a3xx+, nv50, softpipe, asahi, crocus/gen7+)
|
||||
GL_ARB_direct_state_access DONE (all drivers)
|
||||
GL_ARB_get_texture_sub_image DONE (all drivers)
|
||||
GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+)
|
||||
GL_ARB_texture_barrier DONE (freedreno, nv50, v3d, vc4, lima, crocus)
|
||||
GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+, asahi)
|
||||
GL_ARB_texture_barrier DONE (freedreno, nv50, vc4, lima, crocus)
|
||||
GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
|
||||
GL_KHR_robustness DONE (freedreno)
|
||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||
|
||||
GL 4.6, GLSL 4.60 -- all DONE: radeonsi, virgl, zink, iris, crocus/gen7+, d3d12, asahi
|
||||
GL 4.6, GLSL 4.60 -- all DONE: radeonsi, virgl, zink, iris, crocus/gen7+, d3d12
|
||||
|
||||
GL_ARB_gl_spirv DONE (freedreno, llvmpipe)
|
||||
GL_ARB_indirect_parameters DONE (freedreno/a6xx+, nvc0, llvmpipe, virgl)
|
||||
GL_ARB_indirect_parameters DONE (freedreno/a6xx+, nvc0, llvmpipe, virgl, asahi)
|
||||
GL_ARB_pipeline_statistics_query DONE (freedreno/a6xx+, nvc0, r600, llvmpipe, softpipe, crocus/gen6+)
|
||||
GL_ARB_polygon_offset_clamp DONE (freedreno, nv50, nvc0, r600, llvmpipe, v3d, panfrost, crocus)
|
||||
GL_ARB_shader_atomic_counter_ops DONE (freedreno/a5xx+, nvc0, r600, llvmpipe, softpipe, v3d)
|
||||
GL_ARB_shader_draw_parameters DONE (freedreno/a6xx+, llvmpipe, nvc0, crocus/gen6+)
|
||||
GL_ARB_shader_group_vote DONE (freedreno/a6xx, nvc0, llvmpipe, crocus)
|
||||
GL_ARB_spirv_extensions DONE (freedreno, llvmpipe)
|
||||
GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, llvmpipe, v3d, panfrost/g72+, crocus)
|
||||
GL_ARB_transform_feedback_overflow_query DONE (freedreno/a6xx+, nvc0, llvmpipe, softpipe, crocus/gen6+)
|
||||
GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, llvmpipe, v3d, panfrost/g72+, asahi, crocus)
|
||||
GL_ARB_transform_feedback_overflow_query DONE (freedreno/a6xx+, nvc0, llvmpipe, softpipe, crocus/gen6+, asahi)
|
||||
GL_KHR_no_error DONE (all drivers)
|
||||
|
||||
These are the extensions cherry-picked to make GLES 3.1
|
||||
@@ -246,7 +246,7 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl,
|
||||
GL_ARB_compute_shader DONE (freedreno/a5xx+, crocus/gen7+)
|
||||
GL_ARB_draw_indirect DONE (freedreno, crocus/gen7+)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, crocus/gen7+)
|
||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, asahi, crocus/gen7+)
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, crocus/gen7+)
|
||||
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, crocus/gen7+)
|
||||
@@ -268,28 +268,28 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl,
|
||||
glGetBooleani_v - restrict to GLES enums
|
||||
gl_HelperInvocation support DONE (r600, panfrost, crocus)
|
||||
|
||||
GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zink, iris, crocus/gen7.5+, asahi
|
||||
GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zink, iris, crocus/gen7.5+
|
||||
|
||||
GL_EXT_color_buffer_float DONE (all drivers)
|
||||
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, crocus/gen4.5+)
|
||||
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, asahi, crocus/gen4.5+)
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_KHR_robustness DONE (freedreno, nvc0, r600)
|
||||
GL_KHR_texture_compression_astc_ldr DONE (freedreno, r600, v3d, vc4, panfrost, softpipe, lima, crocus/gen6+)
|
||||
GL_KHR_texture_compression_astc_ldr DONE (freedreno, r600, v3d, vc4, panfrost, softpipe, lima, asahi, crocus/gen6+)
|
||||
GL_OES_copy_image DONE (all drivers)
|
||||
GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
|
||||
GL_OES_draw_elements_base_vertex DONE (all drivers)
|
||||
GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d)
|
||||
GL_OES_gpu_shader5 DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5)
|
||||
GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d, asahi)
|
||||
GL_OES_gpu_shader5 DONE (freedreno/a6xx, asahi, all drivers that support GL_ARB_gpu_shader5)
|
||||
GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, nvc0, r600, softpipe, v3d)
|
||||
GL_OES_sample_shading DONE (freedreno/a6xx, nvc0, r600, panfrost, d3d12)
|
||||
GL_OES_sample_variables DONE (freedreno/a6xx, nvc0, r600, panfrost/bifrost, crocus/gen7+)
|
||||
GL_OES_shader_image_atomic DONE (v3d, all drivers that support GL_ARB_shader_image_load_store)
|
||||
GL_OES_sample_shading DONE (freedreno/a6xx, asahi, nvc0, r600, panfrost, d3d12)
|
||||
GL_OES_sample_variables DONE (freedreno/a6xx, asahi, nvc0, r600, panfrost/bifrost, crocus/gen7+)
|
||||
GL_OES_shader_image_atomic DONE (asahi, v3d, all drivers that support GL_ARB_shader_image_load_store)
|
||||
GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1)
|
||||
GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, nvc0, r600)
|
||||
GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, nvc0, r600, asahi)
|
||||
GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader)
|
||||
GL_OES_texture_border_clamp DONE (all drivers)
|
||||
GL_OES_texture_buffer DONE (freedreno, nvc0, r600, softpipe, panfrost, crocus/gen6+)
|
||||
GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe)
|
||||
GL_OES_texture_buffer DONE (freedreno, nvc0, r600, softpipe, panfrost, asahi, crocus/gen6+)
|
||||
GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe, asahi)
|
||||
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
|
||||
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
|
||||
@@ -297,19 +297,19 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
||||
|
||||
GL_ARB_bindless_texture DONE (nvc0, radeonsi, zink)
|
||||
GL_ARB_cl_event not started
|
||||
GL_ARB_compute_variable_group_size DONE (freedreno/a4xx+, nvc0, radeonsi, zink, iris, crocus/gen7+, asahi)
|
||||
GL_ARB_ES3_2_compatibility DONE (freedreno/a6xx, radeonsi, virgl, zink, iris, crocus/gen7.5+, asahi)
|
||||
GL_ARB_compute_variable_group_size DONE (freedreno/a4xx+, nvc0, radeonsi, zink, iris, crocus/gen7+)
|
||||
GL_ARB_ES3_2_compatibility DONE (freedreno/a6xx, radeonsi, virgl, zink, iris, crocus/gen7.5+)
|
||||
GL_ARB_fragment_shader_interlock DONE (zink, iris/gen9+)
|
||||
GL_ARB_gpu_shader_int64 DONE (freedreno/a6xx, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12, iris, crocus/gen8, asahi)
|
||||
GL_ARB_parallel_shader_compile DONE (freedreno, radeonsi, etnaviv, zink, iris, crocus/gen6+, asahi)
|
||||
GL_ARB_gpu_shader_int64 DONE (freedreno/a6xx, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12, iris, crocus/gen8)
|
||||
GL_ARB_parallel_shader_compile DONE (freedreno, radeonsi, etnaviv, zink, iris, crocus/gen6+)
|
||||
GL_ARB_post_depth_coverage DONE (freedreno/a6xx, nvc0, radeonsi, llvmpipe, zink, iris/gen9+)
|
||||
GL_ARB_robustness_isolation not started
|
||||
GL_ARB_sample_locations DONE (freedreno/a6xx, nvc0, zink)
|
||||
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, nvc0, r600, radeonsi, softpipe, virgl, zink, asahi, iris, crocus)
|
||||
GL_ARB_shader_ballot DONE (nvc0, radeonsi, zink, iris, crocus/gen8, d3d12, asahi)
|
||||
GL_ARB_shader_ballot DONE (nvc0, radeonsi, zink, iris, crocus/gen8)
|
||||
GL_ARB_shader_clock DONE (nv50, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7+)
|
||||
GL_ARB_shader_stencil_export DONE (r600, radeonsi, softpipe, llvmpipe, virgl, panfrost, zink, asahi, iris/gen9+)
|
||||
GL_ARB_shader_viewport_layer_array DONE (freedreno/a6xx, nvc0, radeonsi, zink, iris, crocus/gen6+, asahi)
|
||||
GL_ARB_shader_viewport_layer_array DONE (freedreno/a6xx, nvc0, radeonsi, zink, iris, crocus/gen6+)
|
||||
GL_ARB_shading_language_include DONE
|
||||
GL_ARB_sparse_buffer DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_sparse_texture DONE (radeonsi/gfx9+, zink)
|
||||
@@ -319,13 +319,13 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
||||
GL_ARM_shader_framebuffer_fetch_depth_stencil DONE (llvmpipe)
|
||||
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi)
|
||||
GL_EXT_shader_framebuffer_fetch_non_coherent DONE (freedreno/a6xx, iris, llvmpipe, panfrost, virgl, zink, asahi)
|
||||
GL_EXT_color_buffer_half_float DONE (freedreno, iris, llvmpipe, nv50, nvc0, radeonsi, zink, crocus, asahi)
|
||||
GL_EXT_color_buffer_half_float DONE (freedreno, iris, llvmpipe, nv50, nvc0, radeonsi, zink, crocus)
|
||||
GL_EXT_depth_bounds_test DONE (freedreno/a6xx, nv50, nvc0, radeonsi, softpipe, zink, iris/gen12+)
|
||||
GL_EXT_memory_object DONE (freedreno, radeonsi, llvmpipe, zink, d3d12, iris, crocus/gen7+)
|
||||
GL_EXT_memory_object_fd DONE (freedreno, radeonsi, llvmpipe, zink, iris, crocus/gen7+)
|
||||
GL_EXT_memory_object_win32 DONE (zink, d3d12)
|
||||
GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima)
|
||||
GL_EXT_render_snorm DONE (freedreno/a6xx, r600, radeonsi, softpipe, zink, panfrost/bifrost+, iris, asahi)
|
||||
GL_EXT_render_snorm DONE (freedreno/a6xx, r600, radeonsi, softpipe, zink, panfrost/bifrost+, iris)
|
||||
GL_EXT_semaphore DONE (radeonsi, zink, d3d12, iris, crocus)
|
||||
GL_EXT_semaphore_fd DONE (radeonsi, zink, iris, crocus)
|
||||
GL_EXT_semaphore_win32 DONE (zink, d3d12)
|
||||
@@ -400,7 +400,7 @@ GL_EXT_direct_state_access additions from other extensions (complete list):
|
||||
GL_EXT_external_buffer n/a
|
||||
GL_EXT_separate_shader_objects n/a
|
||||
GL_EXT_sparse_texture n/a
|
||||
GL_EXT_texture_storage DONE
|
||||
GL_EXT_texture_storage n/a
|
||||
GL_EXT_vertex_attrib_64bit DONE
|
||||
GL_EXT_EGL_image_storage n/a
|
||||
GL_NV_bindless_texture n/a
|
||||
@@ -420,9 +420,9 @@ we DO NOT WANT implementations of these extensions for Mesa.
|
||||
|
||||
Vulkan 1.0 -- all DONE: anv, dzn, lvp, nvk, radv, tu, v3dv, vn
|
||||
|
||||
Vulkan 1.1 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
||||
Vulkan 1.1 -- all DONE: anv, lvp, radv, tu, vn
|
||||
|
||||
VK_KHR_16bit_storage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu/a650, v3dv, vn)
|
||||
VK_KHR_16bit_storage DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, tu/a650, v3dv, vn)
|
||||
VK_KHR_bind_memory2 DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_dedicated_allocation DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_descriptor_update_template DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
@@ -446,10 +446,10 @@ Vulkan 1.1 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
||||
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_variable_pointers DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
|
||||
Vulkan 1.2 -- all DONE: anv, nvk, tu, vn
|
||||
Vulkan 1.2 -- all DONE: anv, tu, vn
|
||||
|
||||
VK_KHR_8bit_storage DONE (anv, dzn, hasvk, lvp, nvk, radv, v3dv, vn)
|
||||
VK_KHR_buffer_device_address DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_8bit_storage DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, v3dv, vn)
|
||||
VK_KHR_buffer_device_address DONE (anv/gen8+, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||
@@ -458,32 +458,32 @@ Vulkan 1.2 -- all DONE: anv, nvk, tu, vn
|
||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_separate_depth_stencil_layouts DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_atomic_int64 DONE (anv, lvp, nvk, radv, vn)
|
||||
VK_KHR_shader_float16_int8 DONE (anv, dzn, hasvk, lvp, radv, tu, vn)
|
||||
VK_KHR_shader_float_controls DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_extended_types DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_KHR_shader_atomic_int64 DONE (anv/gen9+, lvp, nvk, radv, vn)
|
||||
VK_KHR_shader_float16_int8 DONE (anv/gen8+, dzn, hasvk, lvp, radv, tu, vn)
|
||||
VK_KHR_shader_float_controls DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_extended_types DONE (anv/gen8+, hasvk, lvp, radv, tu, vn)
|
||||
VK_KHR_spirv_1_4 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_descriptor_indexing DONE (anv, dzn, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_descriptor_indexing DONE (anv/gen9+, dzn, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_sampler_filter_minmax DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv/gfx7+, tu, vn)
|
||||
VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_shader_viewport_index_layer DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
|
||||
Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
||||
Vulkan 1.3 -- all DONE: anv, radv, tu, lvp, vn
|
||||
|
||||
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
@@ -501,14 +501,13 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
||||
|
||||
Khronos extensions that are not part of any Vulkan version:
|
||||
|
||||
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+)
|
||||
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||
VK_KHR_android_surface not started
|
||||
VK_KHR_calibrated_timestamps DONE (anv, radv)
|
||||
VK_KHR_cooperative_matrix DONE (anv, radv/gfx11+)
|
||||
VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv)
|
||||
VK_KHR_display DONE (anv, nvk, pvr, radv, tu, v3dv)
|
||||
VK_KHR_calibrated_timestamps DONE (radv)
|
||||
VK_KHR_cooperative_matrix DONE (radv/gfx11+)
|
||||
VK_KHR_deferred_host_operations DONE (anv, hasvk, radv)
|
||||
VK_KHR_display DONE (anv, pvr, radv, tu, v3dv)
|
||||
VK_KHR_display_swapchain not started
|
||||
VK_KHR_dynamic_rendering_local_read DONE (lvp)
|
||||
VK_KHR_external_fence_fd DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_external_fence_win32 not started
|
||||
VK_KHR_external_memory_fd DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
@@ -516,37 +515,30 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_KHR_external_semaphore_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_external_semaphore_win32 DONE (dzn)
|
||||
VK_KHR_fragment_shader_barycentric DONE (nvk/Turing+, radv/gfx10.3+)
|
||||
VK_KHR_fragment_shading_rate DONE (anv/gen11+, radv/gfx10.3+, vn)
|
||||
VK_KHR_get_display_properties2 DONE (anv, nvk, pvr, radv, tu, v3dv)
|
||||
VK_KHR_fragment_shading_rate DONE (anv/gen11+, radv/gfx10.3+)
|
||||
VK_KHR_get_display_properties2 DONE (anv, pvr, radv, tu, v3dv)
|
||||
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_global_priority DONE (anv, radv, tu)
|
||||
VK_KHR_incremental_present DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_index_type_uint8 DONE (anv, nvk, radv, tu, v3dv)
|
||||
VK_KHR_line_rasterization DONE (anv, nvk, radv, tu, v3dv)
|
||||
VK_KHR_load_store_op_none DONE (anv, nvk, radv, tu, v3dv)
|
||||
VK_KHR_maintenance5 DONE (anv, lvp, nvk, radv, tu)
|
||||
VK_KHR_maintenance6 DONE (anv, lvp)
|
||||
VK_KHR_performance_query DONE (anv, radv/gfx10.3+, tu, v3dv)
|
||||
VK_KHR_global_priority DONE (radv, tu)
|
||||
VK_KHR_incremental_present DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance5 DONE (anv, lvp, radv, tu)
|
||||
VK_KHR_maintenance6 DONE (lvp)
|
||||
VK_KHR_performance_query DONE (anv/gen8+, radv/gfx10.3+, tu, v3dv)
|
||||
VK_KHR_pipeline_executable_properties DONE (anv, nvk, hasvk, radv, tu, v3dv)
|
||||
VK_KHR_pipeline_library DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_KHR_present_wait DONE (anv, nvk, radv, tu, x11/display)
|
||||
VK_KHR_pipeline_library DONE (anv, lvp, radv, tu, vn)
|
||||
VK_KHR_present_wait DONE (anv, radv, tu, x11/display)
|
||||
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+)
|
||||
VK_KHR_ray_query DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+)
|
||||
VK_KHR_ray_tracing_position_fetch DONE (radv/gfx10.3+)
|
||||
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)
|
||||
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_maximal_reconvergence DONE (lvp, radv)
|
||||
VK_KHR_shader_subgroup_rotate DONE (anv, radv)
|
||||
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv)
|
||||
VK_KHR_shader_quad_control DONE (radv)
|
||||
VK_KHR_shared_presentable_image not started
|
||||
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, v3dv, vn)
|
||||
VK_KHR_swapchain DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_vertex_attribute_divisor DONE (anv, nvk, radv, tu, v3dv)
|
||||
VK_KHR_vertex_attribute_divisor DONE (radv)
|
||||
VK_KHR_wayland_surface DONE (anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, v3dv)
|
||||
VK_KHR_win32_keyed_mutex not started
|
||||
@@ -554,39 +546,38 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_xlib_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_acquire_xlib_display DONE (anv, lvp, nvk, radv, tu, v3dv)
|
||||
VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, lvp, radv)
|
||||
VK_EXT_attachment_feedback_loop_layout DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_attachment_feedback_loop_dynamic_state DONE (lvp, radv)
|
||||
VK_EXT_attachment_feedback_loop_layout DONE (lvp, nvk, radv, tu, v3dv)
|
||||
VK_EXT_border_color_swizzle DONE (anv, hasvk, lvp, nvk, radv/gfx10+, tu, v3dv, vn)
|
||||
VK_EXT_buffer_device_address DONE (anv, hasvk, nvk, radv)
|
||||
VK_EXT_buffer_device_address DONE (anv/gen8+, hasvk, nvk, radv)
|
||||
VK_EXT_calibrated_timestamps DONE (anv, hasvk, lvp, radv, vn)
|
||||
VK_EXT_color_write_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_conditional_rendering DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_conservative_rasterization DONE (anv, radv, vn)
|
||||
VK_EXT_conservative_rasterization DONE (anv/gen9+, radv, vn)
|
||||
VK_EXT_custom_border_color DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_debug_marker DONE (radv)
|
||||
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, pvr, radv, tu, v3dv)
|
||||
VK_EXT_depth_bias_control DONE (anv, nvk, radv)
|
||||
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_depth_range_unrestricted DONE (anv/gen20+, radv, lvp)
|
||||
VK_EXT_descriptor_buffer DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_descriptor_buffer DONE (lvp, radv, tu)
|
||||
VK_EXT_device_fault DONE (radv)
|
||||
VK_EXT_device_memory_report DONE (vn)
|
||||
VK_EXT_direct_mode_display DONE (anv, lvp, nvk, radv, tu, v3dv)
|
||||
VK_EXT_direct_mode_display DONE (anv, lvp, radv, tu, v3dv)
|
||||
VK_EXT_discard_rectangles DONE (radv)
|
||||
VK_EXT_display_control DONE (anv, hasvk, nvk, radv, tu)
|
||||
VK_EXT_display_surface_counter DONE (anv, lvp, nvk, radv, tu)
|
||||
VK_EXT_display_control DONE (anv, hasvk, radv, tu)
|
||||
VK_EXT_display_surface_counter DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_dynamic_rendering_unused_attachments DONE (anv, nvk, radv, vn)
|
||||
VK_EXT_extended_dynamic_state3 DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_external_memory_acquire_unmodified DONE (radv)
|
||||
VK_EXT_external_memory_dma_buf DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_external_memory_host DONE (anv, hasvk, lvp, radv)
|
||||
VK_EXT_filter_cubic DONE (tu/a650)
|
||||
VK_EXT_fragment_shader_interlock DONE (anv, radv/gfx9+, vn)
|
||||
VK_EXT_fragment_shader_interlock DONE (anv/gen9+, radv/gfx9+, vn)
|
||||
VK_EXT_global_priority DONE (anv, hasvk, radv, tu)
|
||||
VK_EXT_global_priority_query DONE (anv, hasvk, radv, tu)
|
||||
VK_EXT_graphics_pipeline_library DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_headless_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_graphics_pipeline_library DONE (anv, lvp, radv, tu, vn)
|
||||
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_image_compression_control DONE (radv)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn)
|
||||
@@ -595,19 +586,19 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_EXT_index_type_uint8 DONE (anv, hasvk, nvk, lvp, panvk, radv/gfx8+, tu, v3dv, vn)
|
||||
VK_EXT_line_rasterization DONE (anv, hasvk, nvk, lvp, radv, tu, v3dv, vn)
|
||||
VK_EXT_load_store_op_none DONE (anv, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_memory_budget DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_memory_budget DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||
VK_EXT_memory_priority DONE (lvp, radv)
|
||||
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv)
|
||||
VK_EXT_multi_draw DONE (anv, hasvk, lvp, nvk, radv, tu, vn, v3dv)
|
||||
VK_EXT_multisampled_render_to_single_sampled DONE (lvp)
|
||||
VK_EXT_nested_command_buffer DONE (anv, lvp)
|
||||
VK_EXT_nested_command_buffer DONE (lvp)
|
||||
VK_EXT_non_seamless_cube_map DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_pageable_device_local_memory DONE (lvp)
|
||||
VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn)
|
||||
VK_EXT_physical_device_drm DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_pipeline_library_group_handles DONE (anv, radv)
|
||||
VK_EXT_pipeline_robustness DONE (anv, radv, v3dv)
|
||||
VK_EXT_post_depth_coverage DONE (anv/gfx11+, lvp, radv/gfx10+)
|
||||
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv/gfx10+)
|
||||
VK_EXT_primitive_topology_list_restart DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_primitives_generated_query DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_provoking_vertex DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
@@ -616,15 +607,13 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_EXT_robustness2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_sample_locations DONE (anv, hasvk, nvk, radv/gfx9-, tu/a650)
|
||||
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv)
|
||||
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv)
|
||||
VK_EXT_shader_atomic_float2 DONE (anv/gen9+, lvp, radv)
|
||||
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv)
|
||||
VK_EXT_shader_object DONE (lvp, nvk)
|
||||
VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn)
|
||||
VK_EXT_shader_object DONE (lvp)
|
||||
VK_EXT_shader_stencil_export DONE (anv/gen9+, lvp, radv, tu, vn)
|
||||
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
||||
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv)
|
||||
VK_EXT_shader_module_identifier DONE (anv, hasvk, nvk, radv, tu, v3dv)
|
||||
VK_EXT_surface_maintenance1 DONE (nvk, radv)
|
||||
VK_EXT_swapchain_maintenance1 DONE (nvk, radv)
|
||||
VK_EXT_transform_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_vertex_input_dynamic_state DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
@@ -636,9 +625,9 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_GOOGLE_user_type DONE (anv, hasvk, radv)
|
||||
VK_IMG_filter_cubic DONE (tu/a650)
|
||||
VK_NV_compute_shader_derivatives DONE (anv, hasvk, radv)
|
||||
VK_EXT_acquire_drm_display DONE (anv, nvk, radv, tu, v3dv)
|
||||
VK_EXT_acquire_drm_display DONE (anv, radv, tu, v3dv)
|
||||
VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, radv, tu, vn)
|
||||
VK_AMD_buffer_marker DONE (anv, radv, tu)
|
||||
VK_AMD_buffer_marker DONE (radv, tu)
|
||||
VK_AMD_device_coherent_memory DONE (radv)
|
||||
VK_AMD_draw_indirect_count DONE (radv)
|
||||
VK_AMD_gcn_shader DONE (radv)
|
||||
@@ -655,13 +644,13 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_AMD_shader_fragment_mask DONE (radv/gfx10.3-)
|
||||
VK_AMD_shader_image_load_store_lod DONE (radv)
|
||||
VK_AMD_shader_trinary_minmax DONE (radv)
|
||||
VK_AMD_texture_gather_bias_lod DONE (anv, radv)
|
||||
VK_AMD_texture_gather_bias_lod DONE (radv)
|
||||
VK_ARM_rasterization_order_attachment_access DONE (lvp, tu)
|
||||
VK_EXT_mutable_descriptor_type DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_swapchain_colorspace DONE (anv, nvk, radv, tu)
|
||||
VK_EXT_swapchain_colorspace DONE (radv, anv, tu)
|
||||
VK_EXT_depth_clamp_zero_one DONE (anv, radv)
|
||||
VK_INTEL_shader_integer_functions2 DONE (anv, hasvk, radv)
|
||||
VK_KHR_map_memory2 DONE (anv, nvk, radv, tu)
|
||||
VK_KHR_map_memory2 DONE (anv, nvk, radv)
|
||||
|
||||
|
||||
|
||||
@@ -964,7 +953,7 @@ Rusticl extensions that are not part of any OpenCL version:
|
||||
cl_khr_subgroup_rotate not started
|
||||
cl_khr_subgroup_shuffle DONE (iris, llvmpipe, radeonsi)
|
||||
cl_khr_subgroup_shuffle_relative DONE (iris, llvmpipe, radeonsi)
|
||||
cl_khr_suggested_local_work_size DONE
|
||||
cl_khr_suggested_local_work_size not started
|
||||
cl_khr_terminate_context not started
|
||||
cl_khr_throttle_hints not started
|
||||
cl_khr_work_group_uniform_arithmetic not started
|
||||
|
@@ -20,7 +20,7 @@ Build
|
||||
|
||||
Beware: Most Direct3D games are 32-bit, and thus need a 32-bit version of Mesa.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ meson configure \
|
||||
-D gallium-nine=true \
|
||||
@@ -43,6 +43,6 @@ Run
|
||||
|
||||
Before running your application in Wine, verify that everything works as expected by running:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
$ wine ninewinecfg
|
||||
|
@@ -20,7 +20,7 @@ behavior.
|
||||
Portal 2
|
||||
========
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
1030842 glXSwapBuffers(dpy = 0x82a8000, drawable = 20971540)
|
||||
1030876 glBufferDataARB(target = GL_ELEMENT_ARRAY_BUFFER, size = 65536, data = NULL, usage = GL_DYNAMIC_DRAW)
|
||||
@@ -54,7 +54,7 @@ the GPU access from the previous frame has completed. This pattern of
|
||||
incrementing ``glBufferSubData()`` offsets interleaved with draws from that data
|
||||
is common among newer Valve games.
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
[ during setup ]
|
||||
|
||||
@@ -93,7 +93,7 @@ during setup.
|
||||
Terraria
|
||||
========
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
167581 glXSwapBuffers(dpy = 0x3004630, drawable = 25165844)
|
||||
|
||||
@@ -114,7 +114,7 @@ synchronization.
|
||||
Don't Starve
|
||||
============
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
7251917 glGenBuffers(n = 1, buffers = &115052)
|
||||
7251918 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 115052)
|
||||
@@ -142,7 +142,7 @@ always happen at the end of the next frame.
|
||||
Euro Truck Simulator
|
||||
====================
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
[usage of VBO 14,15]
|
||||
[...]
|
||||
@@ -199,7 +199,7 @@ different buffer.
|
||||
Plague Inc
|
||||
==========
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
1640732 glXSwapBuffers(dpy = 0xb218f20, drawable = 23068674)
|
||||
1640733 glClientWaitSync(sync = 0xb4141430, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||
@@ -246,7 +246,7 @@ ranges when in explicit mode.
|
||||
Darkest Dungeon
|
||||
===============
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
938384 glXSwapBuffers(dpy = 0x377fcd0, drawable = 23068692)
|
||||
|
||||
@@ -276,7 +276,7 @@ frame.
|
||||
Tabletop Simulator
|
||||
==================
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
1287594 glXSwapBuffers(dpy = 0x3e10810, drawable = 23068692)
|
||||
1287595 glClientWaitSync(sync = 0x7abf554e37b0, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||
@@ -306,7 +306,7 @@ the current frame, so the unsynchronized access to the buffers is safe.
|
||||
Hollow Knight
|
||||
=============
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
1873034 glXSwapBuffers(dpy = 0x28609d0, drawable = 23068692)
|
||||
1873035 glClientWaitSync(sync = 0x7b1a5ca6e130, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||
@@ -344,7 +344,7 @@ frame's buffer.
|
||||
Borderlands 2
|
||||
=============
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
3561998 glFlush()
|
||||
3562004 glXSwapBuffers(dpy = 0xbaf0f90, drawable = 23068705)
|
||||
|
@@ -426,7 +426,6 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_LEGACY_MATH_RULES``: Whether NIR shaders support the
|
||||
``shader_info.use_legacy_math_rules`` flag (see documentation there), and
|
||||
TGSI shaders support the corresponding ``TGSI_PROPERTY_LEGACY_MATH_RULES``.
|
||||
* ``PIPE_CAP_FP16``: Whether 16-bit float operations are supported.
|
||||
* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations
|
||||
are supported.
|
||||
* ``PIPE_CAP_INT64``: Whether 64-bit integer operations are supported.
|
||||
@@ -564,8 +563,6 @@ The integer capabilities:
|
||||
1. ``DRM_PRIME_CAP_IMPORT``: resource_from_handle is supported
|
||||
2. ``DRM_PRIME_CAP_EXPORT``: resource_get_handle is supported
|
||||
|
||||
* ``PIPE_CAP_CL_GL_SHARING``: True if driver supports everything required by a frontend implementing the CL extension, and
|
||||
also supports importing/exporting all of pipe_texture_target via dma buffers.
|
||||
* ``PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA``: Whether VDPAU, VAAPI, and
|
||||
OpenMAX should use a compute-based blit instead of pipe_context::blit and compute pipeline for compositing images.
|
||||
* ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader interlock
|
||||
|
@@ -14,7 +14,7 @@ Any traces can be made with trace-cmd. The Gpuvis repository contains
|
||||
`scripts <https://github.com/mikesart/gpuvis/tree/master/sample>`__ for
|
||||
configuring the markers needed for GPU events. To start tracing:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sh trace-cmd-setup.sh && sh trace-cmd-start-tracing.sh
|
||||
# Start your game etc. Then to capture a trace
|
||||
@@ -30,7 +30,7 @@ Run on Steamos
|
||||
Steamos includes a script (`gpu-trace <https://github.com/lostgoat/gpu-trace>`__)
|
||||
to capture traces.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo gpu-trace
|
||||
# Press Ctrl+C to stop capture and open report in gpuvis
|
||||
@@ -39,7 +39,7 @@ Note that on Steamos gpuvis is actually not installed by default, but the
|
||||
script does write a gpu-trace.zip file in the current working directory. To
|
||||
open it you'll want to do the following on your development machine:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
scp sd-host:gpu-trace.zip ./
|
||||
unzip gpu-trace.zip
|
||||
@@ -60,7 +60,7 @@ PRESSURE_VESSEL_DEVEL=1 to set up the tracing filesystem so the trace marker
|
||||
can be written. This can e.g. be done by going to the game properties in
|
||||
Steam and setting the command line to
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
PRESSURE_VESSEL_DEVEL=1 %command%
|
||||
|
||||
|
@@ -76,7 +76,6 @@ Linux, FreeBSD, and other operating systems.
|
||||
gallium-nine
|
||||
viewperf
|
||||
xlibdriver
|
||||
teflon
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
@@ -46,7 +46,7 @@ Third party/extra tools.
|
||||
respectively, (or later) should work. On Windows with MinGW, install
|
||||
Flex and Bison with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
mingw-get install msys-flex msys-bison
|
||||
|
||||
@@ -68,7 +68,7 @@ configure error message.
|
||||
Here are some common ways to retrieve most/all of the dependencies based
|
||||
on the packaging tool used by your distro.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
|
||||
yum-builddep mesa # yum Fedora, OpenSuse(?)
|
||||
@@ -84,7 +84,7 @@ for \*nix systems like Linux and BSD, macOS, Haiku, and Windows.
|
||||
|
||||
The general approach is:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/
|
||||
meson compile -C builddir/
|
||||
@@ -92,7 +92,7 @@ The general approach is:
|
||||
|
||||
On Windows you can also use the Visual Studio backend
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir --backend=vs
|
||||
cd builddir
|
||||
@@ -108,7 +108,7 @@ It's often necessary or useful when debugging driver issues or testing new
|
||||
branches to run against a local build of Mesa without doing a system-wide
|
||||
install. Meson has built-in support for this with its ``devenv`` subcommand:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson devenv -C builddir glxinfo
|
||||
|
||||
@@ -126,7 +126,7 @@ assume ``$MESA_INSTALLDIR`` is an absolute path to this location.
|
||||
|
||||
First, configure Mesa and install in the temporary location:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" OTHER_OPTIONS
|
||||
meson install -C builddir/
|
||||
@@ -135,7 +135,7 @@ where ``OTHER_OPTIONS`` is replaced by any meson configuration options you may
|
||||
want. For instance, if you want to build the LLVMpipe drivers, it would look
|
||||
like this:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" \
|
||||
-Dgallium-drivers=swrast -Dvulkan-drivers=swrast
|
||||
@@ -148,7 +148,7 @@ Which variable you have to set depends on the API.
|
||||
OpenGL
|
||||
~~~~~~
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
LD_LIBRARY_PATH="$MESA_INSTALLDIR/lib64" glxinfo
|
||||
|
||||
@@ -159,7 +159,7 @@ contains ``libGL.so`` and use that one.
|
||||
Vulkan
|
||||
~~~~~~
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
VK_ICD_FILENAMES="$MESA_INSTALLDIR/share/vulkan/icd/my_icd.json" vulkaninfo
|
||||
|
||||
@@ -170,7 +170,7 @@ is named ``lvp_icd.x86_64.json``.
|
||||
OpenCL
|
||||
~~~~~~
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
OCL_ICD_VENDORS="$MESA_INSTALLDIR/etc/OpenCL/vendors" clinfo
|
||||
|
||||
@@ -212,7 +212,7 @@ When compilation has finished, look in the top-level ``lib/`` (or
|
||||
``lib64/``) directory. You'll see a set of library files similar to
|
||||
this:
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
|
||||
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
|
||||
@@ -226,7 +226,7 @@ the OSMesa (Off-Screen) interface library.
|
||||
|
||||
If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
|
||||
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
|
||||
@@ -247,6 +247,6 @@ determine the proper compiler and linker flags.
|
||||
|
||||
For example, compiling and linking a GLUT application can be done with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
|
||||
|
@@ -25,13 +25,13 @@ Unix-like OSes
|
||||
If Meson is not already installed on your system, you can typically
|
||||
install it with your package installer. For example:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo apt-get install meson # Ubuntu
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo dnf install meson # Fedora
|
||||
|
||||
@@ -51,20 +51,20 @@ modules (Mako). You also need pkg-config (a hard dependency of Meson),
|
||||
Flex, and Bison. The easiest way to install everything you need is with
|
||||
`Chocolatey <https://chocolatey.org/>`__.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
choco install python3 winflexbison pkgconfiglite
|
||||
|
||||
You can even use Chocolatey to install MinGW and Ninja (Ninja can be
|
||||
used with MSVC as well)
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
choco install ninja mingw
|
||||
|
||||
Then install Meson using pip
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
py -3 -m pip install meson packaging mako
|
||||
|
||||
@@ -87,7 +87,7 @@ for each configuration you might want to use.
|
||||
|
||||
Basic configuration is done with:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup build/
|
||||
|
||||
@@ -98,7 +98,7 @@ build options at the end.
|
||||
|
||||
To review the options which Meson chose, run:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson configure build/
|
||||
|
||||
@@ -112,7 +112,7 @@ With additional arguments ``meson configure`` can be used to change
|
||||
options for a previously configured build directory. All options passed
|
||||
to this command are in the form ``-D "option"="value"``. For example:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson configure build/ -Dprefix=/tmp/install -Dglx=true
|
||||
|
||||
@@ -125,7 +125,7 @@ an empty list (``-D platforms=[]``).
|
||||
Once you've run the initial ``meson`` command successfully you can use
|
||||
your configured backend to build the project in your build directory:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
ninja -C build/
|
||||
|
||||
@@ -133,7 +133,7 @@ The next step is to install the Mesa libraries, drivers, etc. This also
|
||||
finishes up some final steps of the build process (such as creating
|
||||
symbolic links for drivers). To install:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
ninja -C build/ install
|
||||
|
||||
@@ -168,7 +168,7 @@ Developers will often want to install Mesa to a testing directory rather
|
||||
than the system library directory. This can be done with the --prefix
|
||||
option. For example:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson --prefix="${PWD}/build/install" build/
|
||||
|
||||
@@ -191,7 +191,7 @@ they are guaranteed to persist across rebuilds and reconfigurations.
|
||||
This example sets -fmax-errors for compiling C sources and -DMAGIC=123
|
||||
for C++ sources:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/ -Dc_args=-fmax-errors=10 -Dcpp_args=-DMAGIC=123
|
||||
|
||||
@@ -206,7 +206,7 @@ a new build dir for a different compiler.
|
||||
This is an example of specifying the Clang compilers and cleaning the
|
||||
build directory before reconfiguring with an extra C option:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
CC=clang CXX=clang++ meson setup build-clang
|
||||
ninja -C build-clang
|
||||
@@ -230,7 +230,7 @@ CMake finder it will only find static libraries, it will never find
|
||||
which points to the root of an alternative installation (the prefix).
|
||||
For example:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir -Dcmake_module_path=/home/user/mycmake/prefix
|
||||
|
||||
@@ -248,7 +248,7 @@ to find llvm-config:
|
||||
|
||||
Then configure Meson:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/ --native-file custom-llvm.ini
|
||||
|
||||
@@ -268,7 +268,7 @@ Obviously, only CMake or llvm-config is required.
|
||||
|
||||
Then configure Meson:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir/ --cross-file cross-llvm.ini
|
||||
|
||||
|
@@ -23,7 +23,7 @@ Building OSMesa
|
||||
|
||||
Configure and build Mesa with something like:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
meson setup builddir -Dosmesa=true -Dgallium-drivers=swrast -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install
|
||||
meson install -C builddir
|
||||
|
@@ -61,7 +61,7 @@ To capture a trace with Perfetto you need to take the following steps:
|
||||
`convenience script <https://perfetto.dev/docs/quickstart/linux-tracing#capturing-a-trace>`__
|
||||
to start the tracing service:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
cd subprojects/perfetto
|
||||
CONFIG=<path/to/gpu.cfg> OUT=out/linux_clang_release ./tools/tmux -n
|
||||
@@ -83,7 +83,7 @@ To capture a trace with Perfetto you need to take the following steps:
|
||||
To be a bit more explicit, here is a listing of commands reproducing
|
||||
the steps above :
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
# Configure Mesa with perfetto
|
||||
mesa $ meson . build -Dperfetto=true -Dvulkan-drivers=intel,broadcom -Dgallium-drivers=
|
||||
@@ -124,7 +124,7 @@ actually collecting traces.
|
||||
This can be achieved by setting the :envvar:`MESA_GPU_TRACES`
|
||||
environment variable before starting a Vulkan application :
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
MESA_GPU_TRACES=perfetto ./build/my_vulkan_app
|
||||
|
||||
@@ -139,7 +139,7 @@ Freedreno / Turnip
|
||||
The Freedreno PPS driver needs root access to read system-wide
|
||||
performance counters, so you can simply run it with sudo:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo ./build/src/tool/pps/pps-producer
|
||||
|
||||
@@ -150,13 +150,13 @@ The Intel PPS driver needs root access to read system-wide
|
||||
`RenderBasic <https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2023-0/gpu-metrics-reference.html>`__
|
||||
performance counters, so you can simply run it with sudo:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo ./build/src/tool/pps/pps-producer
|
||||
|
||||
Another option to enable access wide data without root permissions would be running the following:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
sudo sysctl dev.i915.perf_stream_paranoid=0
|
||||
|
||||
@@ -165,7 +165,7 @@ Alternatively using the ``CAP_PERFMON`` permission on the binary should work too
|
||||
A particular metric set can also be selected to capture a different
|
||||
set of HW counters :
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
INTEL_PERFETTO_METRIC_SET=RasterizerAndPixelBackend ./build/src/tool/pps/pps-producer
|
||||
|
||||
@@ -173,7 +173,7 @@ Vulkan applications can also be instrumented to be Perfetto producers.
|
||||
To enable this for given application, set the environment variable as
|
||||
follow :
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
PERFETTO_TRACE=1 my_vulkan_app
|
||||
|
||||
@@ -188,7 +188,7 @@ To run the producer, follow these two simple steps:
|
||||
|
||||
1. Enable Panfrost unstable ioctls via kernel parameter:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
modprobe panfrost unstable_ioctls=1
|
||||
|
||||
@@ -196,7 +196,7 @@ To run the producer, follow these two simple steps:
|
||||
|
||||
2. Run the producer:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./build/pps-producer
|
||||
|
||||
@@ -210,7 +210,7 @@ If the convenience script ``tools/tmux`` keeps copying artifacts to your
|
||||
``SSH_TARGET`` without starting the tmux session, make sure you have ``tmux``
|
||||
installed in your system.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
apt install tmux
|
||||
|
||||
|
@@ -1,9 +1,7 @@
|
||||
24.0,2024-03-13,24.0.3,Eric Engestrom
|
||||
,2024-03-27,24.0.4,Eric Engestrom
|
||||
,2024-04-10,24.0.5,Eric Engestrom
|
||||
,2024-04-24,24.0.6,Eric Engestrom
|
||||
,2024-05-08,24.0.7,Eric Engestrom
|
||||
24.1,2024-04-24,24.1.0-rc1,Eric Engestrom,24.1 branchpoint
|
||||
,2024-05-01,24.1.0-rc2,Eric Engestrom
|
||||
,2024-05-08,24.1.0-rc3,Eric Engestrom
|
||||
,2024-05-15,24.1.0-rc4,Eric Engestrom,or 24.1.0 final
|
||||
23.3,2024-01-24,23.3.4,Eric Engestrom
|
||||
,2024-02-07,23.3.5,Eric Engestrom
|
||||
,2024-02-21,23.3.6,Eric Engestrom
|
||||
24.0,2024-01-10,24.0.0-rc1,Eric Engestrom,24.0 branchpoint
|
||||
,2024-01-17,24.0.0-rc2,Eric Engestrom
|
||||
,2024-01-24,24.0.0-rc3,Eric Engestrom
|
||||
,2024-01-31,24.0.0-rc4,Eric Engestrom,or 24.0.0 final
|
||||
|
|
@@ -112,7 +112,7 @@ good contact point.
|
||||
then they should be squashed together. The commit messages and the
|
||||
"``cherry picked from``"-tags must be preserved.
|
||||
|
||||
.. code-block:: text
|
||||
.. code-block:: console
|
||||
|
||||
git show b10859ec41d09c57663a258f43fe57c12332698e
|
||||
|
||||
@@ -177,7 +177,7 @@ to stabilization and bugfixing.
|
||||
|
||||
Setup the branchpoint:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
# Make sure main can carry on at the new version
|
||||
$EDITOR VERSION # bump the version number, keeping in mind the wrap around at the end of the year
|
||||
@@ -194,7 +194,7 @@ Once it has been merged, note the last commit *before* your "VERSION:
|
||||
bump to X.Y" as this is the branchpoint. This is ``$LAST_COMMIT`` in the
|
||||
command below:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
VERSION=X.Y
|
||||
|
||||
@@ -206,7 +206,7 @@ command below:
|
||||
Now that we have an official branchpoint, let's push the tag and create
|
||||
the branches:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git push origin $VERSION-branchpoint
|
||||
git checkout $VERSION-branchpoint
|
||||
@@ -220,7 +220,7 @@ and altered in way necessary, with the caveat that anything pushed to
|
||||
the ``X.Y`` branch must not be altered anymore. A convenient command
|
||||
to perform an interactive rebase over everything since the last release is:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git rebase -i mesa-$(cat VERSION)
|
||||
|
||||
@@ -255,7 +255,7 @@ Most of the testing should already be done during the
|
||||
|
||||
Here is one solution:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
|
||||
__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
|
||||
@@ -307,7 +307,7 @@ Use the release.sh script from X.Org `util-modular <https://gitlab.freedesktop.o
|
||||
|
||||
Start the release process.
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
../relative/path/to/release.sh . # append --dist if you've already done distcheck above
|
||||
|
||||
@@ -329,7 +329,7 @@ in the ``mesa-X.Y.Z.announce`` template. Commit this change.
|
||||
Don't forget to push the commits to both the ``staging/X.Y`` branch and
|
||||
the ``X.Y`` branch:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git push origin HEAD:staging/X.Y
|
||||
git push origin HEAD:X.Y
|
||||
@@ -340,14 +340,14 @@ Back on mesa main, add the new release notes into the tree
|
||||
|
||||
Something like the following steps will do the trick:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git cherry-pick -x X.Y~1
|
||||
git cherry-pick -x X.Y
|
||||
|
||||
Then run the
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
./bin/post_version.py X.Y.Z
|
||||
|
||||
@@ -356,7 +356,7 @@ docs/relnotes.rst and docs/release-calendar.csv. It will then generate
|
||||
a Git commit automatically. Check that everything looks correct and
|
||||
push:
|
||||
|
||||
.. code-block:: sh
|
||||
.. code-block:: console
|
||||
|
||||
git push origin main X.Y
|
||||
|
||||
|
@@ -3,13 +3,9 @@ Release Notes
|
||||
|
||||
The release notes summarize what's new or changed in each Mesa release.
|
||||
|
||||
- :doc:`24.0.3 release notes <relnotes/24.0.3>`
|
||||
- :doc:`24.0.2 release notes <relnotes/24.0.2>`
|
||||
- :doc:`23.3.6 release notes <relnotes/23.3.6>`
|
||||
- :doc:`24.0.1 release notes <relnotes/24.0.1>`
|
||||
- :doc:`24.0.0 release notes <relnotes/24.0.0>`
|
||||
- :doc:`23.3.5 release notes <relnotes/23.3.5>`
|
||||
- :doc:`23.3.4 release notes <relnotes/23.3.4>`
|
||||
- :doc:`23.3.3 release notes <relnotes/23.3.3>`
|
||||
- :doc:`23.3.2 release notes <relnotes/23.3.2>`
|
||||
- :doc:`23.3.1 release notes <relnotes/23.3.1>`
|
||||
@@ -414,13 +410,9 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
24.0.3 <relnotes/24.0.3>
|
||||
24.0.2 <relnotes/24.0.2>
|
||||
23.3.6 <relnotes/23.3.6>
|
||||
24.0.1 <relnotes/24.0.1>
|
||||
24.0.0 <relnotes/24.0.0>
|
||||
23.3.5 <relnotes/23.3.5>
|
||||
23.3.4 <relnotes/23.3.4>
|
||||
23.3.3 <relnotes/23.3.3>
|
||||
23.3.2 <relnotes/23.3.2>
|
||||
23.3.1 <relnotes/23.3.1>
|
||||
|
@@ -1,199 +0,0 @@
|
||||
Mesa 23.3.4 Release Notes / 2024-01-24
|
||||
======================================
|
||||
|
||||
Mesa 23.3.4 is a bug fix release which fixes bugs found since the 23.3.3 release.
|
||||
|
||||
Mesa 23.3.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 23.3.4 implements the Vulkan 1.3 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
df12d765be4650fe532860b18aa18e6da1d0b07d1a21dfdfe04660e6b7bac39a mesa-23.3.4.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- [AMDGPU RDNA3] Antialiasing is broken in Blender
|
||||
- Assassin's Creed Odyssey wrong colors on Arc A770
|
||||
- The Finals fails to launch with DX12 on Intel Arc unless "force_vk_vendor" is set to -1.
|
||||
- zink crashes on nvidia
|
||||
- radv: games render with garbage output on RX5600M through PRIME with DCC
|
||||
- radv: RGP reports for mesh shaders are confusing
|
||||
- d3d10umd: Build failure regression with MSVC during 23.3 development cycle
|
||||
- VA-API CI tests freeze
|
||||
- Radeon: YUYV DMA BUF eglCreateImageKHR fails
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alessandro Astone (1):
|
||||
|
||||
- zink: Fix resizable BAR detection logic
|
||||
|
||||
Boris Brezillon (3):
|
||||
|
||||
- panvk: Fix tracing
|
||||
- panvk: Fix access to unitialized panvk_pipeline_layout::num_sets field
|
||||
- panfrost: Clamp the render area to the damage region
|
||||
|
||||
Daniel Schürmann (1):
|
||||
|
||||
- aco: give spiller more room to assign spilled SGPRs to VGPRs
|
||||
|
||||
Dave Airlie (2):
|
||||
|
||||
- radv/video: refactor sq start/end code to avoid decode hangs.
|
||||
- radv: don't submit empty command buffers on encoder ring.
|
||||
|
||||
David Rosca (1):
|
||||
|
||||
- radeonsi/vcn: Fix H264 slice header when encoding I frames
|
||||
|
||||
Eric Engestrom (7):
|
||||
|
||||
- docs: add sha256sum for 23.3.3
|
||||
- .pick_status.json: Update to 68f5277887aae1cdc202f45ecd44df2c3c59ba7d
|
||||
- .pick_status.json: Update to 4fe5f06d400a7310ffc280761c27b036aec86646
|
||||
- .pick_status.json: Update to ff84aef116f9d0d13440fd13edf2ac0b69a8c132
|
||||
- .pick_status.json: Update to 6e4bb8253ed36f911a0a45dfecf89c237a8cd362
|
||||
- .pick_status.json: Update to d0a3bac163ca803eda03feb3afea80e516568caf
|
||||
- .pick_status.json: Update to eca4f0f632b1e3e6e24bd12ee5f00522eb7d0fdb
|
||||
|
||||
Friedrich Vock (4):
|
||||
|
||||
- radv/rt: Add workaround to make leaves always active
|
||||
- radv: Fix shader replay allocation condition
|
||||
- nir: Make is_trivial_deref_cast public
|
||||
- nir: Handle casts in nir_opt_copy_prop_vars
|
||||
|
||||
Georg Lehmann (1):
|
||||
|
||||
- aco: stop scheduling at p_logical_end
|
||||
|
||||
Hans-Kristian Arntzen (1):
|
||||
|
||||
- wsi/x11: Add workaround for Detroit Become Human.
|
||||
|
||||
Ian Romanick (1):
|
||||
|
||||
- intel/compiler: Track mue_compaction and mue_header_packing flags in brw_get_compiler_config_value
|
||||
|
||||
Jesse Natalie (1):
|
||||
|
||||
- mesa: Consider mesa format in addition to internal format for mip/cube completeness
|
||||
|
||||
Karol Herbst (3):
|
||||
|
||||
- rusticl/kernel: run opt/lower_memcpy later to fix a crash
|
||||
- nir: rework and fix rotate lowering
|
||||
- rusticl/kernel: check that local size on dispatch doesn't exceed limits
|
||||
|
||||
Konstantin Seurer (4):
|
||||
|
||||
- ac/llvm: Enable helper invocations for quad OPs
|
||||
- lavapipe: Fix DGC vertex buffer handling
|
||||
- lavapipe: Mark vertex elements dirty if the stride changed
|
||||
- lavapipe: Report the correct preprocess buffer size
|
||||
|
||||
Lionel Landwerlin (4):
|
||||
|
||||
- anv: fix disabled Wa_14017076903/18022508906
|
||||
- anv: hide vendor ID for The Finals
|
||||
- anv: fix pipeline executable properties with graphics libraries
|
||||
- anv: implement undocumented tile cache flush requirements
|
||||
|
||||
Lucas Stach (1):
|
||||
|
||||
- etnaviv: disable 64bpp render/sampler formats
|
||||
|
||||
Matt Turner (4):
|
||||
|
||||
- symbols-check: Add _GLOBAL_OFFSET_TABLE_
|
||||
- nir: Fix cast
|
||||
- util: Add DETECT_ARCH_HPPA macro
|
||||
- util/tests: Disable half-float NaN test on hppa/old-mips
|
||||
|
||||
Max R (1):
|
||||
|
||||
- d3d10umd: Fix compilation
|
||||
|
||||
Mike Blumenkrantz (5):
|
||||
|
||||
- lavapipe: fix devenv icd filename
|
||||
- zink: always force flushes when originating from api frontend
|
||||
- zink: ignore tc buffer replacement info
|
||||
- zink: fix buffer rebind early-out check
|
||||
- zink: fix separate shader patch variable location adjustment
|
||||
|
||||
Patrick Lerda (1):
|
||||
|
||||
- glsl/nir: fix gl_nir_cross_validate_outputs_to_inputs() memory leak
|
||||
|
||||
Pavel Ondračka (1):
|
||||
|
||||
- r300: fix reusing of color varying slots for generic ones
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (2):
|
||||
|
||||
- ac/surface: don't oversize surf_size
|
||||
- radeonsi: compute epitch when modifying surf_pitch
|
||||
|
||||
Rhys Perry (3):
|
||||
|
||||
- radv: do nir_shader_gather_info after radv_nir_lower_rt_abi
|
||||
- nir/lower_non_uniform: set non_uniform=false when lowering is not needed
|
||||
- nir/lower_shader_calls: remove CF before nir_opt_if
|
||||
|
||||
Samuel Pitoiset (2):
|
||||
|
||||
- radv: do not issue SQTT marker with DISPATCH_MESH_INDIRECT_MULTI
|
||||
- radv: fix indirect dispatches on the compute queue on GFX7
|
||||
|
||||
Sviatoslav Peleshko (1):
|
||||
|
||||
- nir: Use alu source components count in nir_alu_srcs_negative_equal
|
||||
|
||||
Tapani Pälli (4):
|
||||
|
||||
- anv: check for wa 16013994831 in emit_so_memcpy_end
|
||||
- iris: expand pre-hiz data cache flush to gfx >= 125
|
||||
- anv: expand pre-hiz data cache flush to gfx >= 125
|
||||
- iris: replace constant cache invalidate with hdc flush
|
||||
|
||||
Tatsuyuki Ishi (1):
|
||||
|
||||
- radv: never set DISABLE_WR_CONFIRM for CP DMA clears and copies
|
||||
|
||||
Timur Kristóf (1):
|
||||
|
||||
- radv: Correctly select SDMA support for PRIME blit.
|
||||
|
||||
Yiwei Zhang (4):
|
||||
|
||||
- vulkan/wsi/wayland: fix returns and avoid leaks for failed swapchain
|
||||
- venus: fix pipeline layout lifetime
|
||||
- venus: fix pipeline derivatives
|
||||
- venus: fix to respect the final pipeline layout
|
||||
|
||||
Yonggang Luo (1):
|
||||
|
||||
- compiler/spirv: The spirv shader is binary, should write in binary mode
|
@@ -1,154 +0,0 @@
|
||||
Mesa 23.3.5 Release Notes / 2024-01-31
|
||||
======================================
|
||||
|
||||
Mesa 23.3.5 is a bug fix release which fixes bugs found since the 23.3.4 release.
|
||||
|
||||
Mesa 23.3.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 23.3.5 implements the Vulkan 1.3 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA256 checksum
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
69ccb1278641ff5bad71ca0f866188aeb1a92aadc4dbb9d35f50aebec5b8b50f mesa-23.3.5.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- [radeonsi] Regression: graphical artifacting on water texture in OpenGOAL
|
||||
- VAAPI: EFC on VCN2 produces broken H264 video and crashes the HEVC encoder
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Antoine Coutant (1):
|
||||
|
||||
- clc: retrieve libclang path at runtime.
|
||||
|
||||
Daniel Schürmann (1):
|
||||
|
||||
- aco/insert_exec_mask: Fix unconditional demote at top-level control flow.
|
||||
|
||||
David Heidelberg (1):
|
||||
|
||||
- ci/freedreno: timestamp-get no longer fails on Adreno
|
||||
|
||||
Dmitry Baryshkov (1):
|
||||
|
||||
- freedreno/drm: don't crash for unsupported devices
|
||||
|
||||
Eric Engestrom (8):
|
||||
|
||||
- docs: add sha256sum for 23.3.4
|
||||
- .pick_status.json: Update to b75ee1a0670a3207dfd99917e4f47d064a44197f
|
||||
- .pick_status.json: Update to 4cd5b2b5426e8d670fc3657eee040a79e3f9df1e
|
||||
- util: rename __check_suid() to __normal_user()
|
||||
- tree-wide: use __normal_user() everywhere instead of writing the check manually
|
||||
- util: simplify logic in __normal_user()
|
||||
- util: check for setgid() as well in __normal_user()
|
||||
- .pick_status.json: Mark 321e2cee5315e94c050f8659a8cd55e0e7cd9076 as denominated
|
||||
|
||||
Faith Ekstrand (1):
|
||||
|
||||
- nvk: Don't exnore ExternalImageFormatInfo
|
||||
|
||||
Friedrich Vock (7):
|
||||
|
||||
- util: Provide a secure_getenv fallback for platforms without it
|
||||
- aux/trace: Guard triggers behind __normal_user
|
||||
- mesa/main: Use secure_getenv for shader dumping
|
||||
- radv: Use secure_getenv in radv_builtin_cache_path
|
||||
- radv: Use secure_getenv for RADV_THREAD_TRACE_TRIGGER
|
||||
- util/disk_cache: Use secure_getenv to determine cache directories
|
||||
- vulkan: Use secure_getenv for trigger files
|
||||
|
||||
Gert Wollny (5):
|
||||
|
||||
- r600: lower dround_even also on hardware that supports fp64
|
||||
- virgl: Use better reporting for mirror_clamp features
|
||||
- radv: Fix compilation with gcc-13 and tsan enabled
|
||||
- nir/lower_int64: Fix compilation with gcc-13 and tsan enabled
|
||||
- nir/builder: Fix compilation with gcc-13 when tsan is enabled
|
||||
|
||||
Haihao Xiang (1):
|
||||
|
||||
- anv: Fix typo in transition_color_buffer
|
||||
|
||||
Hyunjun Ko (1):
|
||||
|
||||
- anv/video: fix out-of-bounds read
|
||||
|
||||
Iago Toral Quiroga (3):
|
||||
|
||||
- broadcom/compiler: fix incorrect flags setup in non-uniform if path
|
||||
- broadcom/compiler: fix incorrect flags update for subgroup elect
|
||||
- broadcom/compiler: be more careful with unifa in non-uniform control flow
|
||||
|
||||
Karol Herbst (1):
|
||||
|
||||
- clc: force fPIC for every user when using shared LLVM
|
||||
|
||||
Lionel Landwerlin (2):
|
||||
|
||||
- anv: don't prevent L1 untyped cache flush in 3D mode
|
||||
- anv: fix transfer barriers flushes with compute queue
|
||||
|
||||
Louis-Francis Ratté-Boulianne (4):
|
||||
|
||||
- panfrost: factor out method to check whether we can discard resource
|
||||
- panfrost: add copy_resource flag to pan_resource_modifier_convert
|
||||
- panfrost: add can_discard flag to pan_legalize_afbc_format
|
||||
- panfrost: Legalize before updating part of a AFBC-packed texture
|
||||
|
||||
Mike Blumenkrantz (3):
|
||||
|
||||
- zink: set more dynamic states when using shader objects
|
||||
- zink: always map descriptor buffers as COHERENT
|
||||
- zink: fix descriptor buffer unmaps on screen destroy
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (1):
|
||||
|
||||
- radeonsi: emit cache flushes before draw registers
|
||||
|
||||
Rhys Perry (1):
|
||||
|
||||
- aco: fix labelling of s_not with constant
|
||||
|
||||
Rob Clark (3):
|
||||
|
||||
- freedreno: De-duplicate 19.2MHz RBBM tick conversion
|
||||
- freedreno: Fix timestamp conversion
|
||||
- freedreno: Implement PIPE_CAP_TIMER_RESOLUTION
|
||||
|
||||
Rohan Garg (1):
|
||||
|
||||
- anv: untyped data port flush required when a pipeline sets the VK_ACCESS_2_SHADER_STORAGE_READ_BIT
|
||||
|
||||
Sebastian Wick (1):
|
||||
|
||||
- radeonsi: Destroy queues before the aux contexts
|
||||
|
||||
Tapani Pälli (1):
|
||||
|
||||
- anv: move \*bits_for_access_flags to genX_cmd_buffer
|
||||
|
||||
Thong Thai (1):
|
||||
|
||||
- radeonsi/vcn: remove EFC support for renoir
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user