mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 11:00:11 +01:00
Compare commits
203 commits
main
...
mesa-25.3.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7aeb0d677 | ||
|
|
523eea18c5 | ||
|
|
48b0dd2892 | ||
|
|
25abf47e3e | ||
|
|
28ca4a48d6 | ||
|
|
23665f9bd9 | ||
|
|
b7ce6abb6a | ||
|
|
0fbf00af9b | ||
|
|
e2164fbc11 | ||
|
|
f651443a74 | ||
|
|
b5a4245193 | ||
|
|
76d66b72db | ||
|
|
09b856c367 | ||
|
|
e5f9980d50 | ||
|
|
7f68450a6c | ||
|
|
feccefbc86 | ||
|
|
a407dc6d83 | ||
|
|
4a0cb910e4 | ||
|
|
8ffc19f935 | ||
|
|
de44196bfb | ||
|
|
f0aeb824b9 | ||
|
|
2cb191d7d1 | ||
|
|
b074ea9fe8 | ||
|
|
42726a2afa | ||
|
|
e42294ba9f | ||
|
|
3bb77d6906 | ||
|
|
efd2f1d61c | ||
|
|
2cd6bc199a | ||
|
|
5c3427b1fe | ||
|
|
b6ae45d326 | ||
|
|
14097ed79d | ||
|
|
0ef221f4a4 | ||
|
|
263e1823d2 | ||
|
|
e334938384 | ||
|
|
f299249d8b | ||
|
|
594ae17ec9 | ||
|
|
02ba16ec03 | ||
|
|
1460a0319f | ||
|
|
d48e4a3f3b | ||
|
|
d3d820d6ef | ||
|
|
70e3af188d | ||
|
|
b777384e99 | ||
|
|
c4e0f4d917 | ||
|
|
f3268818d5 | ||
|
|
9e809986f6 | ||
|
|
8a813632c3 | ||
|
|
b17381dc8d | ||
|
|
7aa2c70759 | ||
|
|
11a4adec73 | ||
|
|
e21d417234 | ||
|
|
dafde3434a | ||
|
|
38e258d5d4 | ||
|
|
478d92171d | ||
|
|
96d959986c | ||
|
|
c167b0a816 | ||
|
|
ec8518d123 | ||
|
|
269a6fe030 | ||
|
|
4b46e87296 | ||
|
|
3f169d14d2 | ||
|
|
3a63355583 | ||
|
|
7fb0030c06 | ||
|
|
e96e71fb79 | ||
|
|
eface4be0d | ||
|
|
36aff3454b | ||
|
|
3d9d9ca09b | ||
|
|
e817b525d8 | ||
|
|
8eec239517 | ||
|
|
e9f677dff9 | ||
|
|
4f5c1c6c75 | ||
|
|
944ec88ca5 | ||
|
|
7d4557bae8 | ||
|
|
4482281292 | ||
|
|
1dadb38d7b | ||
|
|
ef9457d119 | ||
|
|
9696921018 | ||
|
|
30678337dd | ||
|
|
eb2668aad7 | ||
|
|
e23c722170 | ||
|
|
2ad12150e8 | ||
|
|
3109237d7c | ||
|
|
775652e08b | ||
|
|
51285c6715 | ||
|
|
c70fd7f766 | ||
|
|
d527eedb15 | ||
|
|
7c18540961 | ||
|
|
90b6c3a8ac | ||
|
|
3dab73159b | ||
|
|
55a37838b9 | ||
|
|
9bad1beb98 | ||
|
|
3086692bcd | ||
|
|
ce6c6a7a57 | ||
|
|
629a0a4dcc | ||
|
|
12c82aaa82 | ||
|
|
1e885e7a88 | ||
|
|
3ddddf78b4 | ||
|
|
86313f9571 | ||
|
|
a46307a732 | ||
|
|
0a0d08dfe0 | ||
|
|
182877f3c8 | ||
|
|
9aeac1e0a7 | ||
|
|
46f0422165 | ||
|
|
f69d1abfcf | ||
|
|
770e095766 | ||
|
|
205fe1a245 | ||
|
|
093c7d9d8e | ||
|
|
2c67b0fac6 | ||
|
|
e082f6b6c0 | ||
|
|
a12369eb3d | ||
|
|
6670d0742b | ||
|
|
a7a020dde6 | ||
|
|
7e15070ee1 | ||
|
|
0edb1852a7 | ||
|
|
3ce875a2d0 | ||
|
|
fd777ce645 | ||
|
|
315b688976 | ||
|
|
3a71d94735 | ||
|
|
8a2bf930bb | ||
|
|
ac492d42be | ||
|
|
2e17fd0cb2 | ||
|
|
9311f170c4 | ||
|
|
3e227a04b1 | ||
|
|
f63a5df30b | ||
|
|
9ba765e3e3 | ||
|
|
8010d0cd39 | ||
|
|
f1f32d557e | ||
|
|
05e5db1a4d | ||
|
|
5ae8474029 | ||
|
|
b3470359bf | ||
|
|
5e1a88cea0 | ||
|
|
040453857b | ||
|
|
28e172e956 | ||
|
|
74880f8954 | ||
|
|
f02f5e217f | ||
|
|
d9636807f7 | ||
|
|
b768139858 | ||
|
|
498a25cfb8 | ||
|
|
9728bbf7b0 | ||
|
|
f142fdc273 | ||
|
|
1c52a94428 | ||
|
|
2cfd3c52b2 | ||
|
|
606ebb042e | ||
|
|
424f37b348 | ||
|
|
7f75931019 | ||
|
|
ba107091c2 | ||
|
|
b74000dbce | ||
|
|
fb2273df78 | ||
|
|
65eb3aed4b | ||
|
|
a9653fa019 | ||
|
|
159d397437 | ||
|
|
6a7effe059 | ||
|
|
2a0a2cc5b0 | ||
|
|
3f9f4d79d3 | ||
|
|
cd253df92a | ||
|
|
bfd09d9891 | ||
|
|
dcecd8fd1e | ||
|
|
1648f759c1 | ||
|
|
d5f7261ce5 | ||
|
|
2c1c52a8c8 | ||
|
|
fe3a3b08c9 | ||
|
|
d9812eaea8 | ||
|
|
be191ceff7 | ||
|
|
49bfddbd11 | ||
|
|
0182cde848 | ||
|
|
94ec7c686d | ||
|
|
4202ea6c7f | ||
|
|
10475e8ac1 | ||
|
|
c1cf6e75ae | ||
|
|
2b8675fd86 | ||
|
|
e967da84a8 | ||
|
|
2a8f2ff397 | ||
|
|
7a30a71c45 | ||
|
|
9c57c0a194 | ||
|
|
425c49ebf2 | ||
|
|
7b7cb63a14 | ||
|
|
1941ada4a6 | ||
|
|
e982234bb6 | ||
|
|
dbbadebe13 | ||
|
|
0d100cc078 | ||
|
|
f656d062e3 | ||
|
|
847ad886d6 | ||
|
|
5dcc65643c | ||
|
|
ab7bda0a1b | ||
|
|
a02d8d5767 | ||
|
|
13fa1460dd | ||
|
|
14544ef278 | ||
|
|
602b4a2924 | ||
|
|
717e8a8caf | ||
|
|
40ff53c5b8 | ||
|
|
bf9e1f2e37 | ||
|
|
c3cf272a04 | ||
|
|
30ba8880b4 | ||
|
|
42ab1c6f3c | ||
|
|
674e2a702a | ||
|
|
756618ee3b | ||
|
|
ca7d2daf5f | ||
|
|
45aafef631 | ||
|
|
8711394383 | ||
|
|
289c768e88 | ||
|
|
84655b4b5d | ||
|
|
fd6b9c70b6 | ||
|
|
9bb7bf9c66 | ||
|
|
f510e6a1bd | ||
|
|
40f7bef16c |
2693 changed files with 88401 additions and 150031 deletions
|
|
@ -8,7 +8,7 @@ charset = utf-8
|
|||
insert_final_newline = true
|
||||
tab_width = 8
|
||||
|
||||
[*.{c,h,cpp,hpp,cc,hh,y,yy,cl,glsl}]
|
||||
[*.{c,h,cpp,hpp,cc,hh,y,yy,cl}]
|
||||
indent_style = space
|
||||
indent_size = 3
|
||||
max_line_length = 78
|
||||
|
|
|
|||
|
|
@ -77,6 +77,3 @@ c7bf3b69ebc8f2252dbf724a4de638e6bb2ac402
|
|||
|
||||
# freedreno/a6xx: The great register renaming
|
||||
7fd99c88b9cd5c0c8c1cb3e92383acac5cb8220b
|
||||
|
||||
# radv: re-format using clang-format
|
||||
1492de1bc3610539b93d8ad17892e7139cd4b05d
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ workflow:
|
|||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: priority:high
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: priority:high-kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: priority:high-aarch64
|
||||
CI_TRON_JOB_PRIORITY: high
|
||||
CI_TRON_JOB_PRIORITY_TAG: "" # Empty tags are ignored by gitlab
|
||||
JOB_PRIORITY: 75
|
||||
# fast-fail in merge pipelines: stop early if we get this many unexpected fails/crashes
|
||||
DEQP_RUNNER_MAX_FAILS: 40
|
||||
|
|
@ -61,7 +61,6 @@ workflow:
|
|||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: priority:low
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: priority:low-kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: priority:low-aarch64
|
||||
CI_TRON_JOB_PRIORITY: low
|
||||
JOB_PRIORITY: 45
|
||||
# (some) nightly builds perform LTO, so they take much longer than the
|
||||
# short timeout allowed in other pipelines.
|
||||
|
|
@ -124,7 +123,7 @@ variables:
|
|||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64: "" # Empty tags are ignored by gitlab
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM: kvm
|
||||
FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64: aarch64
|
||||
CI_TRON_JOB_PRIORITY: default
|
||||
CI_TRON_JOB_PRIORITY_TAG: ci-tron:priority:low
|
||||
JOB_PRIORITY: 50
|
||||
DATA_STORAGE_PATH: data_storage
|
||||
KERNEL_IMAGE_BASE: "https://$S3_HOST/$S3_KERNEL_BUCKET/$KERNEL_REPO/$KERNEL_TAG"
|
||||
|
|
@ -423,3 +422,4 @@ sanity:
|
|||
when: on_failure
|
||||
reports:
|
||||
junit: check-*.xml
|
||||
|
||||
|
|
|
|||
|
|
@ -6,3 +6,6 @@ dEQP-VK.api.external.memory.android_hardware_buffer.*
|
|||
# only APKs support window creation on Android.
|
||||
dEQP-VK.image.swapchain_mutable.*
|
||||
dEQP-VK.wsi.*
|
||||
|
||||
# These tests cause hangs and need to be skipped for now.
|
||||
dEQP-VK.synchronization*
|
||||
|
|
|
|||
|
|
@ -5,3 +5,12 @@ dEQP-GLES3.functional.transform_feedback.random.*
|
|||
dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.*_array_element
|
||||
dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.*.array.*
|
||||
KHR-GLES31.core.program_interface_query.transform-feedback-types
|
||||
|
||||
# CTS bug - https://gerrit.khronos.org/c/vk-gl-cts/+/17901
|
||||
# https://issues.angleproject.org/issues/436377594#comment6
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.advanced_blend.attachment_advanced_equation
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.advanced_blend.blend_qualifier_mismatch
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.compute.invalid_program_query
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.shader.link_program
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.shader.use_program
|
||||
dEQP-GLES31.functional.debug.negative_coverage.log.tessellation.single_tessellation_stage
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
optional: true
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system
|
||||
.baremetal-test-arm64-gl:
|
||||
|
|
@ -45,6 +46,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
# ARM64 testing of bare-metal boards attached to an x86 gitlab-runner system
|
||||
.baremetal-test-arm64-vk:
|
||||
|
|
@ -59,6 +61,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
# ARM32/64 testing of bare-metal boards attached to an x86 gitlab-runner system, using an asan mesa build
|
||||
.baremetal-arm32-asan-test-gl:
|
||||
|
|
@ -70,6 +73,7 @@
|
|||
optional: true
|
||||
- job: debian-arm32-asan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.baremetal-arm64-asan-test-gl:
|
||||
variables:
|
||||
|
|
@ -80,6 +84,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.baremetal-arm64-asan-test-vk:
|
||||
variables:
|
||||
|
|
@ -90,6 +95,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.baremetal-arm64-ubsan-test-gl:
|
||||
extends:
|
||||
|
|
@ -102,6 +108,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-ubsan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.baremetal-arm64-ubsan-test-vk:
|
||||
extends:
|
||||
|
|
@ -114,6 +121,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-ubsan
|
||||
artifacts: false
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.baremetal-deqp-test:
|
||||
variables:
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ make-git-archive:
|
|||
# Compactify the .git directory
|
||||
- git gc --aggressive
|
||||
# Download & cache the perfetto subproject as well.
|
||||
- rm -rf subprojects/perfetto ; mkdir -p subprojects/perfetto && curl --fail --location https://github.com/google/perfetto/archive/$(grep 'revision =' subprojects/perfetto.wrap | cut -d ' ' -f3).tar.gz | tar zxf - --strip-components=1 -C subprojects/perfetto
|
||||
- rm -rf subprojects/perfetto ; mkdir -p subprojects/perfetto && curl --fail https://android.googlesource.com/platform/external/perfetto/+archive/$(grep 'revision =' subprojects/perfetto.wrap | cut -d ' ' -f3).tar.gz | tar zxf - -C subprojects/perfetto
|
||||
# compress the current folder
|
||||
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
|
||||
|
||||
|
|
@ -44,7 +44,6 @@ debian-x86_64:
|
|||
-D spirv-to-dxil=true
|
||||
-D tools=drm-shim
|
||||
-D valgrind=disabled
|
||||
-D perfetto=true
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-default-${BUILDTYPE}
|
||||
RUN_MESON_TESTS: "false" # debian-build-x86_64 already runs these
|
||||
artifacts:
|
||||
|
|
@ -58,7 +57,7 @@ debian-x86_64-asan:
|
|||
- .build-run-long
|
||||
variables:
|
||||
VULKAN_DRIVERS: "swrast,amd,intel"
|
||||
GALLIUM_DRIVERS: "llvmpipe,softpipe,zink,r300"
|
||||
GALLIUM_DRIVERS: "llvmpipe,softpipe,zink"
|
||||
C_ARGS: >
|
||||
-Wno-error=stringop-truncation
|
||||
-Wno-error=deprecated-declarations
|
||||
|
|
@ -362,7 +361,6 @@ debian-android:
|
|||
-D android-libbacktrace=disabled
|
||||
-D mesa-clc=system
|
||||
-D precomp-compiler=system
|
||||
-D perfetto=true
|
||||
GALLIUM_ST: >
|
||||
-D gallium-va=disabled
|
||||
-D gallium-rusticl=false
|
||||
|
|
@ -392,7 +390,7 @@ debian-android:
|
|||
- git clean -dxf .
|
||||
# aarch64 build:
|
||||
- export CROSS=aarch64-linux-android
|
||||
- export GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d,zink
|
||||
- export GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d
|
||||
- export VULKAN_DRIVERS=freedreno,broadcom,panfrost,virtio
|
||||
- export S3_ARTIFACT_NAME=mesa-arm64-android-${BUILDTYPE}
|
||||
- !reference [.meson-build-for-tests, script]
|
||||
|
|
@ -495,7 +493,6 @@ debian-arm64:
|
|||
-D imagination-srv=true
|
||||
-D freedreno-kmds=msm,virtio
|
||||
-D teflon=true
|
||||
-D perfetto=true
|
||||
GALLIUM_ST:
|
||||
-D gallium-rusticl=true
|
||||
RUN_MESON_TESTS: "false" # run by debian-arm64-build-testing
|
||||
|
|
@ -507,8 +504,8 @@ debian-arm64-asan:
|
|||
- .meson-build-for-tests
|
||||
- .build-run-long
|
||||
variables:
|
||||
VULKAN_DRIVERS: "broadcom,freedreno,panfrost"
|
||||
GALLIUM_DRIVERS: "freedreno,vc4,v3d,panfrost"
|
||||
VULKAN_DRIVERS: "broadcom,freedreno"
|
||||
GALLIUM_DRIVERS: "freedreno,vc4,v3d"
|
||||
C_ARGS: >
|
||||
-Wno-error=deprecated-declarations
|
||||
DRI_LOADERS:
|
||||
|
|
@ -713,10 +710,9 @@ debian-vulkan:
|
|||
-D c_args=-fno-sanitize-recover=all
|
||||
-D cpp_args=-fno-sanitize-recover=all
|
||||
UBSAN_OPTIONS: "print_stacktrace=1"
|
||||
VULKAN_DRIVERS: amd,asahi,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination,microsoft-experimental,nouveau,kosmickrisp
|
||||
VULKAN_DRIVERS: amd,asahi,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination,microsoft-experimental,nouveau
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D tools=drm-shim
|
||||
-D build-radv-tests=true
|
||||
-D build-aco-tests=true
|
||||
-D intel-rt=disabled
|
||||
|
|
@ -755,22 +751,6 @@ debian-x86_32:
|
|||
-D mesa-clc=enabled
|
||||
-D install-mesa-clc=true
|
||||
|
||||
# In case of issues with this job, contact @frankbinns
|
||||
debian-riscv64:
|
||||
extends:
|
||||
- .meson-cross
|
||||
- .use-debian/riscv64_build
|
||||
- .meson-build-only
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64_KVM
|
||||
variables:
|
||||
BUILDTYPE: debug
|
||||
CROSS: riscv64
|
||||
GALLIUM_DRIVERS: "llvmpipe,zink"
|
||||
VULKAN_DRIVERS: "swrast"
|
||||
# See https://gitlab.freedesktop.org/mesa/mesa/-/issues/14123
|
||||
MESON_TEST_ARGS: "--no-suite mesa:llvmpipe"
|
||||
|
||||
# While s390 is dead, s390x is very much alive, and one of the last major
|
||||
# big-endian platforms, so it provides useful coverage.
|
||||
# In case of issues with this job, contact @ajax
|
||||
|
|
|
|||
|
|
@ -36,9 +36,10 @@
|
|||
|
||||
# Keep the job script in the artifacts
|
||||
CI_TRON_JOB_SCRIPT_PATH: results/job_script.sh
|
||||
needs:
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
tags:
|
||||
- farm:$RUNNER_FARM_LOCATION
|
||||
- ci-tron:priority:$CI_TRON_JOB_PRIORITY
|
||||
- $CI_TRON_DUT_SETUP_TAGS
|
||||
|
||||
# Override the default before_script, as it is not compatible with the CI-tron environment. We just keep the clearing
|
||||
|
|
@ -95,6 +96,7 @@
|
|||
optional: true
|
||||
- job: debian-x86_64
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-x86_64-test-vk-manual:
|
||||
extends:
|
||||
|
|
@ -108,6 +110,7 @@
|
|||
optional: true
|
||||
- job: debian-build-x86_64
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-x86_64-test-gl:
|
||||
extends:
|
||||
|
|
@ -119,6 +122,7 @@
|
|||
optional: true
|
||||
- job: debian-x86_64
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-x86_64-test-gl-manual:
|
||||
extends:
|
||||
|
|
@ -132,20 +136,7 @@
|
|||
optional: true
|
||||
- job: debian-build-x86_64
|
||||
artifacts: false
|
||||
|
||||
.ci-tron-x86_64-test-gl-asan-manual:
|
||||
extends:
|
||||
- .use-debian/x86_64_test-gl
|
||||
- .ci-tron-x86_64-test
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: "mesa-x86_64-asan-debugoptimized"
|
||||
DEQP_FORCE_ASAN: 1
|
||||
needs:
|
||||
- job: debian/x86_64_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
- job: debian-x86_64-asan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test:
|
||||
extends:
|
||||
|
|
@ -165,6 +156,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test-asan-vk:
|
||||
extends:
|
||||
|
|
@ -179,6 +171,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test-ubsan-vk:
|
||||
extends:
|
||||
|
|
@ -192,6 +185,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-ubsan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test-gl:
|
||||
extends:
|
||||
|
|
@ -203,6 +197,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test-asan-gl:
|
||||
extends:
|
||||
|
|
@ -217,6 +212,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-asan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm64-test-ubsan-gl:
|
||||
extends:
|
||||
|
|
@ -230,6 +226,7 @@
|
|||
optional: true
|
||||
- job: debian-arm64-ubsan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm32-test:
|
||||
extends:
|
||||
|
|
@ -249,6 +246,7 @@
|
|||
optional: true
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm32-test-gl:
|
||||
extends:
|
||||
|
|
@ -260,6 +258,7 @@
|
|||
optional: true
|
||||
- job: debian-arm32
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
||||
.ci-tron-arm32-test-asan-gl:
|
||||
extends:
|
||||
|
|
@ -274,3 +273,4 @@
|
|||
optional: true
|
||||
- job: debian-arm32-asan
|
||||
artifacts: false
|
||||
- !reference [.ci-tron-test, needs]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
variables:
|
||||
CONDITIONAL_BUILD_ANDROID_CTS_TAG: b018634d732f438027ec58c0383615e7
|
||||
CONDITIONAL_BUILD_ANGLE_TAG: 6ade8a52dd596b3de5dee62006bf4fc3
|
||||
CONDITIONAL_BUILD_CROSVM_TAG: 4c61f9707203afca91db3efeb57175db
|
||||
CONDITIONAL_BUILD_ANGLE_TAG: ccde6a2b0d3509c2a8fc459cbd936ac4
|
||||
CONDITIONAL_BUILD_CROSVM_TAG: 4079babd375b09761d59eacb25a0598a
|
||||
CONDITIONAL_BUILD_FLUSTER_TAG: e13f8521875ebd70e207ec0f6f3d3e5b
|
||||
CONDITIONAL_BUILD_PIGLIT_TAG: 8eafc8b1214f64f0d9a298e7a57bc87a
|
||||
CONDITIONAL_BUILD_VKD3D_PROTON_TAG: 072beee85d89e75f9a81664b77198b92
|
||||
CONDITIONAL_BUILD_PIGLIT_TAG: e31960eaf7d80a9e8cdd7869fbcef7f7
|
||||
CONDITIONAL_BUILD_VKD3D_PROTON_TAG: 167feb963fb512795aeddc9d1588bc7c
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ section_start angle "Building ANGLE"
|
|||
# setting up the environment variables locally
|
||||
ci_tag_build_time_check "ANGLE_TAG"
|
||||
|
||||
ANGLE_REV="2ed4b049c064add3109c7b1e0c954a0bce856df8"
|
||||
ANGLE_REV="8ed16003f27125f27cbb87578368e447043420d3"
|
||||
DEPOT_REV="5982a1aeb33dc36382ed8c62eddf52a6135e7dd3"
|
||||
|
||||
# Set ANGLE_ARCH based on DEBIAN_ARCH if it hasn't been explicitly defined
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@ section_start crosvm "Building crosvm"
|
|||
git config --global user.email "mesa@example.com"
|
||||
git config --global user.name "Mesa CI"
|
||||
|
||||
CROSVM_VERSION=f58c8e685f3f21d733861a080a0857acafd0da56
|
||||
CROSVM_VERSION=4a6b4316155742fbfa1be7087c2ee578cfee884d
|
||||
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=95610d57da49d76617bd6d8d21b9bfb1bf360f64
|
||||
VIRGLRENDERER_VERSION=06d43ce974b664f9dc521b706a0ad7f91dbf2866
|
||||
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
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ set -x
|
|||
# - the GL release produces `glcts`, and
|
||||
# - the GLES release produces `deqp-gles*` and `deqp-egl`
|
||||
|
||||
DEQP_MAIN_COMMIT=211e452358f5cafd14bdd76d78342b62741e94aa
|
||||
DEQP_VK_VERSION=1.4.4.2
|
||||
DEQP_GL_VERSION=4.6.7.0
|
||||
DEQP_GLES_VERSION=3.2.13.0
|
||||
DEQP_MAIN_COMMIT=db48c34bebaf3359453e44ab151a2ff9f9c58eb2
|
||||
DEQP_VK_VERSION=1.4.3.3
|
||||
DEQP_GL_VERSION=4.6.6.0
|
||||
DEQP_GLES_VERSION=3.2.12.0
|
||||
|
||||
# Patches to VulkanCTS may come from commits in their repo (listed in
|
||||
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
||||
|
|
@ -46,8 +46,6 @@ main_cts_patch_files=(
|
|||
|
||||
# shellcheck disable=SC2034
|
||||
vk_cts_commits_to_backport=(
|
||||
# Add an option to print to logcat in Android executable builds
|
||||
fc51668efdfd0dffa30b3eddee34aa26172969fb
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
|
|
@ -56,25 +54,29 @@ vk_cts_patch_files=(
|
|||
|
||||
# shellcheck disable=SC2034
|
||||
gl_cts_commits_to_backport=(
|
||||
# Add testing for GL_PRIMITIVES_SUBMITTED_ARB query.
|
||||
e075ce73ddc5973aa46a5236c715bb281c9501fa
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
gl_cts_patch_files=(
|
||||
build-deqp-gl_Build-Don-t-build-Vulkan-utilities-for-GL-builds.patch
|
||||
build-deqp-gl_Revert-Add-missing-context-deletion.patch
|
||||
build-deqp-gl_Revert-Fix-issues-with-GLX-reset-notification-strate.patch
|
||||
build-deqp-gl_Revert-Fix-spurious-failures-when-using-a-config-wit.patch
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
# GLES builds also EGL
|
||||
gles_cts_commits_to_backport=(
|
||||
# CMake: Include FindPkgConfig before using pkg_check_modules()
|
||||
e09e0a210b041d0bf7b525620d0068eab3ffa66a
|
||||
# Add an option to print to logcat in Android executable builds
|
||||
fc51668efdfd0dffa30b3eddee34aa26172969fb
|
||||
)
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
gles_cts_patch_files=(
|
||||
build-deqp-gl_Build-Don-t-build-Vulkan-utilities-for-GL-builds.patch
|
||||
build-deqp-gl_Revert-Add-missing-context-deletion.patch
|
||||
build-deqp-gl_Revert-Fix-issues-with-GLX-reset-notification-strate.patch
|
||||
build-deqp-gl_Revert-Fix-spurious-failures-when-using-a-config-wit.patch
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,77 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -uex
|
||||
|
||||
section_start perfetto "Building perfetto"
|
||||
|
||||
BASE_PWD=$PWD
|
||||
|
||||
PERFETTO_REVISION=$(grep 'revision =' subprojects/perfetto.wrap | cut -d ' ' -f3)
|
||||
|
||||
patch_files=(
|
||||
"build-perfetto-Fix-C-standard-library-build-errors-with-Debian-13.patch"
|
||||
)
|
||||
|
||||
# Set PERFETTO_ARCH based on DEBIAN_ARCH
|
||||
if [[ -z "${PERFETTO_ARCH:-}" ]]; then
|
||||
case "$DEBIAN_ARCH" in
|
||||
amd64) PERFETTO_ARCH=x64;;
|
||||
arm64) PERFETTO_ARCH=arm64;;
|
||||
esac
|
||||
fi
|
||||
|
||||
git clone --branch "$PERFETTO_REVISION" --depth 1 https://github.com/google/perfetto /perfetto
|
||||
|
||||
pushd /perfetto
|
||||
|
||||
for patch in "${patch_files[@]}"; do
|
||||
echo "Applying patch: $patch"
|
||||
git am "$BASE_PWD/.gitlab-ci/container/patches/$patch"
|
||||
done
|
||||
|
||||
# Base GN args
|
||||
mkdir -p _build
|
||||
cat >_build/args.gn <<EOF
|
||||
is_debug=false
|
||||
target_cpu="${PERFETTO_ARCH}"
|
||||
target_os="${PERFETTO_TARGET}"
|
||||
EOF
|
||||
|
||||
case "$PERFETTO_TARGET" in
|
||||
linux)
|
||||
# Override Perfetto’s default toolchain selection here, as the bundled
|
||||
# arm64 toolchain is an x86-64 -> arm64 cross-compiler.
|
||||
cat >>_build/args.gn <<EOF
|
||||
is_system_compiler = true
|
||||
is_hermetic_clang = false
|
||||
ar = "ar"
|
||||
cc = "clang-${LLVM_VERSION}"
|
||||
cxx = "clang++-${LLVM_VERSION}"
|
||||
extra_ldflags = "-fuse-ld=lld-${LLVM_VERSION} -lpthread -ldl"
|
||||
EOF
|
||||
./tools/install-build-deps
|
||||
;;
|
||||
android)
|
||||
# No additional args needed when cross-building for Android
|
||||
./tools/install-build-deps --android
|
||||
;;
|
||||
*)
|
||||
echo "Unexpected PERFETTO_TARGET value: $PERFETTO_TARGET"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
./tools/gn gen _build/
|
||||
./tools/ninja -C _build/ tracebox
|
||||
|
||||
mkdir -p build
|
||||
cp _build/tracebox build/
|
||||
|
||||
"${STRIP_CMD:-strip}" build/tracebox || true
|
||||
|
||||
# Cleanup everything except build/
|
||||
find . -mindepth 1 -maxdepth 1 ! -name build -exec rm -rf {} +
|
||||
|
||||
popd
|
||||
|
||||
section_end perfetto
|
||||
|
|
@ -13,7 +13,7 @@ section_start piglit "Building piglit"
|
|||
# setting up the environment variables locally
|
||||
ci_tag_build_time_check "PIGLIT_TAG"
|
||||
|
||||
REV="2842979ebe03b99c33c3e49af5960c69be6c6d46"
|
||||
REV="4147e9d7aeb8ba26ffc25a90fc237588bcb3bb11"
|
||||
|
||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||
pushd /piglit
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@ section_start rust "Building Rust toolchain"
|
|||
# DEBIAN_BUILD_BASE_TAG
|
||||
# DEBIAN_TEST_BASE_TAG
|
||||
|
||||
MINIMUM_SUPPORTED_RUST_VERSION=$(python3 -c 'import tomllib; print(tomllib.load(open("clippy.toml", "rb"))["msrv"])')
|
||||
# This version number should match what we require in meson.build so we catch
|
||||
# build issues from patches relying on new features in newer Rust versions.
|
||||
# Keep this is sync with the `rustc.version()` check in meson.build, and with
|
||||
# the `rustup default` line in .gitlab-ci/meson/build.sh
|
||||
MINIMUM_SUPPORTED_RUST_VERSION=1.82.0
|
||||
|
||||
# This version number can be bumped freely, to benefit from the latest
|
||||
# diagnostics in CI `build-only` jobs, and for building external CI
|
||||
|
|
@ -35,7 +39,7 @@ curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
|
|||
|
||||
if [ "$1" = "build" ]
|
||||
then
|
||||
rustup toolchain install --profile minimal --component clippy,rustfmt "$MINIMUM_SUPPORTED_RUST_VERSION"
|
||||
rustup toolchain install --profile minimal --component clippy,rustfmt $MINIMUM_SUPPORTED_RUST_VERSION
|
||||
fi
|
||||
|
||||
find "$HOME"/.rustup/toolchains/*/lib -type f -name "*.so" -exec strip {} \;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ section_start vkd3d-proton "Building vkd3d-proton"
|
|||
# setting up the environment variables locally
|
||||
ci_tag_build_time_check "VKD3D_PROTON_TAG"
|
||||
|
||||
VKD3D_PROTON_COMMIT="33a41f9d14460f998c5ce8a4aab42ca1cce8dcc6"
|
||||
VKD3D_PROTON_COMMIT="0845d1b69c6b474debe39d25f0137bf108a42b92"
|
||||
|
||||
VKD3D_PROTON_DST_DIR="/vkd3d-proton-tests"
|
||||
VKD3D_PROTON_SRC_DIR="/vkd3d-proton-src"
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ elif [[ "$arch" = "i386" ]]; then
|
|||
rust_target=i686-unknown-linux-gnu
|
||||
elif [[ "$arch" = "ppc64el" ]]; then
|
||||
rust_target=powerpc64le-unknown-linux-gnu
|
||||
elif [[ "$arch" = "riscv64" ]]; then
|
||||
rust_target=riscv64gc-unknown-linux-gnu
|
||||
elif [[ "$arch" = "s390x" ]]; then
|
||||
rust_target=s390x-unknown-linux-gnu
|
||||
else
|
||||
|
|
|
|||
|
|
@ -121,30 +121,6 @@ debian/ppc64el_build:
|
|||
- job: debian/ppc64el_build
|
||||
optional: true
|
||||
|
||||
# Debian based RISC-V 64 cross-build image
|
||||
debian/riscv64_build:
|
||||
extends:
|
||||
- .use-debian/x86_64_build-base
|
||||
variables:
|
||||
MESA_IMAGE_TAG: &debian-riscv64_build ${DEBIAN_BUILD_TAG}
|
||||
LLVM_VERSION: &debian-riscv64-llvm 19
|
||||
|
||||
.use-debian/riscv64_build:
|
||||
tags:
|
||||
- $FDO_RUNNER_JOB_PRIORITY_TAG_X86_64
|
||||
extends:
|
||||
- .set-image-base-tag
|
||||
variables:
|
||||
MESA_BASE_TAG: *debian-x86_64_build-base
|
||||
MESA_IMAGE_PATH: "debian/riscv64_build"
|
||||
MESA_IMAGE_TAG: *debian-riscv64_build
|
||||
LLVM_VERSION: *debian-riscv64-llvm
|
||||
needs:
|
||||
- job: sanity
|
||||
optional: true
|
||||
- job: debian/riscv64_build
|
||||
optional: true
|
||||
|
||||
# Debian based s390x cross-build image
|
||||
debian/s390x_build:
|
||||
extends:
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
. .gitlab-ci/setup-test-env.sh
|
||||
|
||||
arch=riscv64
|
||||
|
||||
# Ephemeral packages (installed for this script and removed again at the end)
|
||||
EPHEMERAL=(
|
||||
libssl-dev
|
||||
)
|
||||
|
||||
apt-get -y install "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/build-mold.sh
|
||||
|
||||
apt-get purge -y "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/cross_build.sh
|
||||
|
|
@ -77,6 +77,28 @@ apt-get install -y --no-remove --no-install-recommends \
|
|||
|
||||
section_end debian_setup
|
||||
|
||||
############### Build piglit replayer
|
||||
|
||||
if [ "$DEBIAN_ARCH" != "armhf" ]; then
|
||||
# We don't run any _piglit_ Vulkan tests in the containers.
|
||||
PIGLIT_OPTS="-DPIGLIT_USE_WAFFLE=ON
|
||||
-DPIGLIT_USE_GBM=OFF
|
||||
-DPIGLIT_USE_WAYLAND=OFF
|
||||
-DPIGLIT_USE_X11=OFF
|
||||
-DPIGLIT_BUILD_GLX_TESTS=OFF
|
||||
-DPIGLIT_BUILD_EGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_WGL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES1_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES2_TESTS=OFF
|
||||
-DPIGLIT_BUILD_GLES3_TESTS=OFF
|
||||
-DPIGLIT_BUILD_CL_TESTS=OFF
|
||||
-DPIGLIT_BUILD_VK_TESTS=OFF
|
||||
-DPIGLIT_BUILD_DMA_BUF_TESTS=OFF" \
|
||||
PIGLIT_BUILD_TARGETS="piglit_replayer" \
|
||||
. .gitlab-ci/container/build-piglit.sh
|
||||
fi
|
||||
|
||||
############### Build dEQP VK
|
||||
|
||||
DEQP_API=tools \
|
||||
|
|
|
|||
|
|
@ -101,12 +101,12 @@ EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DAND
|
|||
|
||||
DEQP_API=GLES \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_ANDROID_EXE_LOGCAT=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
DEQP_API=VK \
|
||||
DEQP_TARGET="android" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_ANDROID_EXE_LOGCAT=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
EXTRA_CMAKE_ARGS="-DDEQP_ANDROID_EXE=ON -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=$ANDROID_SDK_VERSION" \
|
||||
. .gitlab-ci/container/build-deqp.sh
|
||||
|
||||
rm -rf /VK-GL-CTS
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
From 067676253ad11846f420087d30021629f3c43382 Mon Sep 17 00:00:00 2001
|
||||
From: Valentine Burley <valentine.burley@collabora.com>
|
||||
Date: Fri, 11 Apr 2025 16:51:08 +0200
|
||||
Subject: Revert "Add missing context deletion"
|
||||
|
||||
This reverts commit 195ee2c99d3174e738506cc86828766805c0ede9.
|
||||
---
|
||||
.../modules/gles31/es31cComputeShaderTests.cpp | 11 -----------
|
||||
1 file changed, 11 deletions(-)
|
||||
|
||||
diff --git a/external/openglcts/modules/gles31/es31cComputeShaderTests.cpp b/external/openglcts/modules/gles31/es31cComputeShaderTests.cpp
|
||||
index 4c7349e59..ece33929d 100644
|
||||
--- a/external/openglcts/modules/gles31/es31cComputeShaderTests.cpp
|
||||
+++ b/external/openglcts/modules/gles31/es31cComputeShaderTests.cpp
|
||||
@@ -721,11 +721,6 @@ class LongRunningComputeFenceTest : public ComputeShaderBase
|
||||
glDeleteProgram(m_program2);
|
||||
glDeleteBuffers(2, &m_buffer);
|
||||
|
||||
- // Delete shared context and keep default context set
|
||||
- delete m_sharedContext;
|
||||
- m_sharedContext = NULL;
|
||||
- m_context.getRenderContext().makeCurrent();
|
||||
-
|
||||
return NO_ERROR;
|
||||
}
|
||||
};
|
||||
@@ -910,12 +905,6 @@ class LongRunningPersistentSSBOComputeTest : public ComputeShaderBase
|
||||
{
|
||||
glDeleteBuffers(2, &m_buffer);
|
||||
m_dataLoadStore = NULL;
|
||||
-
|
||||
- // Delete shared context and keep default context set
|
||||
- delete m_sharedContext;
|
||||
- m_sharedContext = NULL;
|
||||
- m_context.getRenderContext().makeCurrent();
|
||||
-
|
||||
return NO_ERROR;
|
||||
}
|
||||
};
|
||||
--
|
||||
2.45.2
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
From 6cd7a951f6a50d0f74c798035ac7ce201f2aa6f0 Mon Sep 17 00:00:00 2001
|
||||
From: Valentine Burley <valentine.burley@collabora.com>
|
||||
Date: Fri, 11 Apr 2025 16:51:03 +0200
|
||||
Subject: Revert "Fix issues with GLX reset notification strategy"
|
||||
|
||||
This reverts commit 3e6b3fb43eb9682641d8c880429255569a4472c0.
|
||||
---
|
||||
.../platform/lnx/X11/tcuLnxX11GlxPlatform.cpp | 23 ++++---------------
|
||||
1 file changed, 4 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp b/framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp
|
||||
index b21e6bcbd..e1d33823c 100644
|
||||
--- a/framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp
|
||||
+++ b/framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp
|
||||
@@ -147,7 +147,6 @@ private:
|
||||
GlxDisplay &m_display;
|
||||
::Visual *m_visual;
|
||||
const GLXFBConfig m_fbConfig;
|
||||
- glu::ResetNotificationStrategy resetStrategy;
|
||||
};
|
||||
|
||||
class GlxDrawable
|
||||
@@ -220,7 +219,6 @@ public:
|
||||
virtual const tcu::RenderTarget &getRenderTarget(void) const;
|
||||
virtual glw::GenericFuncType getProcAddress(const char *name) const;
|
||||
const GLXContext &getGLXContext(void) const;
|
||||
- const GlxVisual &getGLXVisual(void) const;
|
||||
|
||||
private:
|
||||
GlxDisplay m_glxDisplay;
|
||||
@@ -412,31 +410,23 @@ GLXContext GlxVisual::createContext(const GlxContextFactory &factory, const Cont
|
||||
}
|
||||
}
|
||||
|
||||
- const GlxRenderContext *sharedGlxRenderContext = dynamic_cast<const GlxRenderContext *>(sharedContext);
|
||||
-
|
||||
- /* If there is a shared context, use same reset notification strategy. */
|
||||
- glu::ResetNotificationStrategy usedResetNotificationStrategy =
|
||||
- sharedGlxRenderContext ? sharedGlxRenderContext->getGLXVisual().resetStrategy : resetNotificationStrategy;
|
||||
-
|
||||
- if (usedResetNotificationStrategy != glu::RESET_NOTIFICATION_STRATEGY_NOT_SPECIFIED)
|
||||
+ if (resetNotificationStrategy != glu::RESET_NOTIFICATION_STRATEGY_NOT_SPECIFIED)
|
||||
{
|
||||
checkGlxExtension(m_display, "GLX_ARB_create_context_robustness");
|
||||
attribs.push_back(GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB);
|
||||
|
||||
- if (usedResetNotificationStrategy == glu::RESET_NOTIFICATION_STRATEGY_NO_RESET_NOTIFICATION)
|
||||
+ if (resetNotificationStrategy == glu::RESET_NOTIFICATION_STRATEGY_NO_RESET_NOTIFICATION)
|
||||
attribs.push_back(GLX_NO_RESET_NOTIFICATION_ARB);
|
||||
- else if (usedResetNotificationStrategy == glu::RESET_NOTIFICATION_STRATEGY_LOSE_CONTEXT_ON_RESET)
|
||||
+ else if (resetNotificationStrategy == glu::RESET_NOTIFICATION_STRATEGY_LOSE_CONTEXT_ON_RESET)
|
||||
attribs.push_back(GLX_LOSE_CONTEXT_ON_RESET_ARB);
|
||||
else
|
||||
TCU_THROW(InternalError, "Unknown reset notification strategy");
|
||||
}
|
||||
|
||||
- // Reset notification strategy used with this visual.
|
||||
- resetStrategy = resetNotificationStrategy;
|
||||
-
|
||||
// Terminate attrib list
|
||||
attribs.push_back(None);
|
||||
|
||||
+ const GlxRenderContext *sharedGlxRenderContext = dynamic_cast<const GlxRenderContext *>(sharedContext);
|
||||
const GLXContext &sharedGLXContext = sharedGlxRenderContext ? sharedGlxRenderContext->getGLXContext() : nullptr;
|
||||
|
||||
return TCU_CHECK_GLX(
|
||||
@@ -815,11 +805,6 @@ const GLXContext &GlxRenderContext::getGLXContext(void) const
|
||||
return m_GLXContext;
|
||||
}
|
||||
|
||||
-const GlxVisual &GlxRenderContext::getGLXVisual(void) const
|
||||
-{
|
||||
- return m_glxVisual;
|
||||
-}
|
||||
-
|
||||
MovePtr<ContextFactory> createContextFactory(EventState &eventState)
|
||||
{
|
||||
return MovePtr<ContextFactory>(new GlxContextFactory(eventState));
|
||||
--
|
||||
2.45.2
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
From b512e6d5a0c79b194293936bd06656646913704e Mon Sep 17 00:00:00 2001
|
||||
From: Valentine Burley <valentine.burley@collabora.com>
|
||||
Date: Fri, 11 Apr 2025 16:50:57 +0200
|
||||
Subject: Revert "Fix spurious failures when using a config without
|
||||
pbuffer support"
|
||||
|
||||
This reverts commit 415a0ba8ecde404ef37ce96ece55b46854b44888.
|
||||
---
|
||||
external/openglcts/modules/common/glcTestSubcase.cpp | 10 ----------
|
||||
framework/egl/egluGLContextFactory.cpp | 2 --
|
||||
2 files changed, 12 deletions(-)
|
||||
|
||||
diff --git a/external/openglcts/modules/common/glcTestSubcase.cpp b/external/openglcts/modules/common/glcTestSubcase.cpp
|
||||
index 93e58c18a..cd43cc068 100644
|
||||
--- a/external/openglcts/modules/common/glcTestSubcase.cpp
|
||||
+++ b/external/openglcts/modules/common/glcTestSubcase.cpp
|
||||
@@ -233,11 +233,6 @@ TestSubcase::IterateResult TestSubcase::iterate(void)
|
||||
if (subError == ERROR)
|
||||
log.writeMessage("Test Setup() failed");
|
||||
}
|
||||
- catch (const tcu::NotSupportedError &ex)
|
||||
- {
|
||||
- log.writeMessage(ex.what());
|
||||
- subError = NOT_SUPPORTED;
|
||||
- }
|
||||
catch (const runtime_error &ex)
|
||||
{
|
||||
log.writeMessage(ex.what());
|
||||
@@ -258,11 +253,6 @@ TestSubcase::IterateResult TestSubcase::iterate(void)
|
||||
if (subError == ERROR)
|
||||
log.writeMessage("Test Run() failed");
|
||||
}
|
||||
- catch (const tcu::NotSupportedError &ex)
|
||||
- {
|
||||
- log.writeMessage(ex.what());
|
||||
- subError = NOT_SUPPORTED;
|
||||
- }
|
||||
catch (const runtime_error &ex)
|
||||
{
|
||||
log.writeMessage(ex.what());
|
||||
diff --git a/framework/egl/egluGLContextFactory.cpp b/framework/egl/egluGLContextFactory.cpp
|
||||
index 66783ad8b..f347b40ad 100644
|
||||
--- a/framework/egl/egluGLContextFactory.cpp
|
||||
+++ b/framework/egl/egluGLContextFactory.cpp
|
||||
@@ -539,8 +539,6 @@ void RenderContext::postIterate(void)
|
||||
|
||||
if (m_window)
|
||||
{
|
||||
- EGLU_CHECK_CALL(egl, makeCurrent(m_eglDisplay, m_eglSurface, m_eglSurface, m_eglContext));
|
||||
-
|
||||
EGLBoolean swapOk = egl.swapBuffers(m_eglDisplay, m_eglSurface);
|
||||
EGLint error = egl.getError();
|
||||
const bool badWindow = error == EGL_BAD_SURFACE || error == EGL_BAD_NATIVE_WINDOW;
|
||||
--
|
||||
2.45.2
|
||||
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
From 7a5a9e5be4306637cd3a0ef0f770832f4b4cf4b4 Mon Sep 17 00:00:00 2001
|
||||
From: Laura Nao <laura.nao@collabora.com>
|
||||
Date: Wed, 12 Nov 2025 14:45:32 +0100
|
||||
Subject: [PATCH] Fix C++ standard library build errors with Debian 13
|
||||
|
||||
Address missing <algorithm> and <optional> includes that caused build
|
||||
failures ("no member named 'find' in namespace 'std'" and
|
||||
"error: no template named 'optional' in namespace 'std'") when building
|
||||
with the native toolchain on Debian 13.
|
||||
|
||||
This was fixed upstream in v48[1] and v49[2] respectively, so this patch
|
||||
can be dropped once Perfetto is updated to v48+.
|
||||
|
||||
[1] https://github.com/google/perfetto/commit/d005c0123b2f929b918359a53ffe61d7ca2212a0
|
||||
[2] https://github.com/google/perfetto/commit/acc24608c84d2d2d8d684f40a110d0a6f4eddc51
|
||||
|
||||
Signed-off-by: Laura Nao <laura.nao@collabora.com>
|
||||
---
|
||||
src/profiling/common/producer_support.cc | 1 +
|
||||
src/traced/probes/sys_stats/sys_stats_data_source.h | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/profiling/common/producer_support.cc b/src/profiling/common/producer_support.cc
|
||||
index 5303658..e9e193d 100644
|
||||
--- a/src/profiling/common/producer_support.cc
|
||||
+++ b/src/profiling/common/producer_support.cc
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "src/profiling/common/producer_support.h"
|
||||
|
||||
+#include <algorithm>
|
||||
#include <optional>
|
||||
|
||||
#include "perfetto/ext/base/android_utils.h"
|
||||
diff --git a/src/traced/probes/sys_stats/sys_stats_data_source.h b/src/traced/probes/sys_stats/sys_stats_data_source.h
|
||||
index e09cd8a..7e4749b 100644
|
||||
--- a/src/traced/probes/sys_stats/sys_stats_data_source.h
|
||||
+++ b/src/traced/probes/sys_stats/sys_stats_data_source.h
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
+#include <optional>
|
||||
#include <string>
|
||||
|
||||
#include "perfetto/ext/base/paged_memory.h"
|
||||
--
|
||||
2.39.5
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ if [ -n "${FLUSTER_TAG:-}" ]; then
|
|||
export LIBVA_MESSAGING_LEVEL=1
|
||||
fi
|
||||
|
||||
if [ -n "${PIGLIT_TAG:-}" ]; then
|
||||
if [ -n "$PIGLIT_TAG" ]; then
|
||||
# Are we using the right Piglit version?
|
||||
ci_tag_test_time_check "PIGLIT_TAG"
|
||||
elif [ -d "/piglit" ]; then
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
# collabora | lava | @daniels, @sergi
|
||||
# igalia | baremetal/poe-powered, ci-tron | @jasuarez, @chema
|
||||
# lima | lava | @enunes
|
||||
# lumag | ci-tron | @lumag
|
||||
# microsoft | custom | @jenatali, @alatiera
|
||||
# ondracka | ci-tron | @ondracka
|
||||
# pengutronix | lava | @hnez, @lynxeye
|
||||
|
|
@ -293,27 +292,6 @@
|
|||
- !reference [.pengutronix-farm-rules, rules]
|
||||
|
||||
|
||||
.lumag-farm-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/lumag ]
|
||||
when: never
|
||||
- changes: [ .ci-farms-disabled/lumag ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: on_success
|
||||
- changes: [ .ci-farms-disabled/* ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: never
|
||||
|
||||
.lumag-farm-manual-rules:
|
||||
rules:
|
||||
- exists: [ .ci-farms-disabled/lumag ]
|
||||
when: never
|
||||
- changes: [ .ci-farms-disabled/lumag ]
|
||||
if: '$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: never
|
||||
- !reference [.lumag-farm-rules, rules]
|
||||
|
||||
|
||||
# Skip container & build jobs when disabling any farm, and run them if any
|
||||
# farm gets re-enabled.
|
||||
# Only apply these rules in MR context, because otherwise we get a false
|
||||
|
|
@ -370,10 +348,6 @@
|
|||
changes: [ .ci-farms-disabled/pengutronix ]
|
||||
exists: [ .ci-farms-disabled/pengutronix ]
|
||||
when: never
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: [ .ci-farms-disabled/lumag ]
|
||||
exists: [ .ci-farms-disabled/lumag ]
|
||||
when: never
|
||||
# Any other change to ci-farms/* means some farm is getting re-enabled.
|
||||
# Run jobs in Marge pipelines (and let it fallback to manual otherwise)
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $GITLAB_USER_LOGIN == "marge-bot"'
|
||||
|
|
|
|||
|
|
@ -19,27 +19,27 @@ include:
|
|||
- .gitlab-ci/conditional-build-image-tags.yml
|
||||
|
||||
variables:
|
||||
DEBIAN_BUILD_BASE_TAG: "20251016-riscv"
|
||||
DEBIAN_BUILD_BASE_TAG: "20251014-testfix"
|
||||
DEBIAN_BUILD_TAG: "20250926-D3D618"
|
||||
|
||||
DEBIAN_TEST_BASE_TAG: "20251203-virgl"
|
||||
DEBIAN_TEST_ANDROID_TAG: "20251212-angle-2e"
|
||||
DEBIAN_TEST_GL_TAG: "20251212-piglit-28"
|
||||
DEBIAN_TEST_BASE_TAG: "20250926-gitlab"
|
||||
DEBIAN_TEST_ANDROID_TAG: "20251014-vkcts"
|
||||
DEBIAN_TEST_GL_TAG: "20251014-vkcts"
|
||||
DEBIAN_TEST_VIDEO_TAG: "20250813-vector"
|
||||
DEBIAN_TEST_VK_TAG: "20251208-deqp"
|
||||
DEBIAN_TEST_VK_TAG: "20251014-vkcts"
|
||||
|
||||
ALPINE_X86_64_BUILD_TAG: "20251001-realninja"
|
||||
|
||||
FEDORA_X86_64_BUILD_TAG: "20250917-rust"
|
||||
|
||||
KERNEL_TAG: "v6.17-mesa-ceea"
|
||||
KERNEL_TAG: "v6.16-mesa-9d85"
|
||||
KERNEL_REPO: "gfx-ci/linux"
|
||||
PKG_REPO_REV: "0d2527f6"
|
||||
FIRMWARE_TAG: "8fc31b97"
|
||||
FIRMWARE_TAG: "36f9bbfa"
|
||||
FIRMWARE_REPO: "gfx-ci/firmware"
|
||||
|
||||
WINDOWS_X64_MSVC_TAG: "20251120-bison"
|
||||
WINDOWS_X64_MSVC_TAG: "20250906-d3d10umd"
|
||||
|
||||
WINDOWS_X64_BUILD_TAG: "20251120-bison"
|
||||
WINDOWS_X64_BUILD_TAG: "20251001-D3D618"
|
||||
|
||||
WINDOWS_X64_TEST_TAG: "20251120-bison"
|
||||
WINDOWS_X64_TEST_TAG: "20250926-D3D618"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ variables:
|
|||
# 4. lava/health-check-docker - the slim container used for fastboot
|
||||
# Set image: directly instead of extending .set-image to avoid conflicts
|
||||
# with MESA_IMAGE_PATH and FDO_DISTRIBUTION_TAG between the containers.
|
||||
image: registry.freedesktop.org/gfx-ci/lava-job-submitter/alpine/x86_64_lava-trigger:20251111.0
|
||||
image: registry.freedesktop.org/gfx-ci/lava-job-submitter/alpine/x86_64_lava-trigger:20251009-fastboot
|
||||
# Cancel job if a newer commit is pushed to the same branch
|
||||
interruptible: true
|
||||
# The jobs themselves shouldn't actually run for an hour, of course.
|
||||
|
|
@ -66,6 +66,8 @@ variables:
|
|||
- $RUNNER_TAG
|
||||
after_script:
|
||||
- curl -L --retry 4 -f --retry-connrefused --retry-delay 30 -s "https://${JOB_RESULTS_PATH}" | tar --warning=no-timestamp --zstd -x
|
||||
needs:
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
|
||||
.lava-x86_64-test:
|
||||
extends:
|
||||
|
|
@ -87,6 +89,7 @@ variables:
|
|||
HWCI_TEST_SCRIPT: install/cuttlefish-runner.sh
|
||||
S3_ANDROID_ARTIFACT_NAME: mesa-x86_64-android-debug
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-android
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -100,6 +103,7 @@ variables:
|
|||
- .use-debian/x86_64_test-gl
|
||||
- .lava-x86_64-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -114,6 +118,7 @@ variables:
|
|||
DEQP_FORCE_ASAN: 1
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-asan-debugoptimized
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -125,6 +130,7 @@ variables:
|
|||
- .use-debian/x86_64_test-video
|
||||
- .lava-x86_64-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-video
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -136,6 +142,7 @@ variables:
|
|||
- .use-debian/x86_64_test-vk
|
||||
- .lava-x86_64-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-vk
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -150,6 +157,7 @@ variables:
|
|||
DEQP_FORCE_ASAN: 1
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-asan-debugoptimized
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/x86_64_test-vk
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -171,6 +179,7 @@ variables:
|
|||
- .use-debian/arm32_test-gl
|
||||
- .lava-arm32-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/arm32_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -192,6 +201,7 @@ variables:
|
|||
- .use-debian/arm64_test-gl
|
||||
- .lava-arm64-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/arm64_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -206,6 +216,7 @@ variables:
|
|||
DEQP_FORCE_ASAN: 1
|
||||
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/arm64_test-gl
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -217,6 +228,7 @@ variables:
|
|||
- .use-debian/arm64_test-vk
|
||||
- .lava-arm64-test
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/arm64_test-vk
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
@ -231,6 +243,7 @@ variables:
|
|||
DEQP_FORCE_ASAN: 1
|
||||
S3_ARTIFACT_NAME: mesa-arm64-asan-debugoptimized
|
||||
needs:
|
||||
- !reference [.lava-test, needs]
|
||||
- job: debian/arm64_test-vk
|
||||
artifacts: false
|
||||
optional: true
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@ fi
|
|||
|
||||
# Android manages the rust toolchain differently, ignore that case
|
||||
if [ "$CI_JOB_STAGE" = "build-for-tests" ] && [[ "$CI_JOB_NAME" != *android* ]]; then
|
||||
rustup default "$(python3 -c 'import tomllib; print(tomllib.load(open("'"$CI_PROJECT_DIR"'/clippy.toml", "rb"))["msrv"])')"
|
||||
# Keep this in sync with the `rustc.version()` check in meson.build, and
|
||||
# MINIMUM_SUPPORTED_RUST_VERSION in .gitlab-ci/container/build-rust.sh
|
||||
rustup default 1.82.0
|
||||
fi
|
||||
|
||||
# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected
|
||||
|
|
|
|||
|
|
@ -11,17 +11,11 @@ set -o xtrace
|
|||
|
||||
CROSS_FILE=/cross_file-"$CROSS".txt
|
||||
|
||||
if [ -d install/bin ]; then
|
||||
# Keep pps-producer binary for tests that need it.
|
||||
# Remove all other binaries to save space.
|
||||
find install/bin -type f -not -name 'pps-producer' -delete
|
||||
fi
|
||||
|
||||
# Delete unused includes from artifacts to save space.
|
||||
rm -rf install/include
|
||||
# Delete unused bin and includes from artifacts to save space.
|
||||
rm -rf install/bin install/include
|
||||
rm -f install/lib/*.a
|
||||
|
||||
# Strip the drivers and binaries in the artifacts to cut 80% of the artifacts size.
|
||||
# Strip the drivers in the artifacts to cut 80% of the artifacts size.
|
||||
if [ -n "$CROSS" ]; then
|
||||
STRIP=$(sed -n -E "s/strip\s*=\s*\[?'(.*)'\]?/\1/p" "$CROSS_FILE")
|
||||
if [ -z "$STRIP" ]; then
|
||||
|
|
@ -32,7 +26,7 @@ else
|
|||
STRIP="strip"
|
||||
fi
|
||||
if [ -z "$ARTIFACTS_DEBUG_SYMBOLS" ]; then
|
||||
find install -type f -executable -exec $STRIP --strip-debug {} \;
|
||||
find install -name \*.so -exec $STRIP --strip-debug {} \;
|
||||
fi
|
||||
|
||||
git_sha=$(git rev-parse --short=10 HEAD)
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@ for driver in freedreno intel lima v3d vc4; do
|
|||
section_end shader-db-${driver}
|
||||
done
|
||||
|
||||
# Run shader-db over a number of supported platforms for crocus/iris
|
||||
for platform in hsw bdw skl mtl; do
|
||||
section_start "shader-db-intel-${platform}" "Running shader-db for intel - ${platform}"
|
||||
env LD_PRELOAD="$LIBDIR/libintel_noop_drm_shim.so" \
|
||||
INTEL_STUB_GPU_PLATFORM="${platform}" \
|
||||
./run -j"${FDO_CI_CONCURRENT:-4}" ./shaders \
|
||||
> "$ARTIFACTSDIR/intel-${platform}-shader-db.txt"
|
||||
section_end "shader-db-intel-${platform}"
|
||||
done
|
||||
|
||||
# Run shader-db over a number of supported chipsets for nouveau
|
||||
for chipset in 40 a3 c0 e4 f0 134 162; do
|
||||
section_start shader-db-nouveau-${chipset} "Running shader-db for nouveau - ${chipset}"
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
- job: debian/x86_64_test-gl
|
||||
optional: true
|
||||
- job: debian-x86_64
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
variables:
|
||||
DEBIAN_ARCH: amd64
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
||||
|
|
@ -53,6 +54,7 @@
|
|||
- job: debian-x86_64
|
||||
- job: debian/x86_64_test-vk
|
||||
optional: true
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
variables:
|
||||
DEBIAN_ARCH: amd64
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
||||
|
|
@ -64,6 +66,7 @@
|
|||
needs:
|
||||
- job: debian/x86_64_test-gl
|
||||
optional: true
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
variables:
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-default-debugoptimized
|
||||
|
||||
|
|
@ -88,6 +91,7 @@
|
|||
- job: debian/x86_64_test-android
|
||||
artifacts: false
|
||||
optional: true
|
||||
- !reference [.required-for-hardware-jobs, needs]
|
||||
timeout: 20m
|
||||
script:
|
||||
- ./install/cuttlefish-runner.sh
|
||||
|
|
@ -178,3 +182,13 @@
|
|||
- rm -rf install
|
||||
- (set -x; curl -L --retry 4 -f --retry-all-errors --retry-delay 60 ${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${S3_ARTIFACT_NAME}.tar.zst | tar --zstd -x)
|
||||
- section_end artifacts_download
|
||||
|
||||
# Jobs that need to pass before spending hardware resources on further testing
|
||||
.required-for-hardware-jobs:
|
||||
needs:
|
||||
- job: rustfmt
|
||||
optional: true
|
||||
artifacts: false
|
||||
- job: yaml-toml-shell-py-test
|
||||
optional: true
|
||||
artifacts: false
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ Start-Process -NoNewWindow -Wait -FilePath C:\vs_buildtools.exe `
|
|||
"--add", "Microsoft.VisualStudio.Component.VC.ATL", `
|
||||
"--add", "Microsoft.VisualStudio.Component.VC.ATLMFC", `
|
||||
"--add", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", `
|
||||
"--add", "Microsoft.VisualStudio.Component.VC.14.29.16.11.ATL", ` # MSVC 2019
|
||||
"--add", "Microsoft.VisualStudio.Component.VC.14.29.16.11.MFC", `
|
||||
"--add", "Microsoft.VisualStudio.ComponentGroup.VC.Tools.142.x86.x64", `
|
||||
"--add", "Microsoft.VisualStudio.Component.VC.Llvm.Clang", `
|
||||
"--add", "Microsoft.VisualStudio.Component.Graphics.Tools", `
|
||||
|
|
|
|||
|
|
@ -36,23 +36,22 @@ $MACHINE_PATH=[System.Environment]::GetEnvironmentVariable('PATH', [System.Envir
|
|||
Write-Output "Before winget install USER_PATH:$USER_PATH MACHINE_PATH:$MACHINE_PATH"
|
||||
|
||||
$Packages = @(
|
||||
'Microsoft.WindowsWDK.10.0.26100,10.1.26100.6584',
|
||||
'Python.Python.3.13,3.13.9',
|
||||
'Ninja-build.Ninja,1.13.1',
|
||||
'Kitware.CMake,4.1.3',
|
||||
'Git.Git,2.52.0',
|
||||
'WinFlexBison.win_flex_bison,2.5.24',
|
||||
'bloodrock.pkg-config-lite,0.28-1'
|
||||
'Microsoft.WindowsWDK.10.0.26100',
|
||||
'Python.Python.3.13',
|
||||
'Ninja-build.Ninja',
|
||||
'Kitware.CMake',
|
||||
'Git.Git',
|
||||
'WinFlexBison.win_flex_bison',
|
||||
'bloodrock.pkg-config-lite'
|
||||
)
|
||||
|
||||
$ProgressPreference = "SilentlyContinue"
|
||||
New-Item -Force -ItemType 'directory' -Name 'flexbison' -Path 'C:\temp'
|
||||
foreach ($package in $Packages)
|
||||
{
|
||||
$package_id, $package_version = $package -split ',', 2
|
||||
Write-Output "Installing $package_id with version $package_version by winget"
|
||||
Write-Output "Installing $package with winget"
|
||||
For ($i = 0; $i -lt 5; $i++) {
|
||||
winget install --verbose --silent --accept-package-agreements --source winget --exact --id $package_id --version $package_version --log C:\temp\wdk-install.log
|
||||
winget install --verbose --silent --accept-package-agreements --source winget --exact --id $package --log C:\temp\wdk-install.log
|
||||
$packages_installed = $?
|
||||
if ($packages_installed) {
|
||||
Break
|
||||
|
|
|
|||
4
.mailmap
4
.mailmap
|
|
@ -460,8 +460,6 @@ Martin Roukala (né Peres) <martin.roukala@mupuf.org> <martin.peres@mupuf.org>
|
|||
Martin Roukala (né Peres) <martin.roukala@mupuf.org> <martin.peres@linux.intel.com>
|
||||
Martin Roukala (né Peres) <martin.roukala@mupuf.org> <martin.peres@labri.fr>
|
||||
|
||||
Mary Guillemard <mary@mary.zone> <mary.guillemard@collabora.com>
|
||||
|
||||
Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@gmx.net>
|
||||
Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Froehlich <Mathias.Froehlich@web.de>
|
||||
Mathias Fröhlich <mathias.froehlich@gmx.net> Mathias Frohlich <M.Froehlich@science-computing.de>
|
||||
|
|
@ -616,8 +614,6 @@ Rune Petersen <rune@megahurts.dk> Rune Peterson <rune@megahurts.dk>
|
|||
|
||||
Ryan Houdek <sonicadvance1@gmail.com> <Sonicadvance1@gmail.com>
|
||||
|
||||
Ryan Mckeever <ryan.mckeever@collabora.com> <rebecca.mckeever@collabora.com>
|
||||
|
||||
Sam Hocevar <sam@hocevar.net> Sam Hocevar <sam@zoy.org>
|
||||
|
||||
Samuel Iglesias Gonsálvez <siglesias@igalia.com> Samuel Iglesias Gonsalvez <siglesias@igalia.com>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ issues:
|
|||
'intel/executor': 'intel-executor'
|
||||
'iris': 'iris'
|
||||
'isl': 'ISL'
|
||||
'kk': 'KosmicKrisp'
|
||||
'lima': 'lima'
|
||||
'lima/ppir': 'lima'
|
||||
'llvmpipe': 'llvmpipe'
|
||||
|
|
@ -63,7 +62,6 @@ issues:
|
|||
'panfrost': 'panfrost'
|
||||
'panvk': 'panvk'
|
||||
'pan/midgard': 'panfrost'
|
||||
'poly': 'poly'
|
||||
'pvr': 'powervr'
|
||||
'r100': 'r100'
|
||||
'r200': 'r200'
|
||||
|
|
@ -270,8 +268,8 @@ merge_requests:
|
|||
'^src/intel/tools/': ['intel-tools']
|
||||
'^src/intel/vulkan/': ['ANV']
|
||||
'^src/intel/vulkan_hasvk/': ['hasvk']
|
||||
'^src/kosmickrisp/': ['KosmicKrisp']
|
||||
'^src/loader/': ['loader']
|
||||
'^src/mapi/': ['mapi']
|
||||
'^src/mesa/drivers/dri/i915/': ['i915']
|
||||
'^src/mesa/drivers/dri/i965/': ['i965']
|
||||
'^src/mesa/drivers/dri/nouveau/': ['vieux']
|
||||
|
|
@ -297,7 +295,6 @@ merge_requests:
|
|||
'^src/nouveau/winsys/': ['NVK']
|
||||
'^src/panfrost/': ['panfrost']
|
||||
'^src/panfrost/vulkan/': ['panvk']
|
||||
'^src/poly/': ['poly']
|
||||
'^src/virtio/vulkan/': ['venus']
|
||||
'^src/virtio/venus-protocol/': ['venus']
|
||||
'^src/virtio/ci/': ['venus']
|
||||
|
|
@ -305,7 +302,7 @@ merge_requests:
|
|||
'^src/util/00-mesa-defaults.conf': ['drirc']
|
||||
'^src/vulkan/': ['vulkan']
|
||||
'^src/vulkan/wsi/': ['wsi']
|
||||
'^VERSION$': ['mesa-release']
|
||||
'^VERSION$': ['maintainer-scripts']
|
||||
|
||||
'Android': ['android']
|
||||
'EGL': ['EGL']
|
||||
|
|
|
|||
11872
.pick_status.json
Normal file
11872
.pick_status.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -137,10 +137,6 @@ gitlab-ci*.yml @eric
|
|||
/src/gallium/drivers/iris/ @kwg @llandwerlin @idr
|
||||
/src/gallium/drivers/i915/ @anholt
|
||||
|
||||
# KosmicKrisp
|
||||
/src/kosmickrisp @aitor
|
||||
/src/kosmickrisp/compiler @agoldmints
|
||||
|
||||
# Microsoft
|
||||
/src/microsoft/ @jenatali
|
||||
/src/gallium/drivers/d3d12/ @jenatali
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
26.0.0-devel
|
||||
25.3.0
|
||||
|
|
|
|||
|
|
@ -45,13 +45,17 @@ REFRESH_WAIT_LOG = 10
|
|||
REFRESH_WAIT_JOBS = 6
|
||||
MAX_ENABLE_JOB_ATTEMPTS = 3
|
||||
|
||||
STATUS_COLORS = defaultdict(lambda: "", {
|
||||
STATUS_COLORS = {
|
||||
"created": "",
|
||||
"running": "[blue]",
|
||||
"success": "[green]",
|
||||
"failed": "[red]",
|
||||
"canceled": "[magenta]",
|
||||
"canceling": "[magenta]",
|
||||
})
|
||||
"manual": "",
|
||||
"pending": "",
|
||||
"skipped": "",
|
||||
}
|
||||
|
||||
COMPLETED_STATUSES = frozenset({"success", "failed"})
|
||||
RUNNING_STATUSES = frozenset({"created", "pending", "running"})
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ class GitlabGQL:
|
|||
logging.error(traceback_str)
|
||||
self.invalidate_query_cache()
|
||||
logging.error("Cache invalidated, retrying without cache")
|
||||
finally:
|
||||
return run_uncached()
|
||||
|
||||
def _query(
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import gitlab
|
|||
from gitlab.base import RESTObjectList
|
||||
from gitlab.exceptions import GitlabAuthenticationError
|
||||
from gitlab.v4.objects import Project, ProjectMergeRequest
|
||||
from gitlab_common import get_token_from_default_dir, read_token, pretty_duration
|
||||
from gitlab_common import read_token, pretty_duration
|
||||
from rich.console import Console
|
||||
|
||||
REFRESH_WAIT = 30
|
||||
|
|
@ -47,7 +47,6 @@ def parse_args() -> argparse.Namespace:
|
|||
parse.add_argument(
|
||||
"--token",
|
||||
metavar="token",
|
||||
default=get_token_from_default_dir(),
|
||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||
)
|
||||
return parse.parse_args()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ kaleido==0.2.*
|
|||
pandas==2.*
|
||||
plotly==5.*
|
||||
python-dateutil==2.*
|
||||
python-gitlab==5.*
|
||||
python-gitlab==4.*
|
||||
rich==14.1.*
|
||||
ruamel.yaml.clib==0.2.*
|
||||
ruamel.yaml==0.17.*
|
||||
|
|
|
|||
|
|
@ -226,8 +226,8 @@ async def gather_bugs(version: str) -> typing.List[str]:
|
|||
loop = asyncio.get_event_loop()
|
||||
async with aiohttp.ClientSession(loop=loop) as session:
|
||||
results = await asyncio.gather(*[get_bug(session, i) for i in issues])
|
||||
# Remove duplicates.
|
||||
bugs = sorted(set(results))
|
||||
typing.cast(typing.Tuple[str, ...], results)
|
||||
bugs = list(results)
|
||||
if not bugs:
|
||||
bugs = ['None']
|
||||
return bugs
|
||||
|
|
|
|||
|
|
@ -24,9 +24,6 @@ import typing
|
|||
|
||||
import pytest
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
import aiohttp
|
||||
|
||||
# AsyncMock is new in 3.8, so if we're using an older version we need the
|
||||
# backported version of mock
|
||||
if sys.version_info >= (3, 8):
|
||||
|
|
@ -202,25 +199,7 @@ async def test_parse_issues(content: str, bugs: typing.List[str]) -> None:
|
|||
ids = await parse_issues('1234 not used')
|
||||
assert set(ids) == set(bugs)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_rst_escape():
|
||||
out = inliner.quoteInline('foo@bar')
|
||||
assert out == 'foo\@bar'
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_gather_bugs_duplicates():
|
||||
mock_gc = mock.AsyncMock(return_value='something')
|
||||
mock_pi = mock.AsyncMock(return_value=['a', 'b', 'a', 'a', 'c', 'b'])
|
||||
|
||||
async def get_bug(session: 'aiohttp.ClientSession', bug_id: str) -> str:
|
||||
return bug_id
|
||||
|
||||
with mock.patch('bin.gen_release_notes.gather_commits', mock_gc), \
|
||||
mock.patch('bin.gen_release_notes.parse_issues', mock_pi), \
|
||||
mock.patch('bin.gen_release_notes.get_bug', get_bug):
|
||||
bugs = await gather_bugs('')
|
||||
|
||||
assert bugs == ['a', 'b', 'c']
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ Caterina Shablia, caterina.shablia@collabora.com, nanokatze
|
|||
Chia-I Wu, olvaffe@gmail.com, olv
|
||||
Christian Gmeiner, cgmeiner@igalia.com, austriancoder
|
||||
Christopher Michael, cmichael@igalia.com, cpmichael
|
||||
Christoph Pillmayer, christoph.pillmayer@arm.com, chrpil
|
||||
Colin Marc, hi@colinmarc.com, colinmarc
|
||||
Connor Abbott, cwabbott0@gmail.com, cwabbott0
|
||||
Corentin Noël, corentin.noel@collabora.com, tintou
|
||||
|
|
@ -85,11 +84,11 @@ Lukas Lipp, lippls@hotmail.com, fknfilewalker
|
|||
Maíra Canal, mcanal@igalia.com, mairacanal
|
||||
Manuel Dun, manueldun@gmail.com, manueldun
|
||||
Marc Herbert, marc.herbert@gmail.com, marc-hb
|
||||
Marek Olšák, marek.olsak@amd.com, mareko
|
||||
Marek Olšák, maraeo@gmail.com, mareko
|
||||
Mark Collins, mark@igalia.com, PixelyIon
|
||||
Martin Krastev, martin.krastev@broadcom.com, blu
|
||||
Martin Roukala (né Peres), martin.roukala@mupuf.org, mupuf
|
||||
Mary Guillemard, mary@mary.zone, marysaka
|
||||
Mary Guillemard, mary.guillemard@collabora.com, marysaka
|
||||
Matthew Brost, matthew.brost@intel.com, mbrost
|
||||
Matt Turner, mattst88@gmail.com, mattst88
|
||||
Mauro Rossi, issor.oruam@gmail.com, issor.oruam
|
||||
|
|
@ -108,11 +107,11 @@ Peyton Lee, peytolee@amd.com, peytolee
|
|||
Pierre-Eric Pelloux-Prayer, pelloux@gmail.com, pepp
|
||||
Pohsiang (John) Hsu, pohhsu@microsoft.com, pohhsu_microsoft
|
||||
Qiang Yu, yuq825@gmail.com, yuq825
|
||||
Rebecca Mckeever, rebecca.mckeever@collabora.com, rmckeever
|
||||
Rhys Perry, pendingchaos02@gmail.com, pendingchaos
|
||||
Rob Clark, robclark@freedesktop.org, robclark
|
||||
Roland Scheidegger, roland.scheidegger@broadcom.com, sroland
|
||||
Ruijing Dong, ruijing.dong@amd.com, rdong
|
||||
Ryan Mckeever, ryan.mckeever@collabora.com, rmckeever
|
||||
Sagar Ghuge, sagar.ghuge@intel.com, sagarghuge
|
||||
Samuel Pitoiset, samuel.pitoiset@gmail.com, hakzsam
|
||||
Saroj Kumar, saroj.kumar@amd.com, sarojk
|
||||
|
|
@ -135,6 +134,5 @@ Vinson Lee, vlee@freedesktop.org, vlee
|
|||
Xaver Hugl, xaver.hugl@kde.org, Zamundaaa
|
||||
Yiwei Zhang, zzyiwei@chromium.org, zzyiwei
|
||||
Yogesh Mohan Marimuthu, yogesh.mohanmarimuthu@amd.com, yogeshmohan
|
||||
Yonggang Luo, luoyonggang@gmail.com, lygstate
|
||||
Zan Dobersek, zdobersek@igalia.com, zdobersek
|
||||
Zoltán Böszörményi, zboszor@gmail.com, zboszor
|
||||
|
|
|
|||
|
|
|
@ -80,7 +80,7 @@ def get_symbols_nm(nm, lib):
|
|||
if line.startswith(' '):
|
||||
continue
|
||||
fields = line.split()
|
||||
if len(fields) >= 2 and fields[1] == 'U':
|
||||
if len(fields) == 2 and fields[1] == 'U':
|
||||
continue
|
||||
symbol_name = fields[0]
|
||||
if platform_name == 'Linux' or platform_name == 'GNU' or platform_name.startswith('GNU/'):
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
# Keep this in sync with the `rustc.version()` check in meson.build
|
||||
msrv = "1.82.0"
|
||||
|
|
@ -24,7 +24,7 @@ def ext_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
|||
|
||||
parts = ext.split('_', 2)
|
||||
if parts[0] == 'VK':
|
||||
full_url = f'https://docs.vulkan.org/refpages/latest/refpages/source/{ext}.html'
|
||||
full_url = f'https://registry.khronos.org/vulkan/specs/latest/man/html/{ext}.html'
|
||||
elif parts[0] == 'GL':
|
||||
full_url = f'https://registry.khronos.org/OpenGL/extensions/{parts[1]}/{parts[1]}_{parts[2]}.txt'
|
||||
else:
|
||||
|
|
@ -37,7 +37,7 @@ def vkfeat_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
|||
text = utils.unescape(text)
|
||||
has_explicit_title, title, ext = split_explicit_title(text)
|
||||
|
||||
full_url = f'https://docs.vulkan.org/spec/latest/chapters/features.html#features-{ext}'
|
||||
full_url = f'https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-{ext}'
|
||||
|
||||
pnode = nodes.reference(title, title, internal=False, refuri=full_url)
|
||||
return [pnode], []
|
||||
|
|
|
|||
|
|
@ -444,101 +444,3 @@ the following line where the other BoardConfig files are included
|
|||
|
||||
Then we are set to continue following the official instructions to
|
||||
build the cuttlefish target and run it in the cuttlefish emulator.
|
||||
|
||||
.. _android-android-system-properties:
|
||||
|
||||
Android System Properties
|
||||
-------------------------
|
||||
|
||||
Android (generally) uses system properties rather than
|
||||
:doc:`environment variables <envvars>` to control Mesa/Gallium behavior,
|
||||
although there are some exceptions to this for
|
||||
:ref:`Android app developers <envvars-android-app-developers>`.
|
||||
|
||||
With the ``os_get_option()`` helper, the environment variable names are
|
||||
automatically translated to the corresponding system property name by:
|
||||
|
||||
- converting UPPER case to lower case
|
||||
- replacing ``_`` with ``.``
|
||||
- adding the ``mesa.`` prefix to ``<property_name>`` if it's not present already
|
||||
- and then querying the system property name with the following prefixes, in
|
||||
order:
|
||||
|
||||
#. ``debug.<property_name>``
|
||||
#. ``vendor.<property_name>``
|
||||
#. ``<property_name>``
|
||||
|
||||
For example, ``LIBGL_DEBUG`` will be queried as:
|
||||
|
||||
#. ``debug.mesa.libgl.debug``
|
||||
#. ``vendor.mesa.libgl.debug``
|
||||
#. ``mesa.libgl.debug``
|
||||
|
||||
This allows for default ``vendor.`` / ``mesa.`` properties to be overridden by
|
||||
users at run-time with ``debug.`` values.
|
||||
|
||||
System properties can be queried with:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ adb shell getprop <property_name>
|
||||
|
||||
System properties can be set with:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ adb shell setprop <property_name> <value>
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
$ adb shell setprop debug.mesa.libgl.debug verbose
|
||||
$ adb shell getprop debug.mesa.libgl.debug
|
||||
verbose
|
||||
|
||||
NOTE: Any driver that wishes to support Android system properties should replace
|
||||
any calls to ``getenv()`` with ``os_get_option()``, which automatically handles
|
||||
both environment variables and Android system properties.
|
||||
|
||||
.. _envvars-android-app-developers:
|
||||
|
||||
Android App Developers
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Android app developers have two options to control Mesa behavior on un-rooted
|
||||
devices:
|
||||
|
||||
- Environment variables, using the wrap shell script
|
||||
|
||||
- https://developer.android.com/ndk/guides/wrap-script.html
|
||||
|
||||
- ``debug.<property_name>`` system properties
|
||||
|
||||
App developers with access to rooted devices can also use ``vendor.`` and
|
||||
``mesa.`` values, although ``debug.`` prefixes are recommended.
|
||||
|
||||
While the system properties values are used for each app invocation once set,
|
||||
they do not persist across device reboots.
|
||||
|
||||
|
||||
Android Driver Developers
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Android driver developers have three options to control Mesa behavior on
|
||||
devices with ``root`` access:
|
||||
|
||||
#. ``debug.<property_name>``
|
||||
#. ``vendor.<property_name>``
|
||||
#. ``<property_name>``
|
||||
|
||||
The ``debug.`` prefix can be used without ``root``, while ``vendor.`` and
|
||||
``mesa.`` prefixes require ``root``.
|
||||
|
||||
Any of the values can be set in the device's makefile to control Mesa
|
||||
behavior, although ``vendor.`` and ``mesa.`` are typically used for this
|
||||
purpose.
|
||||
|
||||
While the system properties values are used for each app invocation once set
|
||||
at runtime, they do not persist across device reboots if configured with
|
||||
``setprop``.
|
||||
|
|
|
|||
|
|
@ -573,7 +573,7 @@ A typical work flow would be:
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
nc -lkvup $PORT | stdbuf -o0 xxd -pc -c 4 | awk -Wposix '{printf("%u:%u\n", "0x" $0, a[$0]++)}'
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -1,107 +0,0 @@
|
|||
KosmicKrisp
|
||||
###########
|
||||
|
||||
KosmicKrisp is a Vulkan conformant implementation for macOS on Apple Silicon
|
||||
hardware. It is implemented on top of Metal 4, which requires macOS 26 and up.
|
||||
|
||||
No iOS support is present as of now. However, iOS was taken into consideration
|
||||
during development to support A14 Bionic GPUs and upwards.
|
||||
|
||||
Building
|
||||
********
|
||||
|
||||
The following build instructions assume Homebrew as the package manager to
|
||||
install dependencies. Homebrew homepage https://brew.sh/
|
||||
Homebrew install command line:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
|
||||
Terminal restart is recommended after Homebrew installation.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- Xcode and Xcode command line tools
|
||||
- Homebrew packages
|
||||
- meson (1.9.1+, can also be installed as a Python package)
|
||||
- cmake
|
||||
- pkg-config
|
||||
- libclc
|
||||
- llvm
|
||||
- spirv-llvm-translator
|
||||
|
||||
Due to potential conflicts, Homebrew will not add `llvm` to the path. To add
|
||||
`llvm` to future terminal instances:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
|
||||
|
||||
To add `llvm` to current terminal instance:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
|
||||
|
||||
- Python
|
||||
- Python packages
|
||||
- mako
|
||||
- packaging
|
||||
- pyyaml
|
||||
- meson (1.9.1+, if not installed through Homebrew)
|
||||
|
||||
Since Homebrew manages the Python environment, it is encouraged to create a
|
||||
Python virtual environment and install all packages in that environment. To
|
||||
create a Python virtual environment (e.g. ``$HOME/venv_mesa``):
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
python3 -m venv $HOME/venv_mesa
|
||||
|
||||
To enable a Python virtual environment:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
source $HOME/venv_mesa/bin/activate
|
||||
|
||||
Build instructions
|
||||
==================
|
||||
|
||||
Out of tree build directory is recommended.
|
||||
|
||||
Once all requirements have been installed, the following command line can be
|
||||
used to create a debug build:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
meson setup <path/to/mesa> --buildtype=debug -Dplatforms=macos -Dvulkan-drivers=kosmickrisp -Dgallium-drivers= -Dopengl=false -Dzstd=disabled
|
||||
|
||||
Environment variables
|
||||
*********************
|
||||
|
||||
KosmicKrisp specific environment variables:
|
||||
|
||||
- ``MESA_KK_DEBUG``: Set to ``msl`` to log all generated Metal Shading Language (MSL) shaders.
|
||||
- ``MESA_KK_GPU_CAPTURE``: Starts Metal capture at device create and ends it at device destroy. Set to ``1`` to activate.
|
||||
- ``MESA_KK_GPU_CAPTURE_DIRECTORY``: Metal capture will be saved to the specified directory. Defaults to Xcode if no path is provided.
|
||||
- ``MESA_KK_DISABLE_WORKAROUNDS``: Provide ``all`` to disable all workarounds. Otherwise, provide a comma separated list to disable wanted workarounds e.g. ``1,3,4`` to disable workaround 1, 3 and 4.
|
||||
|
||||
Metal workarounds
|
||||
*****************
|
||||
|
||||
Different workarounds are applied throughout the project to avoid issues such
|
||||
as:
|
||||
|
||||
- Metal API and Vulkan API discrepancies
|
||||
- Metal bugs
|
||||
- MSL compiler bugs
|
||||
- MSL compiler crashes
|
||||
|
||||
These workarounds can be found in:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
kosmickrisp/workarounds
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
KosmicKrisp workarounds
|
||||
#######################
|
||||
|
||||
This file documents the relevant issues found in either Metal, the MSL
|
||||
compiler or any other component we have no control over that needed to be
|
||||
worked around to accomplish Vulkan conformance.
|
||||
|
||||
All workarounds must be documented here and no code comment info should be
|
||||
provided other than the name ``KK_WORKAROUND_#``.
|
||||
|
||||
Once a workaround was removed from the code, the code comment will be
|
||||
removed but the documentation here will be kept.
|
||||
|
||||
Template
|
||||
========
|
||||
|
||||
Use the following template to create documentation for a new workaround:
|
||||
|
||||
.. code-block::
|
||||
|
||||
KK_WORKAROUND_#
|
||||
---------------
|
||||
| macOS version:
|
||||
| Metal ticket:
|
||||
| Metal ticket status:
|
||||
| CTS test failure/crash:
|
||||
| Comments:
|
||||
| Log:
|
||||
|
||||
``macOS version`` needs to have the OS version with which it was found.
|
||||
|
||||
``Metal ticket`` needs to be either the Metal ticket number with the GitLab
|
||||
handle of the user that reported the ticket or ``Unreported``.
|
||||
|
||||
``Metal ticket status`` needs to be either ``Fixed in macOS # (Build hash)``,
|
||||
|
||||
``Waiting resolution`` or empty if unreported. If Apple reported that the issue
|
||||
was fixed, but no user has verified the fix, append ``[Untested]``.
|
||||
``CTS test failure/crash`` (remove ``failure`` or ``crash`` based on test
|
||||
behavior) needs to be the name of the test or test family the issue can be
|
||||
reproduced with.
|
||||
|
||||
``Comments`` needs to include as much information on the issue and how the
|
||||
workaround fixes it.
|
||||
|
||||
``Log`` needs to have the dates (yyyy-mm-dd, the only correct date format) with
|
||||
info on what was updated.
|
||||
|
||||
Workarounds
|
||||
===========
|
||||
|
||||
KK_WORKAROUND_6
|
||||
---------------
|
||||
| macOS version: 26.0.1
|
||||
| Metal ticket: Not reported
|
||||
| Metal ticket status:
|
||||
| CTS test failure: ``dEQP-VK.spirv_assembly.instruction.*.float16.opcompositeinsert.*``
|
||||
| Comments:
|
||||
|
||||
Metal does not respect its own Memory Coherency Model (MSL spec 4.8). From
|
||||
the spec:
|
||||
``By default, memory in the device address space has threadgroup coherence.``
|
||||
|
||||
If we have a single thread compute dispatch so that we do (simplified version):
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
for (...) {
|
||||
value = ssbo_data[0]; // ssbo_data is a device buffer
|
||||
...
|
||||
ssbo_data[0] = new_value;
|
||||
}
|
||||
|
||||
``ssbo_data[0]`` will not correctly store/load the values so the value
|
||||
written in iteration 0, will not be available in iteration 1. The workaround
|
||||
to this issue is marking the device memory pointer through which the memory
|
||||
is accessed as coherent so that the value is stored and loaded correctly.
|
||||
Hopefully this does not affect performance much.
|
||||
|
||||
| Log:
|
||||
| 2025-12-08: Workaround implemented and reported to Apple
|
||||
|
||||
KK_WORKAROUND_5
|
||||
---------------
|
||||
| macOS version: 26.0.1
|
||||
| Metal ticket: Not reported
|
||||
| Metal ticket status:
|
||||
| CTS test failure: ``dEQP-VK.fragment_operations.early_fragment.discard_no_early_fragment_tests_depth``
|
||||
| Comments:
|
||||
|
||||
Fragment shaders that have side effects (like writing to a buffer) will be
|
||||
prematurely discarded if there is a ``discard_fragment`` that will always
|
||||
execute. To work around this, we just make the discard "optional" by moving
|
||||
it inside a run time conditional that will always be true (such as is the
|
||||
fragment a helper?). This tricks the MSL compiler into not optimizing it into
|
||||
a premature discard.
|
||||
|
||||
| Log:
|
||||
| 2025-12-01: Workaround implemented
|
||||
|
||||
KK_WORKAROUND_4
|
||||
---------------
|
||||
| macOS version: 26.0.1
|
||||
| Metal ticket: FB21124215 (@aitor)
|
||||
| Metal ticket status: Waiting resolution
|
||||
| CTS test failure: ``dEQP-VK.draw.renderpass.shader_invocation.helper_invocation*`` and few others
|
||||
| Comments:
|
||||
|
||||
``simd_is_helper_thread()`` will always return true if the shader was started
|
||||
as a non-helper thread, even after ``discard_fragment()`` is called. The
|
||||
workaround is to have a variable tracking this state and update it when the
|
||||
fragment is discarded. This issue is present in M1 and M2 chips.
|
||||
|
||||
| Log:
|
||||
| 2025-11-22: Workaround implemented and reported to Apple
|
||||
|
||||
KK_WORKAROUND_3
|
||||
---------------
|
||||
| macOS version: 15.4.x
|
||||
| Metal ticket: FB20113490 (@aitor)
|
||||
| Metal ticket status: Waiting resolution
|
||||
| CTS test failure: ``dEQP-VK.subgroups.ballot_other.*.subgroupballotfindlsb``
|
||||
| Comments:
|
||||
|
||||
``simd_is_first`` does not seem to behave as documented in the MSL
|
||||
specification. The following code snippet misbehaves:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
if (simd_is_first())
|
||||
temp = 3u;
|
||||
else
|
||||
temp = simd_ballot(true); /* <- This will return all active threads... */
|
||||
|
||||
The way to fix this is by changing the conditional to:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
if (simd_is_first() && (ulong)simd_ballot(true))
|
||||
temp = 3u;
|
||||
else
|
||||
temp = (ulong)simd_ballot(true);
|
||||
|
||||
| Log:
|
||||
| 2025-09-09: Workaround implemented and reported to Apple
|
||||
|
||||
KK_WORKAROUND_2
|
||||
---------------
|
||||
| macOS version: 15.4.x
|
||||
| Metal ticket: FB21065475 (@aitor)
|
||||
| Metal ticket status: Waiting resolution
|
||||
| CTS test crash: ``dEQP-VK.graphicsfuzz.cov-nested-loops-never-change-array-element-one`` and ``dEQP-VK.graphicsfuzz.disc-and-add-in-func-in-loop``
|
||||
| Comments:
|
||||
|
||||
We need to loop to infinite since MSL compiler crashes if we have something
|
||||
like (simplified version):
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
while (true) {
|
||||
if (some_conditional) {
|
||||
break_loop = true;
|
||||
} else {
|
||||
break_loop = false;
|
||||
}
|
||||
if (break_loop) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
The issue I believe is that ``some_conditional`` wouldn't change the value no
|
||||
matter in which iteration we are (something like fetching the same value from
|
||||
a buffer) and the MSL compiler doesn't seem to like that much to the point it
|
||||
crashes.
|
||||
|
||||
The implemented solution is to change the ``while(true)`` loop with
|
||||
``for (uint64_t no_crash = 0u; no_crash < UINT64_MAX; ++no_crash)``, which
|
||||
tricks the MSL compiler into believing we are not doing an infinite loop
|
||||
(wink wink).
|
||||
|
||||
| Log:
|
||||
| 2025-09-08: Workaround implemented
|
||||
|
||||
KK_WORKAROUND_1
|
||||
---------------
|
||||
| macOS version: 15.4.x
|
||||
| Metal ticket: FB17604106 (@aitor)
|
||||
| Metal ticket status: [Untested] Fixed in macOS 26 Beta (25A5279m)
|
||||
| CTS test crash: ``dEQP-VK.glsl.indexing.tmp_array.vec3_dynamic_loop_write_dynamic_loop_read_fragment``
|
||||
| Comments:
|
||||
|
||||
Uninitialized local scratch variable causes the MSL compiler to crash.
|
||||
Initialize scratch to avoid issue.
|
||||
|
||||
| Log:
|
||||
| 2025-05-14: Workaround implemented and reported to Apple
|
||||
| 2025-06-14: Apple reported back saying it is now fixed in macOS 26 Beta (Build 25A5279m)
|
||||
|
||||
|
||||
|
||||
|
|
@ -6,9 +6,10 @@ NVK is a Vulkan driver for NVIDIA GPUs.
|
|||
Hardware support
|
||||
----------------
|
||||
|
||||
NVK currently supports Kepler (GeForce 600 and 700 series) and later GPUs up to
|
||||
and including Ada (RTX 4000 series), as well as consumer Blackwell GPUs
|
||||
(RTX 5000 series).
|
||||
NVK currently supports Maxwell (some GTX 700 and 800 series, most 900
|
||||
series) and later GPUs up to and including Ada (RTX 4000 series). Support
|
||||
for Kepler (GeForce 600 and 700 series) and Blackwell (RTX 5000 series) is
|
||||
currently in-progress but incomplete.
|
||||
|
||||
Conformance status:
|
||||
-------------------
|
||||
|
|
@ -22,7 +23,7 @@ OpenGL support through Zink:
|
|||
Starting with Mesa 25.1, all Turing (RTX 2000 series and GTX 16xx) and
|
||||
later GPUs will get NVK+Zink as their OpenGL implementation by default
|
||||
instead of the old Nouveau GL driver. NVK+Zink is a conformant OpenGL 4.6
|
||||
implementation. The Nouveau GL driver is no longer supported on these cards.
|
||||
implementation.
|
||||
|
||||
Kernel requirements
|
||||
-------------------
|
||||
|
|
@ -62,20 +63,10 @@ specific to NVK:
|
|||
Waits for submit to complete before continuing
|
||||
``zero_memory``
|
||||
Zeros all VkDeviceMemory objects upon creation
|
||||
``trash_memory``
|
||||
Write repeating nonzero patterns to client memory allocations
|
||||
``vm``
|
||||
Logs VM binds and unbinds
|
||||
``no_cbuf``
|
||||
Disables automatic promotion of UBOs to constant buffers
|
||||
``edb_bview``
|
||||
Forces the driver to use the VK_EXT_descriptor_buffer path for buffer
|
||||
views.
|
||||
``gart``
|
||||
Forces all memory to be allocated from system RAM (GART)
|
||||
``coherent``
|
||||
Forces all memory maps to be coherent with the CPU caches. This only
|
||||
applies to Tegra devices.
|
||||
|
||||
.. envvar:: NVK_I_WANT_A_BROKEN_VULKAN_DRIVER
|
||||
|
||||
|
|
@ -84,10 +75,10 @@ specific to NVK:
|
|||
poorly tested or completely broken. This is intended for developer use
|
||||
only.
|
||||
|
||||
Developer info
|
||||
--------------
|
||||
Hardware Documentation
|
||||
----------------------
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
|
||||
nvk/*
|
||||
What little documentation we have can be found in the `NVIDIA open-gpu-doc
|
||||
repository <https://github.com/NVIDIA/open-gpu-doc>`__. The majority of
|
||||
our documentation comes in the form of class headers which describe the
|
||||
class state registers.
|
||||
|
|
|
|||
|
|
@ -1,134 +0,0 @@
|
|||
|
||||
External Hardware Documentation and Resources
|
||||
=============================================
|
||||
|
||||
Information about hardware behavior comes from a mix of official and
|
||||
reverse-engineered sources.
|
||||
|
||||
Command buffers
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
* `NVIDIA open-gpu-doc repository`_ is official documentation from NVIDIA that
|
||||
has been released to the public. The majority of this documentation comes in
|
||||
the form of class headers which describe the class state registers.
|
||||
|
||||
* `NVIDIA open-gpu-kernel-modules repository`_ is the open-source kernel mode
|
||||
driver that NVIDIA ships on Turing+ GPUs with GSP. The code here can provide
|
||||
examples of how to use some hardware features. If open-gpu-doc is missing a
|
||||
class header, sometimes there will be one here.
|
||||
|
||||
* Reverse-engineered command names from `envytools`_ are available in mesa
|
||||
under eg. ``src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h``. These are no
|
||||
longer updated. nvk instead uses the open-gpu-doc headers
|
||||
|
||||
* `envyhooks`_ is the modern way to dump command sequences from the proprietary
|
||||
driver
|
||||
|
||||
* ``nv_push_dump`` is part of mesa and can disassemble command sequences (build
|
||||
with ``-D tools=nouveau``, run ``src/nouveau/headers/nv_push_dump`` from the
|
||||
build dir)
|
||||
|
||||
.. _NVIDIA open-gpu-doc repository: https://github.com/NVIDIA/open-gpu-doc
|
||||
.. _NVIDIA open-gpu-kernel-modules repository: https://github.com/NVIDIA/open-gpu-kernel-modules
|
||||
.. _envyhooks: https://gitlab.freedesktop.org/nouveau/envyhooks
|
||||
|
||||
Shader ISA
|
||||
^^^^^^^^^^
|
||||
|
||||
* `NVIDIA PTX documentation`_ is NVIDIA documentation for CUDA's
|
||||
intermediate representation. We don't use PTX directly, but this often has
|
||||
hints about how underlying hardware instructions work. For example, the PTX
|
||||
`redux` instruction is pretty much identical to the hardware instruction of
|
||||
the same name.
|
||||
|
||||
* `CUDA Binary Utilities`_ is documentation for CUDA's disassembler,
|
||||
`nvdisasm`. It includes a brief description of most hardware instructions.
|
||||
There's also an `older version`_ that has older architectures (Kepler through
|
||||
Volta).
|
||||
|
||||
* Kuter Dinel has reverse-engineered instruction encodings for the `Hopper
|
||||
ISA`_ and `Ada ISA`_ which are autogenerated from his `nv_isa_solver`_
|
||||
project.
|
||||
|
||||
* `nv-shader-tools`_ has some additional tools for disassembling and fuzzing
|
||||
the hardware ISA
|
||||
|
||||
* Mel has dumped a `list of avaiable instructions`_ and their opcodes on recent
|
||||
architectures by scraping nvdisasm error messages.
|
||||
|
||||
* The `Volta whitepaper`_ section "Independent Thread Scheduling" has an
|
||||
overview of the control flow model used on Volta+ GPUs.
|
||||
|
||||
* `Dissecting the NVidia Turing T4 GPU via Microbenchmarking`_ has
|
||||
reverse-engineered info about the Turing instruction encoding. See especially
|
||||
section "2.1 Control information" for an overview of compiler-inserted delays
|
||||
and waits on Maxwell and later.
|
||||
|
||||
* `Analyzing Modern NVIDIA GPU cores`_ has additional reverse-engineered info
|
||||
about the semantics of compiler-inserted delays and waits.
|
||||
|
||||
* `Control Flow Management in Modern GPUs`_ has more detail about control flow
|
||||
reconvergence on Volta+
|
||||
|
||||
* `maxas`_ has some reverse-engineered info on the Maxwell ISA
|
||||
|
||||
* `asfermi`_ has some reverse-engineered info on the older Fermi ISA
|
||||
|
||||
* Red Hat has some NDA'd documentation on instruction latencies from NVIDIA.
|
||||
Bother karolherbst or airlied on irc if you're missing a latency class for an
|
||||
instruction on recent architectures.
|
||||
|
||||
* Behavior of instructions are tested using the hardware tests in
|
||||
``src/nouveau/compiler/nak/hw_tests.rs`` and the corresponding ``Foldable``
|
||||
implementations in ``src/nouveau/compiler/nak/ir.rs`` (build with ``-D
|
||||
build-tests=true`` and run ``src/nouveau/compiler/nak hw_tests`` from the
|
||||
build dir)
|
||||
|
||||
* NAK's instruction encodings are tested against nvdisasm using
|
||||
``src/nouveau/compiler/nak/nvdisasm_tests.rs`` (build with ``-D
|
||||
build-tests=true`` and run ``src/nouveau/compiler/nak nvdisasm_tests`` from
|
||||
the build dir)
|
||||
|
||||
* The old GL driver's compiler, under ``src/gallium/drivers/nouveau/codegen``,
|
||||
has some information. This is especially useful for graphics-only
|
||||
instructions, which are often not covered by other sources.
|
||||
|
||||
* `Compiler explorer`_ is a convenient tool to see what assembly NVIDIA
|
||||
generates for a given CUDA program.
|
||||
|
||||
.. _NVIDIA PTX documentation: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html
|
||||
.. _CUDA Binary Utilities: https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference
|
||||
.. _older version: https://docs.nvidia.com/cuda/archive/11.8.0/cuda-binary-utilities/index.html#instruction-set-ref
|
||||
.. _Hopper ISA: https://kuterdinel.com/nv_isa/
|
||||
.. _Ada ISA: https://kuterdinel.com/nv_isa_sm89/
|
||||
.. _nv_isa_solver: https://github.com/kuterd/nv_isa_solver
|
||||
.. _nv-shader-tools: https://gitlab.freedesktop.org/nouveau/nv-shader-tools
|
||||
.. _list of avaiable instructions: https://gitlab.freedesktop.org/mhenning/re/-/tree/main/opclass?ref_type=heads
|
||||
.. _Volta whitepaper: https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf
|
||||
.. _Dissecting the NVidia Turing T4 GPU via Microbenchmarking: https://arxiv.org/pdf/1903.07486
|
||||
.. _Analyzing Modern NVIDIA GPU cores: https://arxiv.org/pdf/2503.20481
|
||||
.. _Control Flow Management in Modern GPUs: https://arxiv.org/pdf/2407.02944
|
||||
.. _maxas: https://github.com/NervanaSystems/maxas/wiki
|
||||
.. _asfermi: https://github.com/hyqneuron/asfermi/wiki
|
||||
.. _Compiler explorer: https://godbolt.org/z/1jrfhq5G7
|
||||
|
||||
Misc
|
||||
^^^^
|
||||
|
||||
* `envytools`_ has reverse-engineered documentation for maxwell and earlier
|
||||
hardware.
|
||||
* The nvidia architecture whitepapers give a basic overview of what has changed
|
||||
between hardware revisions. See eg. the `Blackwell whitepaper`_
|
||||
* The nvidia architecture tuning guides often mention how details of a hardware
|
||||
generation has changed, often with information about the memory subsystem or
|
||||
occupancy. See eg. the `Blackwell tuning guide`_
|
||||
* `The Nouveau wiki's CodeNames page`_ is useful for mapping NVIDIA marketing
|
||||
names to engineering names
|
||||
* `Matching CUDA arch and CUDA gencode for various NVIDIA architectures`_ has a
|
||||
useful table comparing SM versions to engineering names
|
||||
|
||||
.. _envytools: https://envytools.readthedocs.io/en/latest/hw/index.html
|
||||
.. _Blackwell whitepaper: https://images.nvidia.com/aem-dam/Solutions/geforce/blackwell/nvidia-rtx-blackwell-gpu-architecture.pdf
|
||||
.. _Blackwell tuning guide: https://docs.nvidia.com/cuda/blackwell-tuning-guide/index.html
|
||||
.. _The Nouveau wiki's CodeNames page: https://nouveau.freedesktop.org/CodeNames.html
|
||||
.. _Matching CUDA arch and CUDA gencode for various NVIDIA architectures: https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
|
||||
|
|
@ -1,126 +0,0 @@
|
|||
|
||||
Hardware docs
|
||||
=============
|
||||
|
||||
Command buffers
|
||||
---------------
|
||||
|
||||
Command format
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Each command sent to the GPU contains a method and some data. Method names are
|
||||
documented in corresponding header files copied from NVIDIA, eg. the fermi
|
||||
graphics methods are in src/nouveau/headers/nvidia/classes/cl9097.h
|
||||
|
||||
P_IMMD
|
||||
""""""
|
||||
|
||||
A lot of the time, you will want to issue a single method with its data, which
|
||||
can be done with P_IMMD::
|
||||
|
||||
P_IMMD(p, NV9097, WAIT_FOR_IDLE, 0);
|
||||
|
||||
P_IMMD will emit either a single `immediate-data method`_, which takes a single
|
||||
word, or a pair of words that's equivalent to P_MTHD + the provided data. Code
|
||||
must count P_IMMD as possibly 2 words as a result.
|
||||
|
||||
.. _immediate-data method: https://github.com/NVIDIA/open-gpu-doc/blob/87ba53e0c385285a3aa304b864dccb975a9a0dd4/manuals/turing/tu104/dev_ram.ref.txt#L1214
|
||||
|
||||
P_MTHD
|
||||
""""""
|
||||
|
||||
`P_MTHD`_ is a convenient way to execute multiple consecutive methods without
|
||||
repeating the method header. For example, the code::
|
||||
|
||||
P_MTHD(p, NV9097, SET_REPORT_SEMAPHORE_A);
|
||||
P_NV9097_SET_REPORT_SEMAPHORE_A(p, addr >> 32);
|
||||
P_NV9097_SET_REPORT_SEMAPHORE_B(p, addr);
|
||||
P_NV9097_SET_REPORT_SEMAPHORE_C(p, value);
|
||||
|
||||
generates four words - one word for the method header (defaulting to 1INC) and
|
||||
then the next three words for data. 1INC will automatically increment the method
|
||||
id by one word for each data value, which is why the example can advance from
|
||||
SET_REPORT_SEMAPHORE_A to B to C.
|
||||
|
||||
.. _P_MTHD: https://github.com/NVIDIA/open-gpu-doc/blob/87ba53e0c385285a3aa304b864dccb975a9a0dd4/manuals/turing/tu104/dev_ram.ref.txt#L1042
|
||||
|
||||
P_0INC
|
||||
""""""
|
||||
|
||||
`0INC`_ will issue the same method repeatedly for each following data word.
|
||||
|
||||
.. _0INC: https://github.com/NVIDIA/open-gpu-doc/blob/87ba53e0c385285a3aa304b864dccb975a9a0dd4/manuals/turing/tu104/dev_ram.ref.txt#L1096
|
||||
|
||||
P_1INC
|
||||
""""""
|
||||
|
||||
`1INC`_ will increment after one word and then issue the following method
|
||||
repeatedly. For example, the code::
|
||||
|
||||
P_1INC(p, NV9097, CALL_MME_MACRO(NVK_MME_SET_PRIV_REG));
|
||||
P_INLINE_DATA(p, 0);
|
||||
P_INLINE_DATA(p, BITFIELD_BIT(3));
|
||||
|
||||
issues one NV9097_CALL_MME_MACRO command, then increments the method and issues
|
||||
two NV9097_CALL_MME_DATA commands.
|
||||
|
||||
.. _1INC: https://github.com/NVIDIA/open-gpu-doc/blob/87ba53e0c385285a3aa304b864dccb975a9a0dd4/manuals/turing/tu104/dev_ram.ref.txt#L1149
|
||||
|
||||
Execution barriers
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Commands within a command buffer can be synchronized in a few different ways.
|
||||
|
||||
* Explicit WFI - Idles all engines before executing the next command eg. via
|
||||
`NVA16F_WFI` or `NV9097_WAIT_FOR_IDLE`
|
||||
* Semaphores - Delay execution based on values in a memory location. See
|
||||
`open-gpu-doc on semaphores`_
|
||||
* A subchannel switch - Causes the hardware to execute an implied WFI
|
||||
|
||||
.. _open-gpu-doc on semaphores: https://github.com/NVIDIA/open-gpu-doc/blob/master/manuals/turing/tu104/dev_pbdma.ref.txt#L3231
|
||||
|
||||
Subchannel switches
|
||||
"""""""""""""""""""
|
||||
|
||||
A subchannel switch occurs when the hardware receives a command for a different
|
||||
subchannel than the one that it's currently executing. For example, if the
|
||||
hardware is currently executing commands on the 3D engine (`SUBC_NV9097 == 0`), a
|
||||
command executed on the compute engine (`SUBC_NV90C0 == 1`) will cause a
|
||||
subchannel switch. Host methods (class \*6F) are an exception to this - they can
|
||||
be issued to any subchannel and will not trigger a subchannel switch
|
||||
[#fhostsubcswitch]_ [#foverlapnvk]_.
|
||||
|
||||
Subchannel switches act the same way that an explicit WFI does - they fully idle
|
||||
the channel before issuing commands to the next engine [#fnsight]_
|
||||
[#foverlapnvk]_.
|
||||
|
||||
This works the same on Blackwell. Some NVIDIA documentation contradicts this:
|
||||
"On NVIDIA Blackwell Architecture GPUs and newer, subchannel switches do not
|
||||
occur between 3D and compute workloads"[#fnsight]_. This documentation appears
|
||||
to be wrong or inapplicable for some reason - tests do not reproduce this
|
||||
behavior [#foverlapnvk]_ [#foverlapprop]_, and the blob does not change its
|
||||
event implementation for blackwell [#feventprop]_.
|
||||
|
||||
|
||||
.. [#fnsight] https://docs.nvidia.com/nsight-graphics/UserGuide/index.html#subchannel-switch-overlay
|
||||
.. [#foverlapnvk] Based on reverse engineering by running
|
||||
https://gitlab.freedesktop.org/mhenning/re/-/tree/main/vk_test_overlap_exec
|
||||
under nvk, possibly with alterations to the way nvk generates commands for
|
||||
pipeline barriers.
|
||||
.. [#foverlapprop] By running
|
||||
https://gitlab.freedesktop.org/mhenning/re/-/tree/main/vk_test_overlap_exec
|
||||
under the proprietary driver and examining the main output (eg. execution
|
||||
overlaps without pipeline barriers)
|
||||
.. [#feventprop] For example, the event commands generated here only wait on a
|
||||
single engine
|
||||
https://gitlab.freedesktop.org/mhenning/re/-/blob/6ce8c860da65fbf2ab26d124d25f907dea2cf33a/vk_event/blackwell.out#L20612-20793
|
||||
.. [#fhostsubcswitch] https://github.com/NVIDIA/open-gpu-doc/blob/87ba53e0c385285a3aa304b864dccb975a9a0dd4/manuals/turing/tu104/dev_ram.ref.txt#L1009
|
||||
|
||||
Copy engine
|
||||
^^^^^^^^^^^
|
||||
|
||||
The copy engine's `PIPELINED` mode allows a new transfer to start before the
|
||||
previous transfer finishes, while `NON_PIPELINED` acts as an execution barrier
|
||||
between the current copy and the previous one [#fpipelined]_.
|
||||
|
||||
.. [#fpipelined] https://github.com/NVIDIA/open-gpu-kernel-modules/blob/2b436058a616676ec888ef3814d1db6b2220f2eb/src/common/sdk/nvidia/inc/ctrl/ctrl0050.h#L75-L83
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
Benchmarking Panfrost
|
||||
=====================
|
||||
|
||||
Obtaining reproducible benchmark timings can sometimes be tricky on Mali
|
||||
based SoCs. There are a number of things that can be done to make the timings
|
||||
more predictable.
|
||||
|
||||
Make sure the device is actively cooled (to eliminate thermal throttling)
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
This isn't strictly speaking necessary, if you use low enough frequencies
|
||||
in the steps below, but it is recommended.
|
||||
|
||||
Fix the GPU frequency
|
||||
---------------------
|
||||
|
||||
If power management is allowed to vary the GPU frequency, this will lead to
|
||||
uncertainty in benchmark figures, particularly for shorter benchmark runs.
|
||||
|
||||
On most systems, the GPU frequency can be set to a fixed value via a command
|
||||
like the following (run it as root, sudo alone won't allow the redirection):
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
cat /sys/devices/platform/fb000000.gpu/devfreq/fb000000.gpu/min_freq > /sys/devices/platform/fb000000.gpu/devfreq/fb000000.gpu/max_freq
|
||||
|
||||
This forces the GPU to always use its minimum frequency. You could reverse
|
||||
`min_freq` and `max_freq` to fix it to its maximum frequency, if your system
|
||||
is adequately cooled.
|
||||
|
||||
Fix the CPU frequency
|
||||
---------------------
|
||||
|
||||
It is easy to overlook the role the CPU plays in driver performance. To set
|
||||
its frequency to a fixed value, install the `linux-cpupower` package and
|
||||
run something like:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
sudo cpupower frequency-info
|
||||
sudo cpupower frequency-set -d 1.20
|
||||
sudo cpupower frequency-set -u 1.20
|
||||
sudo cpupower frequency-info
|
||||
|
||||
Adjust the numbers based on what the board actually supports (seen in
|
||||
the first `frequency-info`. It is best to choose fairly low settings
|
||||
unless you're confident of the board's cooling.
|
||||
|
||||
Pin the benchmark program to a particular core
|
||||
----------------------------------------------
|
||||
|
||||
This is especially important on devices with a big.LITTLE architecture, where
|
||||
having the benchmark be scheduled on a different kind of core can drastically
|
||||
change the performance. But even without this, variations in cache residency
|
||||
and scheduling of kernel tasks can lead to changes in benchmark timing.
|
||||
|
||||
Experience shows that using a little core for the benchmark program
|
||||
tends to give more reproducible results (probably because they have smaller
|
||||
caches, and also are less likely to be scheduled to by the kernel).
|
||||
However, forcing the benchmark to run on a little core could change the
|
||||
bottleneck from GPU to CPU, so watch out for that.
|
||||
|
||||
Pinning a task to a particular core is done with the `taskset` command. An
|
||||
example for the Rock5b (rk3588) board is:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
taskset 0x04 glmark2-es2-wayland
|
||||
|
||||
Replace `0x04` with an appropriate mask for your board, and
|
||||
`glmark2-es2-wayland` with the benchmark program to be used.
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
drm-shim
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
U-interleaved tiling
|
||||
====================
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,6 @@ Product Series B.V.N.C
|
|||
GX6250 Series 6XT 4.45.2.58
|
||||
GX6650 Series 6XT 4.46.6.62
|
||||
G6110 Series 6XE 5.9.1.46
|
||||
GE7800 Series 7XE 15.5.1.64
|
||||
GE8300 Series 8XE 22.67.54.30
|
||||
GE8300 Series 8XE 22.68.54.30
|
||||
GE8300 Series 8XE 22.102.54.38
|
||||
BXE-2-32 B-Series 36.29.52.182
|
||||
|
|
|
|||
|
|
@ -5,14 +5,6 @@ Normally, no environment variables need to be set. Most of the
|
|||
environment variables used by Mesa/Gallium are for debugging purposes,
|
||||
but they can sometimes be useful for debugging end-user issues.
|
||||
|
||||
Android System Properties
|
||||
-------------------------
|
||||
|
||||
Android (generally) uses system properties rather than environment variables to
|
||||
control Mesa/Gallium behavior, although there are some exceptions to this. See
|
||||
:ref:`Android System Properties <android-android-system-properties>` for
|
||||
details on naming and how to set and get system property values.
|
||||
|
||||
LibGL environment variables
|
||||
---------------------------
|
||||
|
||||
|
|
@ -98,10 +90,6 @@ Core Mesa environment variables
|
|||
specifies a file name for logging all errors, warnings, etc., rather
|
||||
than stderr
|
||||
|
||||
.. envvar:: MESA_LOG_PREFIX
|
||||
|
||||
specifies what to to include in the log prefix (linux only) - default is ``tag,level``
|
||||
|
||||
.. envvar:: MESA_EXTENSION_OVERRIDE
|
||||
|
||||
can be used to enable/disable extensions. A value such as
|
||||
|
|
@ -357,11 +345,6 @@ Core Mesa environment variables
|
|||
lost device. This is extremely useful when testing as it prevents the
|
||||
test suite from continuing on with a lost device.
|
||||
|
||||
.. envvar:: MESA_VK_VALIDATE_SHADER_BINARIES
|
||||
|
||||
enables extra validation of shader and pipeline binaries to ensure
|
||||
consistency of driver binaries.
|
||||
|
||||
.. envvar:: MESA_VK_ENABLE_SUBMIT_THREAD
|
||||
|
||||
for Vulkan drivers which support real timeline semaphores, this forces
|
||||
|
|
@ -606,9 +589,6 @@ Intel driver environment variables
|
|||
disable fast clears
|
||||
``noccs``
|
||||
disable lossless color compression
|
||||
``no-resource-barrier``
|
||||
disable RENDER_BARRIER instruction usage by falling back to
|
||||
PIPE_CONTROL
|
||||
``optimizer``
|
||||
dump shader assembly to files at each optimization pass and
|
||||
iteration that make progress (Gfx < 9)
|
||||
|
|
@ -1277,6 +1257,32 @@ clc environment variables
|
|||
- ``dump_spirv`` Dumps all compiled, linked and specialized SPIR-Vs
|
||||
- ``verbose`` Enable debug logging of clc code
|
||||
|
||||
Nine frontend environment variables
|
||||
-----------------------------------
|
||||
|
||||
.. envvar:: D3D_ALWAYS_SOFTWARE
|
||||
|
||||
an integer, which forces Nine to use the CPU instead of GPU acceleration.
|
||||
|
||||
.. envvar:: NINE_DEBUG
|
||||
|
||||
a comma-separated list of named flags that do debugging things.
|
||||
Use ``NINE_DEBUG=help`` to print a list of available options.
|
||||
|
||||
.. envvar:: NINE_FF_DUMP
|
||||
|
||||
a boolean, which dumps shaders generated by a fixed function (FF).
|
||||
|
||||
.. envvar:: NINE_SHADER
|
||||
|
||||
a comma-separated list of named flags, which do alternate shader handling.
|
||||
Use ``NINE_SHADER=help`` to print a list of available options.
|
||||
|
||||
.. envvar:: NINE_QUIRKS
|
||||
|
||||
a comma-separated list of named flags that do various things.
|
||||
Use ``NINE_DEBUG=help`` to print a list of available options.
|
||||
|
||||
Softpipe driver environment variables
|
||||
-------------------------------------
|
||||
|
||||
|
|
@ -1391,8 +1397,6 @@ RADV driver environment variables
|
|||
dump the BO history to /tmp/radv_bo_history.log after each BO operations
|
||||
``checkir``
|
||||
validate the LLVM IR before LLVM compiles the shader
|
||||
``dumpibs``
|
||||
dump IBs (command streams)
|
||||
``dump_trap_handler``
|
||||
dump the trap handler shader
|
||||
``epilogs``
|
||||
|
|
@ -1409,6 +1413,9 @@ RADV driver environment variables
|
|||
Print image info
|
||||
``info``
|
||||
show GPU-related information
|
||||
``invariantgeom``
|
||||
Mark geometry-affecting outputs as invariant. This works around a common
|
||||
class of application bugs appearing as flickering. (deprecated)
|
||||
``metashaders``
|
||||
dump internal meta shaders
|
||||
``noatocdithering``
|
||||
|
|
@ -1425,6 +1432,8 @@ RADV driver environment variables
|
|||
disable Delta Color Compression (DCC) on images
|
||||
``nodisplaydcc``
|
||||
disable Delta Color Compression (DCC) on displayable images
|
||||
``nodynamicbounds``
|
||||
do not check OOB access for dynamic descriptors (deprecated)
|
||||
``noeso``
|
||||
disable VK_EXT_shader_object
|
||||
``nofastclears``
|
||||
|
|
@ -1443,6 +1452,8 @@ RADV driver environment variables
|
|||
disable NGG for GFX10 and GFX10.3
|
||||
``nonggc``
|
||||
disable NGG culling for GFX10 and GFX10.3
|
||||
``nongg_gs``
|
||||
disable NGG GS for GFX10 and GFX10.3 (deprecated)
|
||||
``nort``
|
||||
skip executing vkCmdTraceRays and ray queries (RT extensions will still be
|
||||
advertised)
|
||||
|
|
@ -1472,6 +1483,9 @@ RADV driver environment variables
|
|||
enable register shadowing
|
||||
``spirv``
|
||||
dump SPIR-V
|
||||
``splitfma``
|
||||
split application-provided fused multiply-add in geometry stages
|
||||
(deprecated)
|
||||
``startup``
|
||||
display info at startup
|
||||
``syncshaders``
|
||||
|
|
@ -1504,8 +1518,10 @@ RADV driver environment variables
|
|||
Use bvh4 encoding on GPUs that support bvh8 encoding.
|
||||
``validatevas``
|
||||
Enable tracking of VA ranges for radv_build_is_valid_va.
|
||||
``vm``
|
||||
add a gap between all VA allocations to check for page faults
|
||||
|
||||
.. envvar:: RADV_FORCE_FAMILY
|
||||
|
||||
create a null device to compile shaders without a AMD GPU (e.g. VEGA10)
|
||||
|
||||
.. envvar:: RADV_FORCE_VRS
|
||||
|
||||
|
|
@ -1553,8 +1569,6 @@ RADV driver environment variables
|
|||
enable wave64 for ray tracing shaders (GFX10-10.3)
|
||||
``sam``
|
||||
enable optimizations to move more driver internal objects to VRAM.
|
||||
``sparse``
|
||||
enable experimental sparse binding and sparse residency on GPUs where we don't support it by default (pre Polaris)
|
||||
``transfer_queue``
|
||||
enable experimental transfer queue support (GFX9+, not yet spec compliant)
|
||||
``video_decode``
|
||||
|
|
@ -1762,8 +1776,8 @@ RadeonSI driver environment variables
|
|||
Use old-style monolithic shaders compiled on demand
|
||||
``nooptvariant``
|
||||
Disable compiling optimized shader variants.
|
||||
``usellvm``
|
||||
Use LLVM as shader compiler when possible
|
||||
``useaco``
|
||||
Use ACO as shader compiler when possible
|
||||
``nowc``
|
||||
Disable GTT write combining
|
||||
``check_vm``
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ GL 3.1, GLSL 1.40 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
|||
GL_ARB_copy_buffer (Buffer copying) DONE (v3d, vc4, lima, crocus)
|
||||
GL_NV_primitive_restart (Primitive restart) DONE (v3d, crocus)
|
||||
16 vertex texture image units DONE (v3d)
|
||||
Texture buffer objs DONE (v3d)
|
||||
GL_ARB_texture_buffer_object (Texture buffer objs) DONE (v3d)
|
||||
GL_ARB_texture_rectangle (Rectangular textures) DONE (v3d, vc4, lima, crocus, etnaviv)
|
||||
GL_ARB_uniform_buffer_object (Uniform buffer objs) DONE (v3d, crocus)
|
||||
GL_EXT_texture_snorm (Signed normalized textures) DONE (v3d, crocus, etnaviv/HALTI1)
|
||||
|
|
@ -108,7 +108,7 @@ GL 3.3, GLSL 3.30 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
|||
GL_ARB_texture_swizzle DONE (v3d, vc4, panfrost, lima, etnaviv/HALTI0)
|
||||
GL_ARB_timer_query DONE (panfrost, v3d)
|
||||
GL_ARB_instanced_arrays DONE (etnaviv/HALTI2, v3d, panfrost)
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (v3d, panfrost, etnaviv/HALTI2)
|
||||
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
|
||||
|
|
@ -206,7 +206,7 @@ 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, svga)
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus)
|
||||
GL_ARB_texture_stencil8 DONE (freedreno, nv50, softpipe, v3d, panfrost, etnaviv/HALTI5)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, nv50, softpipe, panfrost, crocus)
|
||||
GL_NV_shader_atomic_int64 DONE (radeonsi, panfrost/v9+)
|
||||
|
|
@ -316,7 +316,6 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||
GL_ARB_sparse_texture DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_sparse_texture2 DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_sparse_texture_clamp DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_texture_buffer_object DONE (freedreno, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe, virgl, d3d12, asahi, iris, crocus/gen6+)
|
||||
GL_ARB_texture_filter_minmax DONE (freedreno/a6xx, iris/gen9+, llvmpipe, nvc0/gm200+, zink)
|
||||
GL_ARM_shader_framebuffer_fetch_depth_stencil DONE (llvmpipe)
|
||||
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi, v3d)
|
||||
|
|
@ -328,7 +327,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||
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_mesh_shader DONE (radeonsi/gfx10_3+, zink)
|
||||
GL_EXT_mesh_shader DONE (zink)
|
||||
GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima)
|
||||
GL_EXT_polygon_offset_clamp DONE (all drivers that support GL_ARB_polygon_offset_clamp)
|
||||
GL_EXT_render_snorm DONE (freedreno/a6xx, r600, radeonsi, softpipe, llvmpipe, virgl, zink, panfrost/v6+, iris, asahi)
|
||||
|
|
@ -337,7 +336,6 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||
GL_EXT_semaphore_win32 DONE (zink, d3d12)
|
||||
GL_EXT_shader_clock DONE (all drivers that support GL_ARB_shader_clock)
|
||||
GL_EXT_shader_group_vote DONE (all drivers that support GL_ARB_shader_group_vote)
|
||||
GL_EXT_shader_pixel_local_storage DONE (panfrost/v6+)
|
||||
GL_EXT_shader_realtime_clock DONE (panfrost/v6+)
|
||||
GL_EXT_sRGB_write_control DONE (all drivers that support GLES 3.0+)
|
||||
GL_EXT_texture_compression_astc_decode_mode DONE (panfrost)
|
||||
|
|
@ -346,7 +344,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||
GL_EXT_texture_view DONE (all drivers that support GL_OES_texture_view)
|
||||
GL_KHR_blend_equation_advanced_coherent DONE (freedreno/a6xx, llvmpipe, panfrost, zink, asahi, iris/gen9+, v3d)
|
||||
GL_KHR_robust_buffer_access_behavior DONE (panfrost, llvmpipe, virgl)
|
||||
GL_KHR_shader_subgroup DONE (radeonsi, zink, asahi, iris/gen9+)
|
||||
GL_KHR_shader_subgroup DONE (radeonsi, zink, asahi)
|
||||
GL_KHR_texture_compression_astc_hdr DONE (panfrost, asahi)
|
||||
GL_KHR_texture_compression_astc_sliced_3d DONE (freedreno/a4xx+, r600, radeonsi, panfrost, softpipe, llvmpipe, v3d, virgl, zink, lima, asahi, iris/gen9+)
|
||||
GL_OES_depth_texture_cube_map DONE (all drivers that support GLSL 1.30+)
|
||||
|
|
@ -434,9 +432,9 @@ we DO NOT WANT implementations of these extensions for Mesa.
|
|||
GL_ARB_shadow_ambient Superseded by GL_ARB_fragment_program
|
||||
GL_ARB_vertex_blend Superseded by GL_ARB_vertex_program
|
||||
|
||||
Vulkan 1.0 -- all DONE: anv, dzn, hk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn
|
||||
Vulkan 1.0 -- all DONE: anv, dzn, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn
|
||||
|
||||
Vulkan 1.1 -- all DONE: anv, hk, kk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn
|
||||
Vulkan 1.1 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn
|
||||
|
||||
VK_KHR_16bit_storage DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu/a650+, v3dv, vn)
|
||||
VK_KHR_bind_memory2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
|
|
@ -456,64 +454,64 @@ Vulkan 1.1 -- all DONE: anv, hk, kk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn
|
|||
VK_KHR_maintenance2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance3 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_multiview DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_relaxed_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_ycbcr_conversion DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_relaxed_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_ycbcr_conversion DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_draw_parameters DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, 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, hk, nvk, panvk/v10+, pvr, tu, vn
|
||||
|
||||
VK_KHR_8bit_storage DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, radv, tu/a750+, v3dv, vn)
|
||||
VK_KHR_buffer_device_address DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_8bit_storage DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu/a750+, v3dv, vn)
|
||||
VK_KHR_buffer_device_address DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_driver_properties DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_image_format_list DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_separate_depth_stencil_layouts DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_driver_properties DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_image_format_list DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_separate_depth_stencil_layouts DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_atomic_int64 DONE (anv, lvp, nvk, panvk/v10+, radv, vn, tu/a740+)
|
||||
VK_KHR_shader_float16_int8 DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_shader_float_controls DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_extended_types DONE (anv, hasvk, kk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn)
|
||||
VK_KHR_spirv_1_4 DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_descriptor_indexing DONE (anv, dzn, kk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_EXT_host_query_reset DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_float16_int8 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_shader_float_controls DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_extended_types DONE (anv, hasvk, lvp, nvk, panvk/v10+, pvr, radv, tu, vn)
|
||||
VK_KHR_spirv_1_4 DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_descriptor_indexing DONE (anv, dzn, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_sampler_filter_minmax DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, vn, v3dv/vc7+)
|
||||
VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_shader_viewport_index_layer DONE (anv, hasvk, kk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn, v3dv/vc7+)
|
||||
VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_shader_viewport_index_layer DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
|
||||
Vulkan 1.3 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv, tu, vn, v3dv
|
||||
|
||||
VK_KHR_copy_commands2 DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_format_feature_flags2 DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance4 DONE (anv, hasvk, kk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, kk, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_4444_formats DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_extended_dynamic_state DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_image_robustness DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_inline_uniform_block DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_pipeline_creation_cache_control DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_pipeline_creation_feedback DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_private_data DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_subgroup_size_control DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_EXT_inline_uniform_block DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_pipeline_creation_cache_control DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_pipeline_creation_feedback DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_private_data DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_image_robustness DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_shader_demote_to_helper_invocation DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_subgroup_size_control DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_EXT_texel_buffer_alignment DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_texture_compression_astc_hdr DONE (kk, panvk, vn)
|
||||
VK_EXT_tooling_info DONE (anv, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_ycbcr_2plane_444_formats DONE (anv, kk, lvp, nvk, panvk/v10+, radv, vn)
|
||||
VK_EXT_texture_compression_astc_hdr DONE (panvk, vn)
|
||||
VK_EXT_tooling_info DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_ycbcr_2plane_444_formats DONE (anv, lvp, nvk, panvk/v10+, radv, vn)
|
||||
|
||||
Vulkan 1.4 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv/gfx8+, tu/a7xx+, vn
|
||||
|
||||
|
|
@ -521,15 +519,15 @@ Vulkan 1.4 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv/gfx8+, tu/a7xx+, vn
|
|||
VK_KHR_global_priority DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_index_type_uint8 DONE (anv, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_line_rasterization DONE (anv, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_load_store_op_none DONE (anv, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_load_store_op_none DONE (anv, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance5 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, v3dv, vn)
|
||||
VK_KHR_maintenance6 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_map_memory2 DONE (anv, kk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_KHR_push_descriptor DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_map_memory2 DONE (anv, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_float_controls2 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_shader_subgroup_rotate DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_vertex_attribute_divisor DONE (anv, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_vertex_attribute_divisor DONE (anv, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_host_image_copy DONE (anv, lvp, nvk/Turing+, panvk, radv/gfx10+, tu, vn)
|
||||
VK_EXT_pipeline_protected_access DONE (anv/gfx12+, vn)
|
||||
VK_EXT_pipeline_robustness DONE (anv, lvp, nvk, panvk, radv, v3dv, tu, vn)
|
||||
|
|
@ -538,9 +536,9 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
|
||||
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn)
|
||||
VK_KHR_android_surface not started
|
||||
VK_KHR_calibrated_timestamps DONE (anv, hk, kk, nvk, panvk/v10+, radv, tu/a750+, vn)
|
||||
VK_KHR_calibrated_timestamps DONE (anv, hk, nvk, panvk/v10+, radv, tu/a750+, vn)
|
||||
VK_KHR_compute_shader_derivatives DONE (anv, lvp, nvk, radv, tu/a7xx+, vn)
|
||||
VK_KHR_cooperative_matrix DONE (anv, nvk/Turing+, radv/gfx11+, vn)
|
||||
VK_KHR_cooperative_matrix DONE (anv, nvk/Turing+, radv/gfx11+)
|
||||
VK_KHR_depth_clamp_zero_one DONE (anv, nvk, panvk, radv, vn)
|
||||
VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv, tu, vn)
|
||||
VK_KHR_display DONE (anv, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
|
|
@ -559,53 +557,48 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_KHR_maintenance7 DONE (anv, hk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_maintenance8 DONE (anv, hk, lvp, nvk, panvk/v10+, radv, tu)
|
||||
VK_KHR_maintenance9 DONE (anv, hk, lvp, nvk, panvk, radv)
|
||||
VK_KHR_maintenance10 DONE (anv, nvk, radv)
|
||||
VK_KHR_performance_query DONE (anv, radv/gfx10.3+, tu, v3dv)
|
||||
VK_KHR_pipeline_binary DONE (radv)
|
||||
VK_KHR_pipeline_executable_properties DONE (anv, hk, nvk, panvk, hasvk, radv, tu, v3dv)
|
||||
VK_KHR_pipeline_library DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_present_id DONE (anv, hk, nvk, radv, tu, vn)
|
||||
VK_KHR_present_id2 DONE (anv, hk, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_present_wait DONE (anv, hk, nvk, radv, tu, vn)
|
||||
VK_KHR_present_wait2 DONE (anv, hk, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_present_id DONE (anv, nvk, radv, tu, vn)
|
||||
VK_KHR_present_id2 DONE (anv, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_present_wait DONE (anv, nvk, radv, tu, vn)
|
||||
VK_KHR_present_wait2 DONE (anv, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn)
|
||||
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn)
|
||||
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn)
|
||||
VK_KHR_ray_tracing_position_fetch DONE (anv, lvp, radv/gfx10.3+, vn)
|
||||
VK_KHR_robustness2 DONE (anv, pvr, radv, vn)
|
||||
VK_KHR_shader_bfloat16 DONE (anv/gfx12.5+, radv/gfx12+, vn)
|
||||
VK_KHR_shader_bfloat16 DONE (anv/gfx12.5+, radv/gfx12+)
|
||||
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_KHR_shader_maximal_reconvergence DONE (anv, hk, kk, lvp, nvk, panvk/v10+, radv, vn)
|
||||
VK_KHR_shader_relaxed_extended_instruction DONE (anv, hasvk, hk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, hk, kk, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_shader_maximal_reconvergence DONE (anv, hk, lvp, nvk, panvk/v10+, radv, vn)
|
||||
VK_KHR_shader_relaxed_extended_instruction DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, hk, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_shader_quad_control DONE (anv, hk, lvp, nvk, panvk/v10+, radv, vn)
|
||||
VK_KHR_shader_untyped_pointers DONE (anv, nvk, radv, vn)
|
||||
VK_KHR_shader_untyped_pointers DONE (anv, nvk, radv)
|
||||
VK_KHR_shared_presentable_image not started
|
||||
VK_KHR_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_surface_protected_capabilities DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain DONE (anv, dzn, hasvk, hk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, hk, kk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, hk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_unified_image_layouts DONE (lvp, nvk, panvk, radv/gfx11+, tu)
|
||||
VK_KHR_wayland_surface DONE (anv, dzn, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_workgroup_memory_explicit_layout DONE (anv, hk, kk, lvp, nvk, hasvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_workgroup_memory_explicit_layout DONE (anv, hk, lvp, nvk, hasvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_win32_keyed_mutex not started
|
||||
VK_KHR_win32_surface DONE (dzn, lvp)
|
||||
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_xlib_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_surface_maintenance1 DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_swapchain_maintenance1 DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_acquire_xlib_display DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, lvp, radv, tu, vn)
|
||||
VK_EXT_attachment_feedback_loop_layout DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_blend_operation_advanced DONE (vn)
|
||||
VK_EXT_border_color_swizzle DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv/gfx10+, tu, v3dv, vn)
|
||||
VK_EXT_buffer_device_address DONE (anv, dzn/sm6.6+, hasvk, hk, nvk, panvk, radv, vn)
|
||||
VK_EXT_calibrated_timestamps DONE (anv, hasvk, hk, kk, nvk, panvk/v10+, lvp, radv, vn, tu/a750+)
|
||||
VK_EXT_calibrated_timestamps DONE (anv, hasvk, hk, nvk, panvk/v10+, lvp, radv, vn, tu/a750+)
|
||||
VK_EXT_color_write_enable DONE (anv, hasvk, hk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_conditional_rendering DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_conservative_rasterization DONE (anv, nvk, radv, vn, tu/a7xx+)
|
||||
VK_EXT_custom_border_color DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_custom_resolve DONE (radv)
|
||||
VK_EXT_debug_marker DONE (radv)
|
||||
VK_EXT_debug_report DONE (anv, dzn, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_debug_utils DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
|
|
@ -618,39 +611,38 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_EXT_device_address_binding_report DONE (radv, tu)
|
||||
VK_EXT_device_fault DONE (radv)
|
||||
VK_EXT_device_generated_commands DONE (lvp, nvk/Turing+, radv/gfx8+)
|
||||
VK_EXT_device_memory_report DONE (anv, panvk, radv, vn)
|
||||
VK_EXT_device_memory_report DONE (anv, radv, vn)
|
||||
VK_EXT_direct_mode_display DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_discard_rectangles DONE (nvk, radv)
|
||||
VK_EXT_discard_rectangles DONE (radv)
|
||||
VK_EXT_display_control DONE (anv, hasvk, nvk, panvk, radv, tu)
|
||||
VK_EXT_display_surface_counter DONE (anv, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_EXT_dynamic_rendering_unused_attachments DONE (anv, hk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_extended_dynamic_state3 DONE (anv, hk, lvp, nvk, pvr, radv, tu, vn)
|
||||
VK_EXT_external_memory_acquire_unmodified DONE (anv, panvk, radv, vn)
|
||||
VK_EXT_external_memory_acquire_unmodified DONE (anv, radv, vn)
|
||||
VK_EXT_external_memory_dma_buf DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_external_memory_host DONE (anv, dzn, hasvk, lvp, radv)
|
||||
VK_EXT_external_memory_metal DONE (kk)
|
||||
VK_EXT_filter_cubic DONE (tu/a650+, vn)
|
||||
VK_EXT_fragment_density_map DONE (tu)
|
||||
VK_EXT_fragment_shader_interlock DONE (anv, lvp, radv/gfx9+, vn)
|
||||
VK_EXT_global_priority DONE (anv, hasvk, panvk, radv, tu, vn, hk, lvp)
|
||||
VK_EXT_global_priority_query DONE (anv, hasvk, panvk, radv, tu, vn, hk, lvp)
|
||||
VK_EXT_global_priority DONE (anv, hasvk, panvk, radv, tu, vn, hk)
|
||||
VK_EXT_global_priority_query DONE (anv, hasvk, panvk, radv, tu, vn, hk)
|
||||
VK_EXT_graphics_pipeline_library DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_EXT_hdr_metadata DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_EXT_headless_surface DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_EXT_image_compression_control DONE (anv/gfx12-, radv)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, hk, lvp, nvk, panvk, radv/gfx9+, tu, v3dv, vn)
|
||||
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, radv/gfx9+, tu, v3dv, vn)
|
||||
VK_EXT_image_sliced_view_of_3d DONE (anv, hk, lvp, nvk, radv/gfx10+, vn)
|
||||
VK_EXT_image_view_min_lod DONE (anv, hasvk, hk, nvk, radv, tu, vn)
|
||||
VK_EXT_index_type_uint8 DONE (anv, hasvk, hk, nvk, lvp, panvk, pvr, radv/gfx8+, tu, v3dv, vn)
|
||||
VK_EXT_legacy_vertex_attributes DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_line_rasterization DONE (anv, hasvk, hk, nvk, panvk, pvr, lvp, radv, tu, v3dv, vn)
|
||||
VK_EXT_load_store_op_none DONE (anv, hk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_load_store_op_none DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_memory_budget DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_memory_priority DONE (lvp, radv)
|
||||
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv, vn)
|
||||
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv)
|
||||
VK_EXT_multi_draw DONE (anv, hasvk, hk, lvp, nvk, radv, tu, vn, v3dv)
|
||||
VK_EXT_multisampled_render_to_single_sampled DONE (lvp, vn, panvk)
|
||||
VK_EXT_multisampled_render_to_single_sampled DONE (lvp, vn)
|
||||
VK_EXT_nested_command_buffer DONE (anv, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_non_seamless_cube_map DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_EXT_pageable_device_local_memory DONE (lvp)
|
||||
|
|
@ -667,27 +659,26 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_EXT_sample_locations DONE (anv, hasvk, hk, nvk, radv, tu/a650+, vn, lavapipe)
|
||||
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv, tu, vn)
|
||||
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn)
|
||||
VK_EXT_shader_float8 DONE (radv/gfx12+, vn)
|
||||
VK_EXT_shader_float8 DONE (radv/gfx12+)
|
||||
VK_EXT_shader_image_atomic_int64 DONE (anv, lvp, nvk, radv, vn)
|
||||
VK_EXT_shader_object DONE (anv, lvp, hk, nvk, radv)
|
||||
VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, vn)
|
||||
VK_EXT_shader_stencil_export DONE (anv, hk, lvp, radv, tu, vn)
|
||||
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, vn)
|
||||
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, vn)
|
||||
VK_EXT_shader_module_identifier DONE (anv, hasvk, hk, nvk, panvk, radv, tu, v3dv)
|
||||
VK_EXT_shader_uniform_buffer_unsized_array DONE (nvk, radv, vn)
|
||||
VK_EXT_surface_maintenance1 DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_swapchain_maintenance1 DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_transform_feedback DONE (anv, hasvk, hk, lvp, nvk, radv, tu, vn)
|
||||
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, hk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_vertex_input_dynamic_state DONE (anv, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_EXT_ycbcr_image_arrays DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, radv, vn)
|
||||
VK_EXT_zero_initialize_device_memory DONE (lvp, nvk, pvr, radv, tu)
|
||||
VK_ANDROID_external_memory_android_hardware_buffer DONE (anv, lvp, panvk, radv, tu, v3dv, vn)
|
||||
VK_ANDROID_native_buffer DONE (anv, lvp, panvk, radv, tu, v3dv, vn)
|
||||
VK_GOOGLE_decorate_string DONE (anv, hasvk, hk, kk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_GOOGLE_hlsl_functionality1 DONE (anv, hasvk, hk, kk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_GOOGLE_user_type DONE (anv, hasvk, hk, kk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_GOOGLE_decorate_string DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_GOOGLE_hlsl_functionality1 DONE (anv, hasvk, hk, lvp, nvk, panvk, radv, tu, vn)
|
||||
VK_GOOGLE_user_type DONE (anv, hasvk, hk, nvk, panvk, radv, tu, vn)
|
||||
VK_IMG_filter_cubic DONE (tu/a650+, vn)
|
||||
VK_NV_compute_shader_derivatives DONE (anv, hasvk, nvk, radv, tu/a7xx+, vn)
|
||||
VK_NVX_image_view_handle DONE (nvk)
|
||||
|
|
@ -714,15 +705,15 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_ARM_rasterization_order_attachment_access DONE (lvp, tu, vn)
|
||||
VK_ARM_shader_core_builtins DONE (panvk)
|
||||
VK_ARM_shader_core_properties DONE (panvk/v10+)
|
||||
VK_EXT_mutable_descriptor_type DONE (anv, hk, kk, lvp, nvk, panvk/v9+, radv, tu, vn)
|
||||
VK_EXT_mutable_descriptor_type DONE (anv, hk, lvp, nvk, panvk/v9+, radv, tu, vn)
|
||||
VK_EXT_swapchain_colorspace DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn)
|
||||
VK_EXT_depth_clamp_zero_one DONE (anv, nvk, panvk, pvr, radv, tu, v3dv/vc7+, vn)
|
||||
VK_INTEL_shader_integer_functions2 DONE (anv, hasvk, radv)
|
||||
VK_EXT_map_memory_placed DONE (anv, hk, nvk, pvr, radv, tu, vn)
|
||||
VK_EXT_map_memory_placed DONE (anv, hk, nvk, pvr, radv, tu)
|
||||
VK_MESA_image_alignment_control DONE (anv, nvk, radv)
|
||||
VK_EXT_legacy_dithering DONE (anv, tu, vn)
|
||||
VK_QCOM_fragment_density_map_offset DONE (tu)
|
||||
VK_VALVE_video_encode_rgb_conversion DONE (radv)
|
||||
|
||||
|
||||
Rusticl OpenCL 1.0 -- all DONE:
|
||||
Image support DONE
|
||||
|
|
|
|||
|
|
@ -83,7 +83,6 @@ Linux, FreeBSD, and other operating systems.
|
|||
drivers/asahi
|
||||
drivers/d3d12
|
||||
drivers/freedreno
|
||||
drivers/kosmickrisp
|
||||
drivers/lima
|
||||
drivers/llvmpipe
|
||||
drivers/nvk
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@ you're willing to maintain support for other compiler get in touch.
|
|||
- Clang 5.0 or later (some parts of Mesa may require later versions)
|
||||
- Microsoft Visual C++ compiler
|
||||
- Windows SDK of at least 20348 is required
|
||||
- Visual Studio 2022 version 17.9 or later for (ARM, AARCH64, ARM64EC, X86, X64)
|
||||
- Visual Studio 2019 Version 16.11 or later for (ARM, X86, X64)
|
||||
- Visual Studio 2022 version 17.8.6 or later for (AARCH64, ARM64EC)
|
||||
|
||||
Third party/extra tools.
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -43,9 +43,6 @@ The exact supported features vary per driver:
|
|||
* - Panfrost
|
||||
- ``gpu.counters.panfrost``
|
||||
-
|
||||
* - PanVK
|
||||
- ``gpu.counters.panfrost``
|
||||
- ``gpu.renderstages.panfrost``
|
||||
* - V3D
|
||||
- ``gpu.counters.v3d``
|
||||
-
|
||||
|
|
@ -58,7 +55,39 @@ Run
|
|||
|
||||
To capture a trace with Perfetto you need to take the following steps:
|
||||
|
||||
1. Build Mesa with perfetto enabled.
|
||||
1. Build Perfetto from sources available at ``subprojects/perfetto`` following
|
||||
`this guide <https://perfetto.dev/docs/quickstart/linux-tracing>`__.
|
||||
|
||||
2. Create a `trace config <https://perfetto.dev/docs/concepts/config>`__, which is
|
||||
a json formatted text file with extension ``.cfg``, or use one of the config
|
||||
files under the ``src/tool/pps/cfg`` directory. More examples of config files
|
||||
can be found in ``subprojects/perfetto/test/configs``.
|
||||
|
||||
3. Change directory to ``subprojects/perfetto`` and run a
|
||||
`convenience script <https://perfetto.dev/docs/getting-started/system-tracing#recording-your-first-system-trace>`__
|
||||
to start the tracing service:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
cd subprojects/perfetto
|
||||
CONFIG=<path/to/gpu.cfg> OUT=out/linux_clang_release ./tools/tmux -n
|
||||
|
||||
4. Start other producers you may need, e.g. ``pps-producer``.
|
||||
|
||||
5. Start ``perfetto`` under the tmux session initiated in step 3.
|
||||
|
||||
6. Once tracing has finished, you can detach from tmux with :kbd:`Ctrl+b`,
|
||||
:kbd:`d`, and the convenience script should automatically copy the trace
|
||||
files into ``$HOME/Downloads``.
|
||||
|
||||
7. Go to `ui.perfetto.dev <https://ui.perfetto.dev>`__ and upload
|
||||
``$HOME/Downloads/trace.protobuf`` by clicking on **Open trace file**.
|
||||
|
||||
8. Alternatively you can open the trace in `AGI <https://gpuinspector.dev/>`__
|
||||
(which despite the name can be used to view non-android traces).
|
||||
|
||||
To be a bit more explicit, here is a listing of commands reproducing
|
||||
the steps above :
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
|
|
@ -67,52 +96,19 @@ To capture a trace with Perfetto you need to take the following steps:
|
|||
# Build mesa
|
||||
mesa $ meson compile -C build
|
||||
|
||||
2. Build Perfetto from sources available at ``subprojects/perfetto``.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
# Within the Mesa repo, build perfetto
|
||||
mesa $ cd subprojects/perfetto
|
||||
perfetto $ ./tools/install-build-deps
|
||||
perfetto $ ./tools/gn gen --args='is_debug=false' out/linux
|
||||
perfetto $ ./tools/ninja -C out/linux
|
||||
|
||||
# Example arm64 cross compile instead
|
||||
perfetto $ ./tools/install-build-deps --linux-arm
|
||||
perfetto $ ./tools/gn gen --args='is_debug=false target_cpu="arm64"' out/linux-arm64
|
||||
# Start perfetto
|
||||
perfetto $ CONFIG=../../src/tool/pps/cfg/gpu.cfg OUT=out/linux/ ./tools/tmux -n
|
||||
|
||||
More build options can be found in `this guide <https://perfetto.dev/docs/quickstart/linux-tracing>`__.
|
||||
# In parallel from the Mesa repo, start the PPS producer
|
||||
mesa $ ./build/src/tool/pps/pps-producer
|
||||
|
||||
3. Select a `trace config <https://perfetto.dev/docs/concepts/config>`__, likely
|
||||
``src/tool/pps/cfg/system.cfg`` which does whole-system including GPU
|
||||
profiling for any supported GPUs). Other configs are available in that
|
||||
directory for CPU-only or GPU-only tracing, and more examples of config files
|
||||
can be found in ``subprojects/perfetto/test/configs``.
|
||||
|
||||
4. Start the PPS producer to capture GPU performance counters.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mesa $ sudo meson devenv -C build pps-producer
|
||||
|
||||
5. Start your application (and any other GPU-using system components) you want
|
||||
to trace using the perfetto-enabled Mesa build.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mesa $ meson devenv -C build vkcube
|
||||
|
||||
6. Capture a perfetto trace using ``tracebox``.
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
mesa $ sudo ./subprojects/perfetto/out/linux/tracebox --system-sockets --txt -c src/tool/pps/cfg/system.cfg -o vkcube.trace
|
||||
|
||||
7. Go to `ui.perfetto.dev <https://ui.perfetto.dev>`__ and upload
|
||||
``vkcube.trace`` by clicking on **Open trace file**.
|
||||
|
||||
8. Alternatively you can open the trace in `AGI <https://gpuinspector.dev/>`__
|
||||
(which despite the name can be used to view non-android traces).
|
||||
# Back in the perfetto tmux, press enter to start the capture
|
||||
|
||||
CPU Tracing
|
||||
~~~~~~~~~~~
|
||||
|
|
@ -129,20 +125,17 @@ Currently, only EGL and the following drivers have CPU tracepoints.
|
|||
- VC4
|
||||
- V3DV
|
||||
|
||||
Render stage data sources
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Vulkan data sources
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The render stage data sources are the driver-specific traces of command buffer
|
||||
execution on the GPU.
|
||||
The Vulkan API gives the application control over recording of command
|
||||
buffers as well as when they are submitted to the hardware. As a
|
||||
consequence, we need to ensure command buffers are properly
|
||||
instrumented for the Perfetto driver data sources prior to Perfetto
|
||||
actually collecting traces.
|
||||
|
||||
The Vulkan API gives the application control over recording of command buffers
|
||||
as well as when they are submitted to the hardware, and command buffers can be
|
||||
recorded once and reused repeatedly. Trace commands are normally only recorded
|
||||
into a command buffer when a perfetto trace is active. Most applications don't
|
||||
reuse command buffers, so you'll see traces appear shortly after the trace was
|
||||
started, but if you have one of the rare applications that reuses command
|
||||
buffers, you'll need to set the :envvar:`MESA_GPU_TRACES` environment variable
|
||||
before starting a Vulkan application :
|
||||
This can be achieved by setting the :envvar:`MESA_GPU_TRACES`
|
||||
environment variable before starting a Vulkan application :
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
|
|
@ -221,7 +214,7 @@ To run the producer, follow these two simple steps:
|
|||
./build/pps-producer
|
||||
|
||||
V3D / V3DV
|
||||
^^^^^^^^^^
|
||||
----------
|
||||
|
||||
As we can only have one performance monitor active at a given time, we can only monitor
|
||||
32 performance counters. There is a need to define the performance counters of interest
|
||||
|
|
@ -234,6 +227,17 @@ for pps_producer using the environment variable ``V3D_DS_COUNTER``.
|
|||
Troubleshooting
|
||||
---------------
|
||||
|
||||
Tmux
|
||||
~~~~
|
||||
|
||||
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
|
||||
|
||||
apt install tmux
|
||||
|
||||
Missing counter names
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
25.3,2025-12-31,25.3.3,Dylan Baker,
|
||||
,2026-01-14,25.3.4,Dylan Baker,
|
||||
,2026-01-28,25.3.5,Dylan Baker,
|
||||
,2026-02-11,25.3.6,Dylan Baker,Last planned 25.3 release
|
||||
26.0,2026-01-14,26.0.0-rc1,Eric Engestrom,26.0 branchpoint
|
||||
,2026-01-21,26.0.0-rc2,Eric Engestrom,
|
||||
,2026-01-28,26.0.0-rc3,Eric Engestrom,
|
||||
,2026-02-04,26.0.0-rc4,Eric Engestrom,or 26.0.0 final
|
||||
25.2,2025-10-29,25.2.6,Eric Engestrom,
|
||||
,2025-11-12,25.2.7,Eric Engestrom,
|
||||
25.3,2025-10-15,25.3.0-rc1,Dylan Baker,25.3 branchpoint
|
||||
,2025-10-22,25.3.0-rc2,Dylan Baker,
|
||||
,2025-10-29,25.3.0-rc3,Dylan Baker,
|
||||
,2025-11-05,25.3.0-rc4,Dylan Baker,or 25.3.0 final
|
||||
|
|
|
|||
|
|
|
@ -3,12 +3,7 @@ Release Notes
|
|||
|
||||
The release notes summarize what's new or changed in each Mesa release.
|
||||
|
||||
- :doc:`25.3.2 release notes <relnotes/25.3.2>`
|
||||
- :doc:`25.2.8 release notes <relnotes/25.2.8>`
|
||||
- :doc:`25.3.1 release notes <relnotes/25.3.1>`
|
||||
- :doc:`25.3.0 release notes <relnotes/25.3.0>`
|
||||
- :doc:`25.2.7 release notes <relnotes/25.2.7>`
|
||||
- :doc:`25.2.6 release notes <relnotes/25.2.6>`
|
||||
- :doc:`25.2.5 release notes <relnotes/25.2.5>`
|
||||
- :doc:`25.2.4 release notes <relnotes/25.2.4>`
|
||||
- :doc:`25.2.3 release notes <relnotes/25.2.3>`
|
||||
|
|
@ -472,12 +467,7 @@ The release notes summarize what's new or changed in each Mesa release.
|
|||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
25.3.2 <relnotes/25.3.2>
|
||||
25.2.8 <relnotes/25.2.8>
|
||||
25.3.1 <relnotes/25.3.1>
|
||||
25.3.0 <relnotes/25.3.0>
|
||||
25.2.7 <relnotes/25.2.7>
|
||||
25.2.6 <relnotes/25.2.6>
|
||||
25.2.5 <relnotes/25.2.5>
|
||||
25.2.4 <relnotes/25.2.4>
|
||||
25.2.3 <relnotes/25.2.3>
|
||||
|
|
|
|||
|
|
@ -1,199 +0,0 @@
|
|||
Mesa 25.2.6 Release Notes / 2025-10-29
|
||||
======================================
|
||||
|
||||
Mesa 25.2.6 is a bug fix release which fixes bugs found since the 25.2.5 release.
|
||||
|
||||
Mesa 25.2.6 implements the OpenGL 4.6 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||
4.6 is **only** available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
|
||||
Mesa 25.2.6 implements the Vulkan 1.4 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA checksums
|
||||
-------------
|
||||
|
||||
::
|
||||
|
||||
SHA256: 361c97e8afa5fe20141c5362c5b489040751e12861c186a16c621a2fb182fc42 mesa-25.2.6.tar.xz
|
||||
SHA512: c34f55132ee9097a7c4961745bf07a08fc612bf0f7c570c023fedb16c8eafbefdc1cc022f722c345780bb14ec4ce25d9a206a9196d9d51c97b389db5160de9cc mesa-25.2.6.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- [ANV][PTL][DG2] Flickering textures in Assassin's Creed Valhalla benchmark
|
||||
- ADL, ANV: Wuthering Waves leads to gpu reset on Alder Lake iGPU
|
||||
- [ANV][EXT_debug_utils] descriptor set object_name leak when not calling vkFreeDescriptorSets
|
||||
- nvk: CTS failures in sample_locations_ext.verify_interpolation.samples_1
|
||||
- [regression] [bisected] RuneLite GPU Experimental - GPU crash
|
||||
- lp_test_arit.c:200:14: error: static declaration of ‘rsqrtf’ follows non-static declaration
|
||||
- build failure with glibc 2.42
|
||||
- zink: chromium flickers in youtube when fullscreening videos
|
||||
- r600: Attribute stride updates may be skipped
|
||||
- anv: Assert in brew when descriptor indexing with modulo
|
||||
- [ANV][TGL]: test_buffer_feedback_instructions_sm51 on vkd3d-proton crashes
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (1):
|
||||
|
||||
- anv: use D3D-compatible texturing for Proton
|
||||
|
||||
Benjamin Cheng (3):
|
||||
|
||||
- radv/video_enc: Cleanup slice count assert
|
||||
- radv/video: Override H265 SPS block size parameters
|
||||
- radv/video: Override H265 SPS unaligned resolutions
|
||||
|
||||
Connor Abbott (6):
|
||||
|
||||
- tu: Don't patch GMEM for input attachments never in GMEM
|
||||
- tu: Fix 3d load path with D24S8 on a7xx
|
||||
- tu: Also disable stencil load for attachments not in GMEM
|
||||
- tu: Fix RT count with remapped color attachments
|
||||
- tu: Rename tu_render_pass_attachment::clear_views to used_views
|
||||
- tu: Fix attachment stores with subpasses with partial views
|
||||
|
||||
Danylo Piliaiev (2):
|
||||
|
||||
- tu: Destroy all mutexes used for device
|
||||
- tu: Synchronize access to copy_timestamp_cs_pool
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- nir/shrink_stores: Don't shrink stores to an invalid num_components.
|
||||
|
||||
Eric Engestrom (8):
|
||||
|
||||
- docs: add sha sum for 25.2.5
|
||||
- .pick_status.json: Mark !36883 commits as denominated
|
||||
- .pick_status.json: Update to b82044c31b0be1c7682548a8e10905a4ff5b13d7
|
||||
- .pick_status.json: Mark 77fb8fb062457dad73bd763e97bf757b6cd04080 as denominated
|
||||
- .pick_status.json: Mark bca29b1c92320dea0004341a08cc76a18e3edaf3 as denominated
|
||||
- .pick_status.json: Mark 8d05b7b72e70fe35d6ff6b5d65272ec520a707f3 as denominated
|
||||
- .pick_status.json: Mark 006085e6769c3697c29cd5087dfabe7b5b8d046a as denominated
|
||||
- .pick_status.json: Mark 343eef990e54d974d811f7414e79a8854b8c97f9 as denominated
|
||||
|
||||
Faith Ekstrand (7):
|
||||
|
||||
- panvk: Fix integer dot product properties
|
||||
- nvk: Include the chipset in the pipeline/binary cache UUID
|
||||
- nvk: Disable sampleLocationsSampleCounts for 1x MSAA
|
||||
- nvk: Look at the right pointer in GetDescriptorInfo for SSBOs
|
||||
- nvk: Capture/replay buffer addresses for EDB capture/replay
|
||||
- panvk/shader: [de]serialize desc_info.max_varying_loads
|
||||
- panvk/shader: Use the right copy size for deserializing dynamic UBOs/SSBOs
|
||||
|
||||
Gert Wollny (1):
|
||||
|
||||
- r600: Fix comparison of strides array when emitting vertex buffers
|
||||
|
||||
Job Noorman (2):
|
||||
|
||||
- nir: mark fneg distribution through fadd/ffma as nsz
|
||||
- spirv: don't set in_bounds for structs
|
||||
|
||||
José Roberto de Souza (1):
|
||||
|
||||
- gallium/llvmpipe/test: Rename rsqrtf() to _rsqrtf()
|
||||
|
||||
Karol Herbst (1):
|
||||
|
||||
- nak: fix MMA latencies on Ampere
|
||||
|
||||
Konstantin Seurer (1):
|
||||
|
||||
- aco: Fixup out_launch_size_y in the RT prolog for 1D dispatch
|
||||
|
||||
Lionel Landwerlin (6):
|
||||
|
||||
- brw: fix invalid sparse bitfield offset computation
|
||||
- brw: prevent LOAD_REG modifications on MOV_INDIRECT/BROADCAST
|
||||
- brw: only consider cross lane access on non scalar VGRFs
|
||||
- brw: fix ballot() type operations in shaders with HALT instructions
|
||||
- anv: destroy sets when destroying pool
|
||||
- vulkan/render_pass: Add a missing sType
|
||||
|
||||
Marek Olšák (2):
|
||||
|
||||
- r300: fix DXTC blits
|
||||
- winsys/radeon: fix completely broken tessellation for gfx6-7
|
||||
|
||||
Mary Guillemard (5):
|
||||
|
||||
- hk: Fix maxVariableDescriptorCount with inline uniform block
|
||||
- hk: Disable 1x in sampleLocationsSampleCounts
|
||||
- hk: Remove unused allocation in queue_submit
|
||||
- hk: Make width and height per block in HIC
|
||||
- hk: Allocate the temp tile buffer in copy_image_to_image_cpu
|
||||
|
||||
Mel Henning (2):
|
||||
|
||||
- nvk: Fix maxVariableDescriptorCount with iub
|
||||
- nvk: Really fix maxVariableDescriptorCount w/ iub
|
||||
|
||||
Mike Blumenkrantz (3):
|
||||
|
||||
- zink: defer swapchain updates for interval changes if acquired image is active
|
||||
- zink: consistently set/unset msrtss in begin_rendering
|
||||
- zink: collapse gfx pipeline fetching and binding conditionals
|
||||
|
||||
Natalie Vock (1):
|
||||
|
||||
- nir/lower_shader_calls: Repair SSA after wrap_instrs
|
||||
|
||||
Olivia Lee (1):
|
||||
|
||||
- panfrost: fix cl_local_size for precompiled shaders
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (1):
|
||||
|
||||
- radeonsi: propagate shader updates for merged shaders
|
||||
|
||||
Ruijing Dong (1):
|
||||
|
||||
- radeonsi/vcn: Correct a typo condition for jpeg decoding
|
||||
|
||||
Sagar Ghuge (2):
|
||||
|
||||
- brw/rt: Move nir_build_vec3_mat_mult_col_major helper to header
|
||||
- brw/rt: fix ray_object_(direction|origin) for closest-hit shaders
|
||||
|
||||
Taras Pisetskyi (1):
|
||||
|
||||
- drirc/anv: force_vk_vendor=-1 for Wuthering Waves
|
||||
|
||||
Timur Kristóf (4):
|
||||
|
||||
- radeonsi: Don't use compute queue with regalloc hang bug
|
||||
- radv: Disable compute queues when the regalloc bug is present
|
||||
- radv: Mitigate GPU hang on Hawaii in Dota 2 and RotTR
|
||||
- ac/nir/ngg_mesh: Lower num_subgroups to constant
|
||||
|
||||
Valentine Burley (2):
|
||||
|
||||
- tu: Fix indexing with variable descriptor count
|
||||
- tu: Fix maxVariableDescriptorCount with inline uniform blocks
|
||||
|
||||
Xaver Hugl (2):
|
||||
|
||||
- vulkan/wsi: require extended target volume support for scRGB
|
||||
- vulkan/wsi: remove support for VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
|
||||
|
||||
Yiwei Zhang (2):
|
||||
|
||||
- panvk: fix to advance vs driver_set properly
|
||||
- panvk: fix to advance vs res_table properly
|
||||
|
|
@ -1,210 +0,0 @@
|
|||
Mesa 25.2.7 Release Notes / 2025-11-12
|
||||
======================================
|
||||
|
||||
Mesa 25.2.7 is a bug fix release which fixes bugs found since the 25.2.6 release.
|
||||
|
||||
Mesa 25.2.7 implements the OpenGL 4.6 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||
4.6 is **only** available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
|
||||
Mesa 25.2.7 implements the Vulkan 1.4 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA checksums
|
||||
-------------
|
||||
|
||||
::
|
||||
|
||||
SHA256: b40232a642011820211aab5a9cdf754e106b0bce15044bc4496b0ac9615892ad mesa-25.2.7.tar.xz
|
||||
SHA512: 87dd815e0d11d6ec0eb969ee93d3f376103bb899d90599e0b7902394e41c58139384df79f89633e132ca969348d3320f55308a74651d409b454d51f1bcda27bc mesa-25.2.7.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Penumbra: Overture OpenGL game has graphical glitch for ice
|
||||
- RustiCL: fence fd leak on CL-GL interop
|
||||
- Uniform variable not updated correctly with shared contexts
|
||||
- [radv] Borderlands 4 triggers a consistent GPU page fault on RDNA2
|
||||
- radv: RE4 Separate Ways DLC hangs RDNA2 GPU
|
||||
- ACO: fix a hazard when the number of attributes loaded/consumed don't match with VS prologs
|
||||
- ACO: loading 64-bit attributes can override the fetch index in VS prologs
|
||||
- nvk, nak: Broken icons in ENDLESS Legend 2 on a RTX 4080
|
||||
- LLVMPipe's \`VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPrimitiveCount` is lower than Vulkan requires.
|
||||
- asahi: DMABuf import of multi-plane YCbCr (NV12 from ISP) not renderer correctly
|
||||
- asahi: DMABuf import of multi-plane YCbCr (NV12 from ISP) not renderer correctly
|
||||
- brw: Gfx9 sampler messages violate r127 rule
|
||||
- radv: No Man's Sky XESS page fault GPU reset
|
||||
- r600/sfn: Assertion \`cir.alu_vec.empty()` failed
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Alyssa Rosenzweig (1):
|
||||
|
||||
- asahi,ail: fix multi-plane imports
|
||||
|
||||
Benjamin Cheng (2):
|
||||
|
||||
- vulkan/video: NULL check codec-specific chain
|
||||
- radv/video: Fix dummy DPB addresses
|
||||
|
||||
Daniel Schürmann (1):
|
||||
|
||||
- radv/null_device: set more options which affect compilation
|
||||
|
||||
Danylo Piliaiev (2):
|
||||
|
||||
- vulkan: Always fill DS state for EXT_dynamic_rendering_unused_attachments
|
||||
- tu: Use cmd->rp_trace u_trace for draw calls
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- c11/threads: fix build on c23
|
||||
|
||||
David Rosca (6):
|
||||
|
||||
- radeonsi/vcn: Fix AV1 bidir compound encode with order_hint disabled
|
||||
- radv/video: Don't require encode FW version >= interface version
|
||||
- radv/video: Fix AV1 bidir compound encode with order_hint disabled
|
||||
- vulkan/video: Avoid NULL pointers in session parameters
|
||||
- radv/video: Correctly handle no feedback query for encode
|
||||
- radv/video: Add NULL checks for picture parameters
|
||||
|
||||
Dmitry Osipenko (1):
|
||||
|
||||
- virtio/vdrm: Fix varying offsets of struct vdrm_device members
|
||||
|
||||
Eric Engestrom (7):
|
||||
|
||||
- docs: add sha sum for 25.2.6
|
||||
- .pick_status.json: Update to 2705d8bd8bb0cd049b4e91ac4e15ccc798abeda1
|
||||
- .pick_status.json: Mark b2badb2b241b3f5637133634b6bb48ebb90e4fed as denominated
|
||||
- .pick_status.json: Mark ff57c316964a73a7f763e2ff3ddfda99542813e1 as denominated
|
||||
- asahi/virtio: fix memleak
|
||||
- ci: track src/c11/ changes
|
||||
- ci: track src/android_stub/ changes
|
||||
|
||||
Faith Ekstrand (3):
|
||||
|
||||
- drm-uapi: Import the new NVIDIA modifiers
|
||||
- nil: Add support for Blackwell 8 and 16-bit modifiers
|
||||
- nir: Add a couple panfrost sysvals to divergence analysis
|
||||
|
||||
Georg Lehmann (1):
|
||||
|
||||
- aco/gfx10_3: work around NSA hazard
|
||||
|
||||
Gert Wollny (1):
|
||||
|
||||
- r600/sfn: AR loads are not dependend on the future and other code blocks
|
||||
|
||||
Ian Romanick (2):
|
||||
|
||||
- brw: Apply Gfx9 vgrf127 workaround in more cases
|
||||
- elk: Apply vgrf127 workaround in more cases
|
||||
|
||||
Janne Grunau (1):
|
||||
|
||||
- hk: Report the correct plane count in VkDrmFormatModifierProperties2?EXT
|
||||
|
||||
Karol Herbst (6):
|
||||
|
||||
- st/interop: fix fence leak
|
||||
- rusticl/queue: fix error code for invalid queue properties part 1
|
||||
- rusticl/queue: fix error code for invalid queue properties part 2
|
||||
- rusticl/queue: fix error code for invalid sampler kernel arg
|
||||
- rusticl/kernel: take no kernel_info reference inside the launch closure
|
||||
- rusticl/spirv: preserve signed zeroes by default
|
||||
|
||||
Konstantin Seurer (5):
|
||||
|
||||
- lavapipe: Bump maxPrimitiveCount
|
||||
- lavapipe: Zero image null descriptors
|
||||
- lavapipe: Bump MAX_DESCRIPTOR_UNIFORM_BLOCK_SIZE
|
||||
- gallivm/nir/soa: Use the sign of src1 for imod
|
||||
- llvmpipe: Always recompute 1/w
|
||||
|
||||
Lars-Ivar Hesselberg Simonsen (3):
|
||||
|
||||
- panvk: Fix IUB decode
|
||||
- pan/format: Fix mapping for I16F
|
||||
- pan/format: Disable PAN_BIND_STORAGE_IMAGE for RGBA4/BGRA4
|
||||
|
||||
Lionel Landwerlin (3):
|
||||
|
||||
- u_trace: reserve chunk space before emitting copies
|
||||
- anv: avoid invalid timestamp generation due to skipped commands
|
||||
- vulkan/runtime: simplify robustness state hashing
|
||||
|
||||
Ludvig Lindau (1):
|
||||
|
||||
- panfrost: Make instrs_equal check res table/index
|
||||
|
||||
Marek Olšák (1):
|
||||
|
||||
- Revert ABI breakage "amd: Add user queue HQD count to hw_ip info"
|
||||
|
||||
Mel Henning (1):
|
||||
|
||||
- nak/opt_lop: Don't handle modifiers in dedup_srcs
|
||||
|
||||
Mike Blumenkrantz (1):
|
||||
|
||||
- zink: don't destroy old push layout when enabling fbfetch descriptor
|
||||
|
||||
Natalie Vock (1):
|
||||
|
||||
- radv: Fix PSO history with RT pipelines
|
||||
|
||||
Paul Gofman (1):
|
||||
|
||||
- driconf: add a workaround for Investigation Stories : gunsound
|
||||
|
||||
Ryan Houdek (1):
|
||||
|
||||
- freedreno/fdl: Fix typo in tiled_to_linear_2cpp
|
||||
|
||||
Sagar Ghuge (2):
|
||||
|
||||
- anv: Drop unwanted untyped flush for AS query
|
||||
- intel/common: Consider 0 threads while setting TG
|
||||
|
||||
Samuel Pitoiset (3):
|
||||
|
||||
- radv: add a workaround for illegal depth/stencil descriptors with No Man's Sky
|
||||
- aco: fix reserving VGPRs for 64-bit attributes in VS prologs
|
||||
- radv,aco: wait for all VMEM loads when the prolog loads large 64-bit attributes
|
||||
|
||||
Sviatoslav Peleshko (2):
|
||||
|
||||
- mesa,driconf: Add WA to initialize vertex program outputs to vec4(0,0,0,1)
|
||||
- driconf: Add vertex_program_default_out option for Penumbra: Overture
|
||||
|
||||
Tapani Pälli (1):
|
||||
|
||||
- anv: fix issues found with indirect data stride
|
||||
|
||||
Timothy Arceri (1):
|
||||
|
||||
- mesa: skip redundant uniform update optimisation if unsafe
|
||||
|
||||
Yiwei Zhang (6):
|
||||
|
||||
- panvk: fix sample shading of internal blend shader for MSAA
|
||||
- llvmpipe: zero is also a valid fd
|
||||
- llvmpipe: fix udmabuf mmap error check
|
||||
- llvmpipe: add a missing alloc error handling in fd import
|
||||
- llvmpipe: misc fixes for sparse binding
|
||||
- glcpp/meson: fix libglcpp generated header dependency
|
||||
|
|
@ -1,249 +0,0 @@
|
|||
Mesa 25.2.8 Release Notes / 2025-12-04
|
||||
======================================
|
||||
|
||||
Mesa 25.2.8 is a bug fix release which fixes bugs found since the 25.2.7 release.
|
||||
|
||||
Mesa 25.2.8 implements the OpenGL 4.6 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||
4.6 is **only** available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
|
||||
Mesa 25.2.8 implements the Vulkan 1.4 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA checksums
|
||||
-------------
|
||||
|
||||
::
|
||||
|
||||
SHA256: 097842f3e49d996868b38688db87b006f7d4541e93ce86d2f341d8b3e7be7c93 mesa-25.2.8.tar.xz
|
||||
SHA512: a238965ee235bd9178d26b210fc3996b77927dab31964b76cd1e1e72cfffbefbd96e4a57ec4f5018205a58354cd41d6cf99bbc712b275a7518710a34511dfb13 mesa-25.2.8.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- FurMark gets glitchi graphics when using Vulkan API on UHD 620 (mesa 25.2.6 and 26.0)
|
||||
- tu: resource leak
|
||||
- [ANV][LNL] - Detroit: Become Human (1222140) - Flickering horizontal artifacts across the screen
|
||||
- Zink on Android: failed to create dri2 screen
|
||||
- Amnesia: The Bunker (2023) OpenGL graphics glitch on Intel graphics
|
||||
- meson: When building radeonsi without llvm, it fails without setting amd_with_llvm to false explicitly
|
||||
- venus: synchronization tests sometimes get stuck in semaphore/fence wait
|
||||
- GNOME freeze, Nautilus crash and purple flickering on Intel Arc B580 with Mesa 25.2.2 (openSUSE Tumbleweed)
|
||||
- Texture matrix stack pops do not seem to always update the texture matrix
|
||||
- [BMG] Metro Exodus Enhanced Edition (1449560) - Crash
|
||||
- Polaris, amdgpu: Application using VCE wedges GPU
|
||||
- radv vulkan video encode does not process used_by_curr_pic_lt_flag correctly
|
||||
- venus: random failures in dEQP.api.info.image_format_properties2.1d
|
||||
- zink/radv: new cts fails on rdna3
|
||||
- RADV Vulkan video encode isn't available on 25.2.7
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Aitor Camacho (2):
|
||||
|
||||
- vulkan/cmd_queue: Use vk_strdup and free allocated string memory
|
||||
- vulkan/wsi: Fix double destroy of present_id_timeline at swapchain create
|
||||
|
||||
Anna Maniscalco (1):
|
||||
|
||||
- radv: recalculate legacy_gs_info on bind
|
||||
|
||||
Benjamin Cheng (4):
|
||||
|
||||
- radv/video: Align each layer of encode DPB to 256
|
||||
- radv/video: Fix num_ref_idx_l{0,1} related overrides
|
||||
- radv/video: Fix H264/H265 reference selection
|
||||
- radv/video: Override direct_spatial_mv_pred to 1
|
||||
|
||||
Calder Young (3):
|
||||
|
||||
- brw: fix SIMD lowering of fp16 sampler message data with multiple components
|
||||
- anv: Fix ray query shadow stack buffer size
|
||||
- intel: Fix calculation of max_scratch_ids on fused devices
|
||||
|
||||
Christian Gmeiner (1):
|
||||
|
||||
- meson: require sysprof-capture-4 >= 4.49.0
|
||||
|
||||
Christoph Pillmayer (1):
|
||||
|
||||
- nir: Fix preseved metadata in sort_unstructured_blocks
|
||||
|
||||
Daniel Schürmann (2):
|
||||
|
||||
- nir/opt_large_constants: Fix dead deref instructions accessing lowered variables
|
||||
- radv/shader_info: rename gs_ring_info -> legacy_gs_info and use union with ngg_info
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- dozen: return INCOMPATIBLE_DRIVER on instance create failure
|
||||
|
||||
David Rosca (6):
|
||||
|
||||
- radv/video: Fix enabling video encode
|
||||
- vulkan/video: Fix coding AV1 seq_choose_screen_content_tools = 1
|
||||
- radv/video: Fix coding allow_screen_content_tools and force_integer_mv
|
||||
- radv/video: Fix coding used_by_curr_pic_lt_flag
|
||||
- radeonsi/vce: Add workaround for unaligned input surface
|
||||
- radeonsi/vcn: Reduce allocated size for pre-encode recon pics
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- tu: Fix leak of compute shader pipeline->base.executables_mem_ctx;
|
||||
|
||||
Eric Engestrom (6):
|
||||
|
||||
- docs: add sha sum for 25.2.7
|
||||
- .pick_status.json: Update to df19ec302093b5e47c0d7556ea41af47d2b7af67
|
||||
- .pick_status.json: Mark fa1fd2413f5a8a24959664e284372135b3deac83 as denominated
|
||||
- .pick_status.json: Mark b2b5e83894a4e1dec0cd62f73f5598dd4e50c264 as denominated
|
||||
- meson: auto-disable \`amd-use-llvm` when \`llvm=disabled`
|
||||
- meson: auto-disable \`draw-use-llvm` when \`llvm=disabled`
|
||||
|
||||
Eric R. Smith (1):
|
||||
|
||||
- pan: fix a bifrost disassembly assert failure
|
||||
|
||||
Erik Faye-Lund (2):
|
||||
|
||||
- mesa/main: correct formatquery error-handling
|
||||
- mesa/st: do not enable EXT_texture_buffer_object with rgba only
|
||||
|
||||
Faith Ekstrand (1):
|
||||
|
||||
- vulkan/drm-syncobj: Stop returning early waiting for sync files
|
||||
|
||||
Gert Wollny (1):
|
||||
|
||||
- r600/sfn: Don't start a new ALU-CF if LDS pipeline loads are pending
|
||||
|
||||
Ian Forbes (1):
|
||||
|
||||
- svga: Check if Stencil buffer is NULL
|
||||
|
||||
Ian Romanick (2):
|
||||
|
||||
- brw: Force allow_spilling when spill_all is set
|
||||
- lavapipe: fp16 flrp must also be lowered
|
||||
|
||||
Jianxun Zhang (1):
|
||||
|
||||
- isl: Disable BMG Modifier (xe2)
|
||||
|
||||
Joshua Simmons (1):
|
||||
|
||||
- vtn: Fix OpCopyLogical destination type
|
||||
|
||||
Karol Herbst (2):
|
||||
|
||||
- rusticl/kernel: fix clGetKernelSuggestedLocalWorkSizeKHR implementation
|
||||
- rusticl/kernel: Do not run kernels with a workgroup size beyond work_dim
|
||||
|
||||
Lionel Landwerlin (12):
|
||||
|
||||
- brw: fix workaround fence rlen field
|
||||
- brw: fix SIMD lowering of sampler messages with fp16 data
|
||||
- anv: ensure slab allocated memory matches image requirements
|
||||
- anv: fixup load_ubo lowering
|
||||
- brw: fixup 64bit atomics emulation on 2D array images
|
||||
- anv: consider 64bit atomics on similar formats with mutable images
|
||||
- anv: Wa_18040903259 only applies to RCS when in GPGPU mode
|
||||
- brw: compute final copy propagation resulting source
|
||||
- nir: fix lower_printf with no arguments
|
||||
- spirv: fix printf generation
|
||||
- nir/lower_printf: fix array alignment
|
||||
- nir/lower_printf: fix missing singleton add
|
||||
|
||||
Mario Kleiner (1):
|
||||
|
||||
- wsi/wayland: Zero min_luminance, max_luminance HDR light levels are valid.
|
||||
|
||||
Matt Turner (1):
|
||||
|
||||
- meson: Fix sysprof-capture-4 dependency
|
||||
|
||||
Mel Henning (5):
|
||||
|
||||
- zink: Return zink_device in create_logical_device
|
||||
- zink: Make screen->queue_lock a pointer
|
||||
- zink: Create one queue lock per device
|
||||
- zink: Lock queue_lock in zink_destroy_screen
|
||||
- zink: Lock around screen_debug_marker_{begin,end}
|
||||
|
||||
Natalie Vock (4):
|
||||
|
||||
- aco/insert_nops: Consider s_setpc target susceptible to VALUReadSGPRHazard
|
||||
- radv/rt: Keep updated nodes always active
|
||||
- radv/rt: Correctly copy culling flags when updating to separate AS
|
||||
- radv: Move VMID reservation to vkCreateDevice
|
||||
|
||||
Olivia Lee (2):
|
||||
|
||||
- panvk/csf: fix uninitialized read in draw context
|
||||
- panvk/csf: explicitly set ls_sb_slot in set_fbds_provoking_vertex
|
||||
|
||||
Patrick Lerda (2):
|
||||
|
||||
- r600: fix rv770 read scratch compatibility
|
||||
- r600: fix error filters compatibility
|
||||
|
||||
Paulo Zanoni (1):
|
||||
|
||||
- anv/sparse: we can support R64 and other atomics emulated formats
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (1):
|
||||
|
||||
- radeonsi/sqtt: clear out sqtt bo on resize
|
||||
|
||||
Rob Clark (1):
|
||||
|
||||
- freedreno/a6xx: Fix UB in convert_color()
|
||||
|
||||
Samuel Pitoiset (2):
|
||||
|
||||
- radv: fix per-submit RGP captures on video queues
|
||||
- radv: reduce maxTexelBufferElements to 1<<29
|
||||
|
||||
Sushma Venkatesh Reddy (1):
|
||||
|
||||
- drirc: Add anv_assume_full_subgroups for Detroit: Become Human
|
||||
|
||||
Tapani Pälli (3):
|
||||
|
||||
- drirc/iris: add drirc to disable threaded context
|
||||
- drirc: set intel_disable_threaded_context for Amnesia The Bunker
|
||||
- anv: add furmark workaround layer
|
||||
|
||||
Timothy Arceri (2):
|
||||
|
||||
- mesa: fix _mesa_update_texture_matrices()
|
||||
- util/driconf: Add linux version of Penumbra fixes
|
||||
|
||||
Timur Kristóf (3):
|
||||
|
||||
- ac/nir/ngg: Fix scratch space for NGG GS streamout
|
||||
- radv: Disable sparse mapping when unsupported by VM
|
||||
- ac/gpu_info: Disable sparse VM mappings pre-Polaris, for now
|
||||
|
||||
Valentine Burley (2):
|
||||
|
||||
- intel/ci: Drop timeout overrides for pre-merge jobs
|
||||
- egl: Disable kopper on Android
|
||||
|
||||
Yiwei Zhang (2):
|
||||
|
||||
- venus: use seq_cst for ring cs and tail update ordering
|
||||
- venus: fix racy semaphore feedback counter update
|
||||
|
|
@ -21,8 +21,7 @@ SHA checksums
|
|||
|
||||
::
|
||||
|
||||
SHA256: 0fd54fea7dbbddb154df05ac752b18621f26d97e27863db3be951417c6abe8ae mesa-25.3.0.tar.xz
|
||||
SHA512: 46df9e5e27f9a36cf893a68ad4a465fcc6efe1bcb46ad8d4b015699ad1a11e582b8d41f4157326556af603fe454b2ff34ecc17a0c742b5fd9ce5f0097106fec5 mesa-25.3.0.tar.xz
|
||||
TBD.
|
||||
|
||||
|
||||
New features
|
||||
|
|
@ -136,6 +135,7 @@ Bug fixes
|
|||
- nvk, nak: Broken icons in ENDLESS Legend 2 on a RTX 4080
|
||||
- LLVMPipe's \`VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPrimitiveCount` is lower than Vulkan requires.
|
||||
- asahi: DMABuf import of multi-plane YCbCr (NV12 from ISP) not renderer correctly
|
||||
- asahi: DMABuf import of multi-plane YCbCr (NV12 from ISP) not renderer correctly
|
||||
- brw: Gfx9 sampler messages violate r127 rule
|
||||
- radv: No Man's Sky XESS page fault GPU reset
|
||||
- r600/sfn: Assertion \`cir.alu_vec.empty()` failed
|
||||
|
|
@ -233,6 +233,8 @@ Bug fixes
|
|||
- nvk: test_conditional_rendering fails on vkd3d-proton
|
||||
- Segfault in x11_xlib_display_is_thread_safe
|
||||
- [ANV][BMG] Witcher 3 ray tracing freeze on a Arc b580
|
||||
- [ANV][BMG] Witcher 3 ray tracing freeze on a Arc b580
|
||||
- [ANV][BMG] Witcher 3 ray tracing freeze on a Arc b580
|
||||
- anv: optimize utrace overhead from bo memset
|
||||
- radv: watching vp9 encoded video with vulkan hwdecode result in artifacts
|
||||
- ci: zink-venus-lavapipe errors
|
||||
|
|
@ -299,6 +301,7 @@ Bug fixes
|
|||
- radv: regression in KHR-GL46.gpu_shader5_gl.float_encoding
|
||||
- !36097 breaks Xwayland (& others)
|
||||
- GPU process crash via WebGPU shader - heap-buffer-overflow in Mesa build_interference_graph
|
||||
- GPU process crash via WebGPU shader - heap-buffer-overflow in Mesa build_interference_graph
|
||||
- radeonsi: Broken VAAPI video color conversion
|
||||
- Gallium HUD broken since !34054
|
||||
|
||||
|
|
@ -771,7 +774,7 @@ Caio Oliveira (93):
|
|||
- brw: Run validation as soon as we have the CFG around
|
||||
- brw: Fix printing of blocks in disassembly when BRW is available
|
||||
- util: Avoid invalid access in ralloc_print_info()
|
||||
- brw: Add \`FILE \*\` parameter to dump_assembly
|
||||
- brw: Add \`FILE *` parameter to dump_assembly
|
||||
- brw: Add and use more brw_validate.cpp macros
|
||||
- brw: Use uint16_t for size_written
|
||||
- brw: Centralize brw_inst allocation
|
||||
|
|
|
|||
|
|
@ -1,279 +0,0 @@
|
|||
Mesa 25.3.1 Release Notes / 2025-12-03
|
||||
======================================
|
||||
|
||||
Mesa 25.3.1 is a bug fix release which fixes bugs found since the 25.3.0 release.
|
||||
|
||||
Mesa 25.3.1 implements the OpenGL 4.6 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||
4.6 is **only** available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
|
||||
Mesa 25.3.1 implements the Vulkan 1.4 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA checksums
|
||||
-------------
|
||||
|
||||
::
|
||||
|
||||
SHA256: 059d0d985622f49588f01aa29152804f4da8ffe6add046e00a52923379c2d8da mesa-25.3.1.tar.xz
|
||||
SHA512: 7e2f7295f1f4df129935b60d75c890f6ae585ecc511f69f55a61826df5f2434ffdb4109c632af9842a986bf9beed430a0404d377e8335b71fa36682bd10533ba mesa-25.3.1.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- venus: synchronization tests sometimes get stuck in semaphore/fence wait
|
||||
- [ANV][LNL] - Detroit: Become Human (1222140) - Flickering horizontal artifacts across the screen
|
||||
- [ANV][LNL] - Eternal Strands (1491410) - Colorful graphical aberrations are present whenever a 3D asset is visible.
|
||||
- [ANV][DG2/LNL] SolarBay extreme RT regression
|
||||
- After 25.3 update some app windows became glitchy on uhd 620
|
||||
- FurMark gets glitchi graphics when using Vulkan API on UHD 620 (mesa 25.2.6 and 26.0)
|
||||
- tu: resource leak
|
||||
- Regression: MSVC fails to build 32 bit binaries
|
||||
- Zink on Android: failed to create dri2 screen
|
||||
- Amnesia: The Bunker (2023) OpenGL graphics glitch on Intel graphics
|
||||
- freedreno, tu: resource leak
|
||||
- meson: When building radeonsi without llvm, it fails without setting amd_with_llvm to false explicitly
|
||||
- loader.c:156:14: error: call to undeclared function 'drmCommandWriteRead'
|
||||
- radv: RB+ for depth-only is broken with unused color attachments
|
||||
- win_bison random failure extern_stdin:40: ERROR: end of file in string
|
||||
- Texture matrix stack pops do not seem to always update the texture matrix
|
||||
- Polaris, amdgpu: Application using VCE wedges GPU
|
||||
- radv vulkan video encode does not process used_by_curr_pic_lt_flag correctly
|
||||
- [BMG] Metro Exodus Enhanced Edition (1449560) - Crash
|
||||
- venus: random failures in dEQP.api.info.image_format_properties2.1d
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Aitor Camacho (2):
|
||||
|
||||
- vulkan/cmd_queue: Use vk_strdup and free allocated string memory
|
||||
- vulkan/wsi: Fix double destroy of present_id_timeline at swapchain create
|
||||
|
||||
Alyssa Rosenzweig (1):
|
||||
|
||||
- nir/sweep: fix use-after-free with dominance LCA
|
||||
|
||||
Benjamin Cheng (4):
|
||||
|
||||
- radv/video: Align each layer of encode DPB to 256
|
||||
- radv/video: Fix num_ref_idx_l{0,1} related overrides
|
||||
- radv/video: Fix H264/H265 reference selection
|
||||
- radv/video: Override direct_spatial_mv_pred to 1
|
||||
|
||||
Calder Young (3):
|
||||
|
||||
- brw: fix SIMD lowering of fp16 sampler message data with multiple components
|
||||
- anv: Fix ray query shadow stack buffer size
|
||||
- intel: Fix calculation of max_scratch_ids on fused devices
|
||||
|
||||
Christoph Pillmayer (1):
|
||||
|
||||
- nir: Fix preseved metadata in sort_unstructured_blocks
|
||||
|
||||
Connor Abbott (1):
|
||||
|
||||
- tu: Handle case where pipeline writes unused color attachments
|
||||
|
||||
Daniel Schürmann (1):
|
||||
|
||||
- nir/opt_large_constants: Fix dead deref instructions accessing lowered variables
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- dozen: return INCOMPATIBLE_DRIVER on instance create failure
|
||||
|
||||
David Rosca (7):
|
||||
|
||||
- vulkan/video: Fix coding AV1 seq_choose_screen_content_tools = 1
|
||||
- radv/video: Fix coding allow_screen_content_tools and force_integer_mv
|
||||
- radv/video: Fix coding used_by_curr_pic_lt_flag
|
||||
- radeonsi/vce: Add workaround for unaligned input surface
|
||||
- radeonsi/vcn: Reduce allocated size for pre-encode recon pics
|
||||
- radeonsi/vcn: Fix maybe uninitialized warning
|
||||
- radv/video: Fix AV1 quantization map maxQIndexDelta value
|
||||
|
||||
Dylan Baker (9):
|
||||
|
||||
- docs: Add sha sums for 25.3.0
|
||||
- .pick_status.json: Update to 018f45f9812cb5b728e2eb32a5b350efdd9ac90f
|
||||
- .pick_status.json: Update to 7a3bfd1f7913819db315e6db8b42520a2d862690
|
||||
- .pick_status.json: Update to 7c193ffef1a8316b4b666c9c2ec5afdd2035dd89
|
||||
- .pick_status.json: Update to bcedc88f2142d9a2b277c7b848b744e13d426f76
|
||||
- .pick_status.json: Update to 076a3834374b2ccd43dd1c7ce73f44795d601300
|
||||
- .pick_status.json: Update to a71b4a4b954dcfc1667dc1b36f1f25ac02d3469b
|
||||
- .pick_status.json: Update to ac37885fc85203c08f09345c637b6a21f642ed66
|
||||
- docs/relnotes/25.3.0: Escape some rst language constructs
|
||||
|
||||
Emma Anholt (1):
|
||||
|
||||
- tu: Fix leak of compute shader pipeline->base.executables_mem_ctx;
|
||||
|
||||
Eric Engestrom (3):
|
||||
|
||||
- meson: auto-disable \`amd-use-llvm` when \`llvm=disabled`
|
||||
- meson: auto-disable \`draw-use-llvm` when \`llvm=disabled`
|
||||
- ci: use $CI_TRON_JOB_PRIORITY tag on all ci-tron jobs
|
||||
|
||||
Eric R. Smith (1):
|
||||
|
||||
- pan: fix a bifrost disassembly assert failure
|
||||
|
||||
Erik Faye-Lund (4):
|
||||
|
||||
- pan/kmod: fix priority query logic
|
||||
- panfrost: remove stale code
|
||||
- mesa/main: correct formatquery error-handling
|
||||
- mesa/st: do not enable EXT_texture_buffer_object with rgba only
|
||||
|
||||
Faith Ekstrand (1):
|
||||
|
||||
- vulkan/drm-syncobj: Stop returning early waiting for sync files
|
||||
|
||||
Gil Pedersen (1):
|
||||
|
||||
- intel: Add PIPE_FORMAT_R10G10B10X2_UNORM support
|
||||
|
||||
Gurchetan Singh (1):
|
||||
|
||||
- util: fix arithmetic on a pointer to void warning
|
||||
|
||||
Hyunjun Ko (1):
|
||||
|
||||
- vulkan/video: Fix H.265 long-term reference handling
|
||||
|
||||
Ian Forbes (1):
|
||||
|
||||
- svga: Check if Stencil buffer is NULL
|
||||
|
||||
Ian Romanick (2):
|
||||
|
||||
- brw: Force allow_spilling when spill_all is set
|
||||
- lavapipe: fp16 flrp must also be lowered
|
||||
|
||||
Icenowy Zheng (1):
|
||||
|
||||
- pvr: enable samplerMirrorClampToEdge feature
|
||||
|
||||
Karol Herbst (2):
|
||||
|
||||
- rusticl/kernel: fix clGetKernelSuggestedLocalWorkSizeKHR implementation
|
||||
- rusticl/kernel: Do not run kernels with a workgroup size beyond work_dim
|
||||
|
||||
Lionel Landwerlin (15):
|
||||
|
||||
- brw: fixup 64bit atomics emulation on 2D array images
|
||||
- brw: fix SIMD lowering of sampler messages with fp16 data
|
||||
- brw: fix workaround fence rlen field
|
||||
- anv: fixup load_ubo lowering
|
||||
- anv: ensure slab allocated memory matches image requirements
|
||||
- anv: consider 64bit atomics on similar formats with mutable images
|
||||
- anv: Wa_18040903259 only applies to RCS when in GPGPU mode
|
||||
- brw: compute final copy propagation resulting source
|
||||
- nir: fix lower_printf with no arguments
|
||||
- spirv: fix printf generation
|
||||
- nir/lower_printf: fix array alignment
|
||||
- nir/lower_printf: fix missing singleton add
|
||||
- vulkan/runtime: track dynamic descriptor offsets for RT pipelines
|
||||
- anv: fix broken ray tracing dynamic descriptors
|
||||
- anv: add 32-wide subgroup requirement heuristic
|
||||
|
||||
Matt Turner (2):
|
||||
|
||||
- meson: Fix sysprof-capture-4 dependency
|
||||
- meson: Let -Ddraw-use-llvm=false work for R300 on non-x86
|
||||
|
||||
Mel Henning (5):
|
||||
|
||||
- zink: Return zink_device in create_logical_device
|
||||
- zink: Make screen->queue_lock a pointer
|
||||
- zink: Create one queue lock per device
|
||||
- zink: Lock queue_lock in zink_destroy_screen
|
||||
- zink: Lock around screen_debug_marker_{begin,end}
|
||||
|
||||
Natalie Vock (3):
|
||||
|
||||
- aco/insert_nops: Consider s_setpc target susceptible to VALUReadSGPRHazard
|
||||
- radv/rt: Keep updated nodes always active
|
||||
- radv/rt: Correctly copy culling flags when updating to separate AS
|
||||
|
||||
Olivia Lee (2):
|
||||
|
||||
- panvk/csf: fix uninitialized read in draw context
|
||||
- panvk/csf: explicitly set ls_sb_slot in set_fbds_provoking_vertex
|
||||
|
||||
Patrick Lerda (2):
|
||||
|
||||
- r600: fix rv770 read scratch compatibility
|
||||
- r600: fix error filters compatibility
|
||||
|
||||
Pierre-Eric Pelloux-Prayer (2):
|
||||
|
||||
- radeonsi/sqtt: clear out sqtt bo on resize
|
||||
- mesa: fix function prototype
|
||||
|
||||
Qiang Yu (1):
|
||||
|
||||
- glsl: support barrier() for task and mesh shader
|
||||
|
||||
Rob Clark (2):
|
||||
|
||||
- freedreno/a6xx: Fix UB in convert_color()
|
||||
- freedreno: Fix internal VBO reference leak
|
||||
|
||||
Samuel Pitoiset (2):
|
||||
|
||||
- radv: fix RB+ for depth-only with unused attachments
|
||||
- radv: fix per-submit RGP captures on video queues
|
||||
|
||||
Sushma Venkatesh Reddy (1):
|
||||
|
||||
- drirc: Add anv_assume_full_subgroups for Detroit: Become Human
|
||||
|
||||
Tapani Pälli (4):
|
||||
|
||||
- drirc/iris: add drirc to disable threaded context
|
||||
- drirc: set intel_disable_threaded_context for Amnesia The Bunker
|
||||
- anv: add furmark workaround layer
|
||||
- anv: add vk_wsi_disable_unordered_submits and enable for GTK
|
||||
|
||||
Timothy Arceri (2):
|
||||
|
||||
- mesa: fix _mesa_update_texture_matrices()
|
||||
- util/driconf: Add linux version of Penumbra fixes
|
||||
|
||||
Timur Kristóf (2):
|
||||
|
||||
- radv: Disable sparse mapping when unsupported by VM
|
||||
- ac/gpu_info: Disable sparse VM mappings pre-Polaris, for now
|
||||
|
||||
Valentine Burley (1):
|
||||
|
||||
- egl: Disable kopper on Android
|
||||
|
||||
Yiwei Zhang (4):
|
||||
|
||||
- venus: use seq_cst for ring cs and tail update ordering
|
||||
- venus: avoid re-imported dma-buf to have a larger map size
|
||||
- venus: properly fix the blob mem mapping size
|
||||
- venus: fix racy semaphore feedback counter update
|
||||
|
||||
Yonggang Luo (1):
|
||||
|
||||
- ci/microsoft: Downgrading WinFlexBison.win_flex_bison to version 2.5.24
|
||||
|
||||
Yurii Kolesnykov (1):
|
||||
|
||||
- loader: Wrap nouveau_zink_predicate with HAVE_LIBDRM
|
||||
|
|
@ -1,240 +0,0 @@
|
|||
Mesa 25.3.2 Release Notes / 2025-12-17
|
||||
======================================
|
||||
|
||||
Mesa 25.3.2 is a bug fix release which fixes bugs found since the 25.3.1 release.
|
||||
|
||||
Mesa 25.3.2 implements the OpenGL 4.6 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.6. OpenGL
|
||||
4.6 is **only** available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
|
||||
Mesa 25.3.2 implements the Vulkan 1.4 API, but the version reported by
|
||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
||||
depends on the particular driver being used.
|
||||
|
||||
SHA checksums
|
||||
-------------
|
||||
|
||||
::
|
||||
|
||||
SHA256: e69dab0d0ea03e3e8cb141b032f58ea9fcf3b9c1f61b31f6592cb4bbd8d0185d mesa-25.3.2.tar.xz
|
||||
SHA512: 499cb0aa254b5a706fb6c2414c23b9d5d03d9397475f7ad16744b982303a2a2bf643ef7adc64870645ee4355b5f95695becd6caff7d7f7caf698e6269589aa13 mesa-25.3.2.tar.xz
|
||||
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- None
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- [bisected][iris] - Celeste - Lighting artifacts during gameplay
|
||||
- [bsw][regression][bisected][hasvk] various crashing tests
|
||||
- radv: incorrect vectorization of 8-bit/16-bit causes random GPU hangs with DXVK
|
||||
- LLVM crashes when loading specific Minecraft Shaderpacks
|
||||
- Firefox crashes in some Gallium drivers since mesa 25.3.0
|
||||
- radv: Is radv_wsi_get_prime_blit_queue bugged?
|
||||
- radv: don't include constant data in RGP captures
|
||||
- [anv] mpv video playback blacks out when resized larger than video resolution
|
||||
- corrupted video when using pRefList0ModOperations on radv h264
|
||||
- [radv] [feature request] Add an env var to not expose resizable bar to app
|
||||
- Steam Deck/9060 XT Consistently hang with game demo "Cursemark"
|
||||
|
||||
|
||||
Changes
|
||||
-------
|
||||
|
||||
Aitor Camacho (2):
|
||||
|
||||
- wsi/metal: Fix command buffer release at destroy
|
||||
- wsi/metal: Fix blit_imate_to_image's pool selection for cmd buffer alloc
|
||||
|
||||
Anna Maniscalco (1):
|
||||
|
||||
- radv: recalculate legacy_gs_info on bind
|
||||
|
||||
Ashley Smith (1):
|
||||
|
||||
- panfrost,panvk: Enable shader_realtime_clock on panthor 1.6
|
||||
|
||||
Benjamin Cheng (2):
|
||||
|
||||
- radv/video: Fix force_integer_mv=1 on intra frame
|
||||
- radv/video: Always end ref pic modification list
|
||||
|
||||
Boris Brezillon (5):
|
||||
|
||||
- panvk: Fix a memory leak in the descriptor set logic
|
||||
- pan/bi: Fix leak in bi_iterator_schedule()
|
||||
- panvk: Don't leak shader binaries when loaded from the cache
|
||||
- panvk: Free the decode context in the create_device() error path
|
||||
- pan/cs: Don't leak builder resources
|
||||
|
||||
Caio Oliveira (1):
|
||||
|
||||
- nir/gcm: Consider dead code elimination done by GCM as progress
|
||||
|
||||
Calder Young (3):
|
||||
|
||||
- anv: Fix scratch pool buffer allocation sizes
|
||||
- anv: Fix misplaced assertion in anv_scratch_pool_alloc
|
||||
- anv: Fix typo when checking if async rt scratch size changed
|
||||
|
||||
Connor Abbott (4):
|
||||
|
||||
- tu: Fix GRAS_BIN_FOVEAT* programming with more than 1 layer
|
||||
- tu: Fix FragCoord offset when HW viewport offset is enabled
|
||||
- tu: Fill render pass state when resuming
|
||||
- ir3: Fix condition for using uniform predicates
|
||||
|
||||
Dave Airlie (1):
|
||||
|
||||
- nak/cmat: free the type mapping hash table.
|
||||
|
||||
Dylan Baker (16):
|
||||
|
||||
- docs: Add checksums for 25.3.1
|
||||
- .pick_status.json: Update to b75cd07265b6d34cefde80399e7ff0cd7652dbca
|
||||
- .pick_status.json: Mark 829bd406c04566962268138195ecb2c4d78da5cf as backported
|
||||
- .pick_status.json: Update to b13003133d4440bfd33fc320c051b474458c8e02
|
||||
- .pick_status.json: Update to 0104b3df414bddeab37ae6cf116c532410134bc0
|
||||
- .pick_status.json: Update to f912db3f8dc0c0cb8cb2358e6ec79dd03b7a875d
|
||||
- .pick_status.json: Update to 72b43c0595d41c233d039c32f63120e0c3c27f59
|
||||
- .pick_status.json: Update to 095c2acf0180a1cbe7d60b6ffbfcd14e35724e22
|
||||
- anv/video: Read the right source for memcpy
|
||||
- anv/video: Cast intentional read past end of struct member to void*
|
||||
- .pick_status.json: Update to b5cf3b1628bdf473ea40a6756a4098eb56151bbc
|
||||
- .pick_status.json: Update to 518705a4fe794683a4c672f803e011490d24c12c
|
||||
- .pick_status.json: Update to 9c16bbd0237575e5dd9bd4e5f25d6da990ac4925
|
||||
- .pick_status.json: Update to dfdaee5ca74fbf1945326b454079575826df5a89
|
||||
- .pick_status.json: Mark 6dff50c8bc7430bf04c0dc5d8dc648f6ed73e4f3 as backported
|
||||
- .pick_status.json: Mark bbc8ce27048440befc0519ac03eeefa933f6ef0d as backported
|
||||
|
||||
Eric R. Smith (1):
|
||||
|
||||
- panfrost: do not allow skipping of fragment shader when alpha-to-coverage
|
||||
|
||||
Erik Faye-Lund (2):
|
||||
|
||||
- docs/panfrost: remove some stray newlines
|
||||
- panfrost: do not over-estimate memory needed for dummy-rt
|
||||
|
||||
Faith Ekstrand (2):
|
||||
|
||||
- pan/bi: Fix LD_VAR_BUF indirect offset calculations
|
||||
- pan/bi: Handle small vectors in bi_src_index()
|
||||
|
||||
Georg Lehmann (3):
|
||||
|
||||
- nir/opt_uniform_subgroup: don't try to optimize non trivial clustered reduce
|
||||
- nir/opt_uniform_subgroup: fix swizzle_amd without fetch_inactive
|
||||
- nir/divergence_analysis: fix swizzle_amd without fetch inactive
|
||||
|
||||
Gurchetan Singh (1):
|
||||
|
||||
- gfxstream: fix logspam in TLS helper function
|
||||
|
||||
Hans-Kristian Arntzen (1):
|
||||
|
||||
- egl/x11: Fix memory leak when querying translated coord.
|
||||
|
||||
Hyunjun Ko (1):
|
||||
|
||||
- anv/video: fix VP9 chroma subsampling format detection
|
||||
|
||||
Janne Grunau (1):
|
||||
|
||||
- util/driconf/asahi: Override GL renderer for web browsers
|
||||
|
||||
Karmjit Mahil (1):
|
||||
|
||||
- gallium: Fix gnu-empty-initalizer error
|
||||
|
||||
Karol Herbst (1):
|
||||
|
||||
- nir: add ACCESS to shared_uniform_block_intel
|
||||
|
||||
Kenneth Graunke (1):
|
||||
|
||||
- nir: Fix mod analysis of ishl to shift the recursive result
|
||||
|
||||
Konstantin Seurer (1):
|
||||
|
||||
- nir: Ignore ray query ranges that don't start with rq_initialize
|
||||
|
||||
LingMan (3):
|
||||
|
||||
- rust: build \`equivalent` dependency with the correct edition
|
||||
- rust: build \`paste` dependency with the correct edition
|
||||
- rust: build \`ucd-trie` dependency with the correct edition
|
||||
|
||||
Lionel Landwerlin (8):
|
||||
|
||||
- anv: fix internal representations of shaders
|
||||
- anv: add missing device_memory_report for shaders
|
||||
- anv: fixup error path for shader allocation
|
||||
- anv: disable crast on SKL
|
||||
- vulkan/runtime: add an internal flag for independent sets
|
||||
- anv: reintroduce non independent sets dynamic descriptor optimization
|
||||
- anv: move load_num_workgroups tracking to driver
|
||||
- anv: fix dynamic buffers & independent sets
|
||||
|
||||
Mary Guillemard (1):
|
||||
|
||||
- nvk: Use rendering state attachment count when setting SET_CT_SELECT
|
||||
|
||||
Nanley Chery (3):
|
||||
|
||||
- anv: Don't allow STORAGE + CCS for Y_TILED mod
|
||||
- intel/isl: Only assert surface addresses on gfx9+
|
||||
- iris: Fix pipe control around fast-clears
|
||||
|
||||
Natalie Vock (1):
|
||||
|
||||
- radv: Move VMID reservation to vkCreateDevice
|
||||
|
||||
Patrick Lerda (1):
|
||||
|
||||
- r600: improve cayman scissor 1x1 workaround
|
||||
|
||||
Qiang Yu (1):
|
||||
|
||||
- ac/llvm: workaround legacy fma intrinsic crash on gfx12
|
||||
|
||||
Rhys Perry (2):
|
||||
|
||||
- ac/nir: fix calculation of aligned_new_size
|
||||
- ac/nir: fix check for increasing size of non-descriptor loads
|
||||
|
||||
Rob Clark (3):
|
||||
|
||||
- freedreno/decode: Add extra indent levels
|
||||
- gallium: Make upload_cb0 return a releasebuf
|
||||
- asahi: Set prefer_real_buffer_in_constbuf0
|
||||
|
||||
Samuel Pitoiset (4):
|
||||
|
||||
- radv: add radv_hide_rebar_on_dgpu and enable for Red Dead Redemption 2
|
||||
- radv: reduce maxTexelBufferElements to 1<<29
|
||||
- radv: only include executable size when capturing shaders with RGP
|
||||
- radv: fix race condition when getting the blit queue
|
||||
|
||||
Timothy Arceri (1):
|
||||
|
||||
- util/driconf: add Cursemark workaround
|
||||
|
||||
Utku Iseri (1):
|
||||
|
||||
- panfrost: add earlyzs FPK condition for v6-
|
||||
|
||||
Valentine Burley (1):
|
||||
|
||||
- panfrost/ci: Fix GitLab rules after YAML split
|
||||
|
||||
Yiwei Zhang (1):
|
||||
|
||||
- pan: fix pan_blend_reads_dest to consider special min/max funcs
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
VK_KHR_relaxed_block_layout on pvr
|
||||
VK_KHR_storage_buffer_storage_class on pvr
|
||||
VK_EXT_external_memory_acquire_unmodified on panvk
|
||||
VK_EXT_discard_rectangles on NVK
|
||||
VK_KHR_present_id on HoneyKrisp
|
||||
VK_KHR_present_id2 on HoneyKrisp
|
||||
VK_KHR_present_wait on HoneyKrisp
|
||||
VK_KHR_present_wait2 on HoneyKrisp
|
||||
VK_KHR_maintenance10 on ANV, NVK, RADV
|
||||
VK_EXT_shader_uniform_buffer_unsized_array on NVK, RADV
|
||||
VK_EXT_device_memory_report on panvk
|
||||
VK_VALVE_video_encode_rgb_conversion on radv
|
||||
VK_EXT_custom_resolve on RADV
|
||||
GL_EXT_shader_pixel_local_storage on Panfrost v6+
|
||||
VK_EXT_image_drm_format_modifier on panvk/v7
|
||||
VK_KHR_sampler_ycbcr_conversion on panvk/v7
|
||||
sparseResidencyImage2D on panvk v10+
|
||||
sparseResidencyStandard2DBlockShape on panvk v10+
|
||||
VK_KHR_surface_maintenance1 promotion everywhere EXT is exposed
|
||||
VK_KHR_swapchain_maintenance1 promotion everywhere EXT is exposed
|
||||
VK_KHR_dynamic_rendering on PowerVR
|
||||
VK_EXT_multisampled_render_to_single_sampled on panvk
|
||||
|
|
@ -497,12 +497,11 @@ Our documentation is written as `reStructuredText`_ files in the
|
|||
.. code-block:: sh
|
||||
|
||||
# Install dependencies (adapt for your distribution)
|
||||
apk add coreutils graphviz clang-dev musl-dev linux-headers
|
||||
python3 -m venv docs-build
|
||||
./docs-build/bin/pip3 install sphinx===8.2.3 mako===1.2.3 hawkmoth===0.19.0 clang===$(llvm-config --version)
|
||||
apk add coreutils graphviz py3-clang clang-dev musl-dev linux-headers
|
||||
pip3 install sphinx===5.1.1 mako===1.2.3 hawkmoth===0.16.0
|
||||
|
||||
# Build docs (on Debian, set LD_LIBRARY_PATH to /usr/lib/llvm-VERSION/lib so it can find libclang.so)
|
||||
./docs-build/bin/sphinx-build -W -b html docs docs-html/
|
||||
# Build docs
|
||||
sphinx-build -W -b html docs docs-html/
|
||||
|
||||
The preferred language of the documentation is US English. This
|
||||
doesn't mean that everyone is expected to pay close attention to
|
||||
|
|
|
|||
|
|
@ -75,8 +75,7 @@ __BEGIN_DECLS
|
|||
#define ATRACE_TAG_AIDL (1<<24)
|
||||
#define ATRACE_TAG_NNAPI (1<<25)
|
||||
#define ATRACE_TAG_RRO (1<<26)
|
||||
#define ATRACE_TAG_THERMAL (1 << 27)
|
||||
#define ATRACE_TAG_LAST ATRACE_TAG_THERMAL
|
||||
#define ATRACE_TAG_LAST ATRACE_TAG_RRO
|
||||
|
||||
// Reserved for initialization.
|
||||
#define ATRACE_TAG_NOT_READY (1ULL<<63)
|
||||
|
|
@ -89,36 +88,6 @@ __BEGIN_DECLS
|
|||
#error ATRACE_TAG must be defined to be one of the tags defined in cutils/trace.h
|
||||
#endif
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_begin_body(const char*);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_end_body();
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_async_begin_body(const char*, int32_t);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_async_end_body(const char*, int32_t);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_async_for_track_begin_body(const char*, const char*, int32_t);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_async_for_track_end_body(const char*, int32_t);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_instant_body(const char*);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_instant_for_track_body(const char*, const char*);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_int_body(const char*, int32_t);
|
||||
|
||||
/** Internal implementation detail. Do not use. */
|
||||
void atrace_int64_body(const char*, int64_t);
|
||||
|
||||
/**
|
||||
* Opens the trace file for writing and reads the property for initial tags.
|
||||
* The atrace.tags.enableflags property sets the tags to trace.
|
||||
|
|
@ -189,6 +158,7 @@ static inline uint64_t atrace_is_tag_enabled(uint64_t tag)
|
|||
static inline void atrace_begin(uint64_t tag, const char* name)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_begin_body(const char*);
|
||||
atrace_begin_body(name);
|
||||
}
|
||||
}
|
||||
|
|
@ -201,6 +171,7 @@ static inline void atrace_begin(uint64_t tag, const char* name)
|
|||
static inline void atrace_end(uint64_t tag)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_end_body();
|
||||
atrace_end_body();
|
||||
}
|
||||
}
|
||||
|
|
@ -218,6 +189,7 @@ static inline void atrace_async_begin(uint64_t tag, const char* name,
|
|||
int32_t cookie)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_async_begin_body(const char*, int32_t);
|
||||
atrace_async_begin_body(name, cookie);
|
||||
}
|
||||
}
|
||||
|
|
@ -230,72 +202,11 @@ static inline void atrace_async_begin(uint64_t tag, const char* name,
|
|||
static inline void atrace_async_end(uint64_t tag, const char* name, int32_t cookie)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_async_end_body(const char*, int32_t);
|
||||
atrace_async_end_body(name, cookie);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the beginning of an asynchronous event. In addition to the name and a
|
||||
* cookie as in ATRACE_ASYNC_BEGIN/ATRACE_ASYNC_END, a track name argument is
|
||||
* provided, which is the name of the row where this async event should be
|
||||
* recorded. The track name, name, and cookie used to begin an event must be
|
||||
* used to end it.
|
||||
* The cookie here must be unique on the track_name level, not the name level.
|
||||
*/
|
||||
#define ATRACE_ASYNC_FOR_TRACK_BEGIN(track_name, name, cookie) \
|
||||
atrace_async_for_track_begin(ATRACE_TAG, track_name, name, cookie)
|
||||
static inline void atrace_async_for_track_begin(uint64_t tag, const char* track_name,
|
||||
const char* name, int32_t cookie) {
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
atrace_async_for_track_begin_body(track_name, name, cookie);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace the end of an asynchronous event.
|
||||
* This should correspond to a previous ATRACE_ASYNC_FOR_TRACK_BEGIN.
|
||||
*/
|
||||
#define ATRACE_ASYNC_FOR_TRACK_END(track_name, cookie) \
|
||||
atrace_async_for_track_end(ATRACE_TAG, track_name, cookie)
|
||||
static inline void atrace_async_for_track_end(uint64_t tag, const char* track_name,
|
||||
int32_t cookie) {
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
atrace_async_for_track_end_body(track_name, cookie);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace an instantaneous context. name is used to identify the context.
|
||||
*
|
||||
* An "instant" is an event with no defined duration. Visually is displayed like a single marker
|
||||
* in the timeline (rather than a span, in the case of begin/end events).
|
||||
*
|
||||
* By default, instant events are added into a dedicated track that has the same name of the event.
|
||||
* Use atrace_instant_for_track to put different instant events into the same timeline track/row.
|
||||
*/
|
||||
#define ATRACE_INSTANT(name) atrace_instant(ATRACE_TAG, name)
|
||||
static inline void atrace_instant(uint64_t tag, const char* name) {
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
atrace_instant_body(name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace an instantaneous context. name is used to identify the context.
|
||||
* track_name is the name of the row where the event should be recorded.
|
||||
*
|
||||
* An "instant" is an event with no defined duration. Visually is displayed like a single marker
|
||||
* in the timeline (rather than a span, in the case of begin/end events).
|
||||
*/
|
||||
#define ATRACE_INSTANT_FOR_TRACK(trackName, name) \
|
||||
atrace_instant_for_track(ATRACE_TAG, trackName, name)
|
||||
static inline void atrace_instant_for_track(uint64_t tag, const char* track_name,
|
||||
const char* name) {
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
atrace_instant_for_track_body(track_name, name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Traces an integer counter value. name is used to identify the counter.
|
||||
* This can be used to track how a value changes over time.
|
||||
|
|
@ -304,6 +215,7 @@ static inline void atrace_instant_for_track(uint64_t tag, const char* track_name
|
|||
static inline void atrace_int(uint64_t tag, const char* name, int32_t value)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_int_body(const char*, int32_t);
|
||||
atrace_int_body(name, value);
|
||||
}
|
||||
}
|
||||
|
|
@ -316,6 +228,7 @@ static inline void atrace_int(uint64_t tag, const char* name, int32_t value)
|
|||
static inline void atrace_int64(uint64_t tag, const char* name, int64_t value)
|
||||
{
|
||||
if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
|
||||
void atrace_int64_body(const char*, int64_t);
|
||||
atrace_int64_body(name, value);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1491,6 +1491,27 @@ struct drm_amdgpu_info_hw_ip {
|
|||
__u32 ip_discovery_version;
|
||||
};
|
||||
|
||||
/* GFX metadata BO sizes and alignment info (in bytes) */
|
||||
struct drm_amdgpu_info_uq_fw_areas_gfx {
|
||||
/* shadow area size */
|
||||
__u32 shadow_size;
|
||||
/* shadow area base virtual mem alignment */
|
||||
__u32 shadow_alignment;
|
||||
/* context save area size */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual mem alignment */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
/* IP specific metadata related information used in the
|
||||
* subquery AMDGPU_INFO_UQ_FW_AREAS
|
||||
*/
|
||||
struct drm_amdgpu_info_uq_fw_areas {
|
||||
union {
|
||||
struct drm_amdgpu_info_uq_fw_areas_gfx gfx;
|
||||
};
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_num_handles {
|
||||
/** Max handles as supported by firmware for UVD */
|
||||
__u32 uvd_max_handles;
|
||||
|
|
@ -1554,39 +1575,6 @@ struct drm_amdgpu_info_gpuvm_fault {
|
|||
__u32 vmhub;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata_gfx {
|
||||
/* shadow area size for gfx11 */
|
||||
__u32 shadow_size;
|
||||
/* shadow area base virtual alignment for gfx11 */
|
||||
__u32 shadow_alignment;
|
||||
/* context save area size for gfx11 */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual alignment for gfx11 */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata_compute {
|
||||
/* EOP size for gfx11 */
|
||||
__u32 eop_size;
|
||||
/* EOP base virtual alignment for gfx11 */
|
||||
__u32 eop_alignment;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata_sdma {
|
||||
/* context save area size for sdma6 */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual alignment for sdma6 */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_uq_metadata {
|
||||
union {
|
||||
struct drm_amdgpu_info_uq_metadata_gfx gfx;
|
||||
struct drm_amdgpu_info_uq_metadata_compute compute;
|
||||
struct drm_amdgpu_info_uq_metadata_sdma sdma;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Supported GPU families
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@ extern "C" {
|
|||
#define DRM_PANFROST_SET_LABEL_BO 0x09
|
||||
#define DRM_PANFROST_JM_CTX_CREATE 0x0a
|
||||
#define DRM_PANFROST_JM_CTX_DESTROY 0x0b
|
||||
#define DRM_PANFROST_SYNC_BO 0x0c
|
||||
#define DRM_PANFROST_QUERY_BO_INFO 0x0d
|
||||
|
||||
#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
|
||||
#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
|
||||
|
|
@ -37,8 +35,6 @@ extern "C" {
|
|||
#define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo)
|
||||
#define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create)
|
||||
#define DRM_IOCTL_PANFROST_JM_CTX_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_DESTROY, struct drm_panfrost_jm_ctx_destroy)
|
||||
#define DRM_IOCTL_PANFROST_SYNC_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SYNC_BO, struct drm_panfrost_sync_bo)
|
||||
#define DRM_IOCTL_PANFROST_QUERY_BO_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_QUERY_BO_INFO, struct drm_panfrost_query_bo_info)
|
||||
|
||||
/*
|
||||
* Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module
|
||||
|
|
@ -58,46 +54,32 @@ extern "C" {
|
|||
* This asks the kernel to have the GPU execute a render command list.
|
||||
*/
|
||||
struct drm_panfrost_submit {
|
||||
/**
|
||||
* @jc: Address to GPU mapping of job descriptor
|
||||
*/
|
||||
|
||||
/** Address to GPU mapping of job descriptor */
|
||||
__u64 jc;
|
||||
/**
|
||||
* @in_syncs: An optional array of sync objects to wait on
|
||||
* before starting this job.
|
||||
*/
|
||||
|
||||
/** An optional array of sync objects to wait on before starting this job. */
|
||||
__u64 in_syncs;
|
||||
/**
|
||||
* @in_sync_count: Number of sync objects to wait on before
|
||||
* starting this job.
|
||||
*/
|
||||
|
||||
/** Number of sync objects to wait on before starting this job. */
|
||||
__u32 in_sync_count;
|
||||
/**
|
||||
* @out_sync: An optional sync object to place the completion fence in.
|
||||
*/
|
||||
|
||||
/** An optional sync object to place the completion fence in. */
|
||||
__u32 out_sync;
|
||||
/**
|
||||
* @bo_handles: Pointer to a u32 array of the BOs that are
|
||||
* referenced by the job.
|
||||
*/
|
||||
|
||||
/** Pointer to a u32 array of the BOs that are referenced by the job. */
|
||||
__u64 bo_handles;
|
||||
/**
|
||||
* @bo_handle_count: Number of BO handles passed in (size is
|
||||
* that times 4).
|
||||
*/
|
||||
|
||||
/** Number of BO handles passed in (size is that times 4). */
|
||||
__u32 bo_handle_count;
|
||||
/**
|
||||
* @requirements: A combination of PANFROST_JD_REQ_*
|
||||
*/
|
||||
|
||||
/** A combination of PANFROST_JD_REQ_* */
|
||||
__u32 requirements;
|
||||
/**
|
||||
* @jm_ctx_handle: JM context handle. Zero if you want to use the
|
||||
* default context.
|
||||
*/
|
||||
|
||||
/** JM context handle. Zero if you want to use the default context. */
|
||||
__u32 jm_ctx_handle;
|
||||
/**
|
||||
* @pad: Padding field. Must be zero.
|
||||
*/
|
||||
|
||||
/** Padding field. MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
|
@ -110,26 +92,14 @@ struct drm_panfrost_submit {
|
|||
* completed.
|
||||
*/
|
||||
struct drm_panfrost_wait_bo {
|
||||
/**
|
||||
* @handle: Handle for the object to wait for.
|
||||
*/
|
||||
__u32 handle;
|
||||
/**
|
||||
* @pad: Padding, must be zero-filled.
|
||||
*/
|
||||
__u32 pad;
|
||||
/**
|
||||
* @timeout_ns: absolute number of nanoseconds to wait.
|
||||
*/
|
||||
__s64 timeout_ns;
|
||||
__s64 timeout_ns; /* absolute */
|
||||
};
|
||||
|
||||
/* Valid flags to pass to drm_panfrost_create_bo.
|
||||
* PANFROST_BO_WB_MMAP can't be set if PANFROST_BO_HEAP is.
|
||||
*/
|
||||
/* Valid flags to pass to drm_panfrost_create_bo */
|
||||
#define PANFROST_BO_NOEXEC 1
|
||||
#define PANFROST_BO_HEAP 2
|
||||
#define PANFROST_BO_WB_MMAP 4
|
||||
|
||||
/**
|
||||
* struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.
|
||||
|
|
@ -137,26 +107,16 @@ struct drm_panfrost_wait_bo {
|
|||
* The flags argument is a bit mask of PANFROST_BO_* flags.
|
||||
*/
|
||||
struct drm_panfrost_create_bo {
|
||||
/**
|
||||
* @size: size of shmem/BO area to create (bytes)
|
||||
*/
|
||||
__u32 size;
|
||||
/**
|
||||
* @flags: see PANFROST_BO_* flags
|
||||
*/
|
||||
__u32 flags;
|
||||
/**
|
||||
* @handle: Returned GEM handle for the BO.
|
||||
*/
|
||||
/** Returned GEM handle for the BO. */
|
||||
__u32 handle;
|
||||
/**
|
||||
* @pad: Padding, must be zero-filled.
|
||||
*/
|
||||
/* Pad, must be zero-filled. */
|
||||
__u32 pad;
|
||||
/**
|
||||
* @offset: Returned offset for the BO in the GPU address space.
|
||||
* This offset is private to the DRM fd and is valid for the
|
||||
* lifetime of the GEM handle.
|
||||
* Returned offset for the BO in the GPU address space. This offset
|
||||
* is private to the DRM fd and is valid for the lifetime of the GEM
|
||||
* handle.
|
||||
*
|
||||
* This offset value will always be nonzero, since various HW
|
||||
* units treat 0 specially.
|
||||
|
|
@ -176,17 +136,10 @@ struct drm_panfrost_create_bo {
|
|||
* used in a future extension.
|
||||
*/
|
||||
struct drm_panfrost_mmap_bo {
|
||||
/**
|
||||
* @handle: Handle for the object being mapped.
|
||||
*/
|
||||
/** Handle for the object being mapped. */
|
||||
__u32 handle;
|
||||
/**
|
||||
* @flags: currently not used (should be zero)
|
||||
*/
|
||||
__u32 flags;
|
||||
/**
|
||||
* @offset: offset into the drm node to use for subsequent mmap call.
|
||||
*/
|
||||
/** offset into the drm node to use for subsequent mmap call. */
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
|
|
@ -235,13 +188,6 @@ enum drm_panfrost_param {
|
|||
DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP,
|
||||
DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY,
|
||||
DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES,
|
||||
DRM_PANFROST_PARAM_SELECTED_COHERENCY,
|
||||
};
|
||||
|
||||
enum drm_panfrost_gpu_coherency {
|
||||
DRM_PANFROST_GPU_COHERENCY_ACE_LITE = 0,
|
||||
DRM_PANFROST_GPU_COHERENCY_ACE = 1,
|
||||
DRM_PANFROST_GPU_COHERENCY_NONE = 31,
|
||||
};
|
||||
|
||||
struct drm_panfrost_get_param {
|
||||
|
|
@ -250,7 +196,7 @@ struct drm_panfrost_get_param {
|
|||
__u64 value;
|
||||
};
|
||||
|
||||
/*
|
||||
/**
|
||||
* Returns the offset for the BO in the GPU address space for this DRM fd.
|
||||
* This is the same value returned by drm_panfrost_create_bo, if that was called
|
||||
* from this DRM fd.
|
||||
|
|
@ -298,14 +244,12 @@ struct drm_panfrost_madvise {
|
|||
* struct drm_panfrost_set_label_bo - ioctl argument for labelling Panfrost BOs.
|
||||
*/
|
||||
struct drm_panfrost_set_label_bo {
|
||||
/**
|
||||
* @handle: Handle of the buffer object to label.
|
||||
*/
|
||||
/** @handle: Handle of the buffer object to label. */
|
||||
__u32 handle;
|
||||
/**
|
||||
* @pad: Must be zero.
|
||||
*/
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/**
|
||||
* @label: User pointer to a NUL-terminated string
|
||||
*
|
||||
|
|
@ -315,66 +259,6 @@ struct drm_panfrost_set_label_bo {
|
|||
__u64 label;
|
||||
};
|
||||
|
||||
/* Valid flags to pass to drm_panfrost_bo_sync_op */
|
||||
#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH 0
|
||||
#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE 1
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_flush_map_op - BO map sync op
|
||||
*/
|
||||
struct drm_panfrost_bo_sync_op {
|
||||
/** @handle: Handle of the buffer object to sync. */
|
||||
__u32 handle;
|
||||
|
||||
/** @type: Type of sync operation. */
|
||||
__u32 type;
|
||||
|
||||
/**
|
||||
* @offset: Offset into the BO at which the sync range starts.
|
||||
*
|
||||
* This will be rounded down to the nearest cache line as needed.
|
||||
*/
|
||||
__u32 offset;
|
||||
|
||||
/**
|
||||
* @size: Size of the range to sync
|
||||
*
|
||||
* @size + @offset will be rounded up to the nearest cache line as
|
||||
* needed.
|
||||
*/
|
||||
__u32 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panfrost_sync_bo - ioctl argument for syncing BO maps
|
||||
*/
|
||||
struct drm_panfrost_sync_bo {
|
||||
/** Array of struct drm_panfrost_bo_sync_op */
|
||||
__u64 ops;
|
||||
|
||||
/** Number of BO sync ops */
|
||||
__u32 op_count;
|
||||
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/** BO comes from a different subsystem. */
|
||||
#define DRM_PANFROST_BO_IS_IMPORTED (1 << 0)
|
||||
|
||||
struct drm_panfrost_query_bo_info {
|
||||
/** Handle of the object being queried. */
|
||||
__u32 handle;
|
||||
|
||||
/** Extra flags that are not coming from the BO_CREATE ioctl(). */
|
||||
__u32 extra_flags;
|
||||
|
||||
/** Flags passed at creation time. */
|
||||
__u32 create_flags;
|
||||
|
||||
/** Will be zero on return. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/* Definitions for coredump decoding in user space */
|
||||
#define PANFROSTDUMP_MAJOR 1
|
||||
#define PANFROSTDUMP_MINOR 0
|
||||
|
|
@ -446,13 +330,10 @@ enum drm_panfrost_jm_ctx_priority {
|
|||
};
|
||||
|
||||
struct drm_panfrost_jm_ctx_create {
|
||||
/**
|
||||
* @handle: Handle of the created JM context
|
||||
*/
|
||||
/** @handle: Handle of the created JM context */
|
||||
__u32 handle;
|
||||
/**
|
||||
* @priority: Context priority (see enum drm_panfrost_jm_ctx_priority).
|
||||
*/
|
||||
|
||||
/** @priority: Context priority (see enum drm_panfrost_jm_ctx_priority). */
|
||||
__u32 priority;
|
||||
};
|
||||
|
||||
|
|
@ -463,9 +344,8 @@ struct drm_panfrost_jm_ctx_destroy {
|
|||
* Must be a valid context handle returned by DRM_IOCTL_PANTHOR_JM_CTX_CREATE.
|
||||
*/
|
||||
__u32 handle;
|
||||
/**
|
||||
* @pad: Padding field, must be zero.
|
||||
*/
|
||||
|
||||
/** @pad: Padding field, MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -144,16 +144,6 @@ enum drm_panthor_ioctl_id {
|
|||
* pgoff_t size.
|
||||
*/
|
||||
DRM_PANTHOR_SET_USER_MMIO_OFFSET,
|
||||
|
||||
/** @DRM_PANTHOR_BO_SYNC: Sync BO data to/from the device */
|
||||
DRM_PANTHOR_BO_SYNC,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_QUERY_INFO: Query information about a BO.
|
||||
*
|
||||
* This is useful for imported BOs.
|
||||
*/
|
||||
DRM_PANTHOR_BO_QUERY_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -255,26 +245,6 @@ enum drm_panthor_dev_query_type {
|
|||
DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_gpu_coherency: Type of GPU coherency
|
||||
*/
|
||||
enum drm_panthor_gpu_coherency {
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_ACE_LITE: ACE Lite coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_ACE_LITE = 0,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_ACE: ACE coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_ACE = 1,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_NONE: No coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_NONE = 31,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_gpu_info - GPU information
|
||||
*
|
||||
|
|
@ -331,16 +301,7 @@ struct drm_panthor_gpu_info {
|
|||
*/
|
||||
__u32 thread_max_barrier_size;
|
||||
|
||||
/**
|
||||
* @coherency_features: Coherency features.
|
||||
*
|
||||
* Combination of drm_panthor_gpu_coherency flags.
|
||||
*
|
||||
* Note that this is just what the coherency protocols supported by the
|
||||
* GPU, but the actual coherency in place depends on the SoC
|
||||
* integration and is reflected by
|
||||
* drm_panthor_gpu_info::selected_coherency.
|
||||
*/
|
||||
/** @coherency_features: Coherency features. */
|
||||
__u32 coherency_features;
|
||||
|
||||
/** @texture_features: Texture features. */
|
||||
|
|
@ -349,12 +310,8 @@ struct drm_panthor_gpu_info {
|
|||
/** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
|
||||
__u32 as_present;
|
||||
|
||||
/**
|
||||
* @select_coherency: Coherency selected for this device.
|
||||
*
|
||||
* One of drm_panthor_gpu_coherency.
|
||||
*/
|
||||
__u32 selected_coherency;
|
||||
/** @pad0: MBZ. */
|
||||
__u32 pad0;
|
||||
|
||||
/** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
|
||||
__u64 shader_present;
|
||||
|
|
@ -370,9 +327,6 @@ struct drm_panthor_gpu_info {
|
|||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @gpu_features: Bitmask describing supported GPU-wide features */
|
||||
__u64 gpu_features;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -681,15 +635,6 @@ struct drm_panthor_vm_get_state {
|
|||
enum drm_panthor_bo_flags {
|
||||
/** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
|
||||
DRM_PANTHOR_BO_NO_MMAP = (1 << 0),
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_WB_MMAP: Force "Write-Back Cacheable" CPU mapping.
|
||||
*
|
||||
* CPU map the buffer object in userspace by forcing the "Write-Back
|
||||
* Cacheable" cacheability attribute. The mapping otherwise uses the
|
||||
* "Non-Cacheable" attribute if the GPU is not IO coherent.
|
||||
*/
|
||||
DRM_PANTHOR_BO_WB_MMAP = (1 << 1),
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1092,101 +1037,6 @@ struct drm_panthor_set_user_mmio_offset {
|
|||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_bo_sync_op_type - BO sync type
|
||||
*/
|
||||
enum drm_panthor_bo_sync_op_type {
|
||||
/** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH: Flush CPU caches. */
|
||||
DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH = 0,
|
||||
|
||||
/** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE: Flush and invalidate CPU caches. */
|
||||
DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_sync_op - BO map sync op
|
||||
*/
|
||||
struct drm_panthor_bo_sync_op {
|
||||
/** @handle: Handle of the buffer object to sync. */
|
||||
__u32 handle;
|
||||
|
||||
/** @type: Type of operation. */
|
||||
__u32 type;
|
||||
|
||||
/**
|
||||
* @offset: Offset into the BO at which the sync range starts.
|
||||
*
|
||||
* This will be rounded down to the nearest cache line as needed.
|
||||
*/
|
||||
__u64 offset;
|
||||
|
||||
/**
|
||||
* @size: Size of the range to sync
|
||||
*
|
||||
* @size + @offset will be rounded up to the nearest cache line as
|
||||
* needed.
|
||||
*/
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_sync - BO map sync request
|
||||
*/
|
||||
struct drm_panthor_bo_sync {
|
||||
/**
|
||||
* @ops: Array of struct drm_panthor_bo_sync_op sync operations.
|
||||
*/
|
||||
struct drm_panthor_obj_array ops;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_bo_extra_flags - Set of flags returned on a BO_QUERY_INFO request
|
||||
*
|
||||
* Those are flags reflecting BO properties that are not directly coming from the flags
|
||||
* passed are creation time, or information on BOs that were imported from other drivers.
|
||||
*/
|
||||
enum drm_panthor_bo_extra_flags {
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_IS_IMPORTED: BO has been imported from an external driver.
|
||||
*
|
||||
* Note that imported dma-buf handles are not flagged as imported if they
|
||||
* where exported by panthor. Only buffers that are coming from other drivers
|
||||
* (dma heaps, other GPUs, display controllers, V4L, ...).
|
||||
*
|
||||
* It's also important to note that all imported BOs are mapped cached and can't
|
||||
* be considered IO-coherent even if the GPU is. This means they require explicit
|
||||
* syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache
|
||||
* maintenance is not allowed in that case, because extra operations might be
|
||||
* needed to make changes visible to the CPU/device, like buffer migration when the
|
||||
* exporter is a GPU with its own VRAM).
|
||||
*/
|
||||
DRM_PANTHOR_BO_IS_IMPORTED = (1 << 0),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_query_info - Query BO info
|
||||
*/
|
||||
struct drm_panthor_bo_query_info {
|
||||
/** @handle: Handle of the buffer object to query flags on. */
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @extra_flags: Combination of enum drm_panthor_bo_extra_flags flags.
|
||||
*/
|
||||
__u32 extra_flags;
|
||||
|
||||
/**
|
||||
* @create_flags: Flags passed at creation time.
|
||||
*
|
||||
* Combination of enum drm_panthor_bo_flags flags.
|
||||
* Will be zero if the buffer comes from a different driver.
|
||||
*/
|
||||
__u32 create_flags;
|
||||
|
||||
/** @pad: Will be zero on return. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
|
||||
* @__access: Access type. Must be R, W or RW.
|
||||
|
|
@ -1233,10 +1083,6 @@ enum {
|
|||
DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label),
|
||||
DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET =
|
||||
DRM_IOCTL_PANTHOR(WR, SET_USER_MMIO_OFFSET, set_user_mmio_offset),
|
||||
DRM_IOCTL_PANTHOR_BO_SYNC =
|
||||
DRM_IOCTL_PANTHOR(WR, BO_SYNC, bo_sync),
|
||||
DRM_IOCTL_PANTHOR_BO_QUERY_INFO =
|
||||
DRM_IOCTL_PANTHOR(WR, BO_QUERY_INFO, bo_query_info),
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -303,10 +303,3 @@ CHIPSET(0xb0b0, ptl, "PTL", "Intel(R) Graphics")
|
|||
|
||||
CHIPSET(0xfd80, wcl, "WCL", "Intel(R) Graphics")
|
||||
CHIPSET(0xfd81, wcl, "WCL", "Intel(R) Graphics")
|
||||
|
||||
CHIPSET(0xd740, nvl_s_hx_ul, "NVL-S", "Intel(R) Graphics", FORCE_PROBE)
|
||||
CHIPSET(0xd741, nvl_u_h, "NVL-U", "Intel(R) Graphics", FORCE_PROBE)
|
||||
CHIPSET(0xd742, nvl_u_h, "NVL-H", "Intel(R) Graphics", FORCE_PROBE)
|
||||
CHIPSET(0xd743, nvl_s_hx_ul, "NVL-HX", "Intel(R) Graphics", FORCE_PROBE)
|
||||
CHIPSET(0xd744, nvl_s_hx_ul, "NVL-UL", "Intel(R) Graphics", FORCE_PROBE)
|
||||
CHIPSET(0xd745, nvl_s_hx_ul, "NVL-HX", "Intel(R) Graphics", FORCE_PROBE)
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ typedef enum StdVideoAV1ColorPrimaries {
|
|||
STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12,
|
||||
STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22,
|
||||
STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF,
|
||||
// STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED is a legacy alias
|
||||
// STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED is a deprecated alias
|
||||
STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED,
|
||||
STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoAV1ColorPrimaries;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -19,75 +19,6 @@ extern "C" {
|
|||
|
||||
|
||||
|
||||
// VK_OHOS_external_memory is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_OHOS_external_memory 1
|
||||
struct OH_NativeBuffer;
|
||||
#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1
|
||||
#define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory"
|
||||
typedef struct VkNativeBufferUsageOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint64_t OHOSNativeBufferUsage;
|
||||
} VkNativeBufferUsageOHOS;
|
||||
|
||||
typedef struct VkNativeBufferPropertiesOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkDeviceSize allocationSize;
|
||||
uint32_t memoryTypeBits;
|
||||
} VkNativeBufferPropertiesOHOS;
|
||||
|
||||
typedef struct VkNativeBufferFormatPropertiesOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkFormat format;
|
||||
uint64_t externalFormat;
|
||||
VkFormatFeatureFlags formatFeatures;
|
||||
VkComponentMapping samplerYcbcrConversionComponents;
|
||||
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
||||
VkSamplerYcbcrRange suggestedYcbcrRange;
|
||||
VkChromaLocation suggestedXChromaOffset;
|
||||
VkChromaLocation suggestedYChromaOffset;
|
||||
} VkNativeBufferFormatPropertiesOHOS;
|
||||
|
||||
typedef struct VkImportNativeBufferInfoOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
struct OH_NativeBuffer* buffer;
|
||||
} VkImportNativeBufferInfoOHOS;
|
||||
|
||||
typedef struct VkMemoryGetNativeBufferInfoOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDeviceMemory memory;
|
||||
} VkMemoryGetNativeBufferInfoOHOS;
|
||||
|
||||
typedef struct VkExternalFormatOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint64_t externalFormat;
|
||||
} VkExternalFormatOHOS;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
|
||||
VkDevice device,
|
||||
const struct OH_NativeBuffer* buffer,
|
||||
VkNativeBufferPropertiesOHOS* pProperties);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
|
||||
VkDevice device,
|
||||
const VkMemoryGetNativeBufferInfoOHOS* pInfo,
|
||||
struct OH_NativeBuffer** pBuffer);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// VK_OHOS_surface is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_OHOS_surface 1
|
||||
typedef struct NativeWindow OHNativeWindow;
|
||||
|
|
@ -113,68 +44,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(
|
|||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// VK_OHOS_native_buffer is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_OHOS_native_buffer 1
|
||||
struct OHBufferHandle;
|
||||
#define VK_OHOS_NATIVE_BUFFER_SPEC_VERSION 1
|
||||
#define VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME "VK_OHOS_native_buffer"
|
||||
|
||||
typedef enum VkSwapchainImageUsageFlagBitsOHOS {
|
||||
VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS = 0x00000001,
|
||||
VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM_OHOS = 0x7FFFFFFF
|
||||
} VkSwapchainImageUsageFlagBitsOHOS;
|
||||
typedef VkFlags VkSwapchainImageUsageFlagsOHOS;
|
||||
typedef struct VkNativeBufferOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
struct OHBufferHandle* handle;
|
||||
} VkNativeBufferOHOS;
|
||||
|
||||
typedef struct VkSwapchainImageCreateInfoOHOS {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSwapchainImageUsageFlagsOHOS usage;
|
||||
} VkSwapchainImageCreateInfoOHOS;
|
||||
|
||||
typedef struct VkPhysicalDevicePresentationPropertiesOHOS {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 sharedImage;
|
||||
} VkPhysicalDevicePresentationPropertiesOHOS;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageOHOS)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageOHOS)(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageOHOS)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(
|
||||
VkDevice device,
|
||||
VkFormat format,
|
||||
VkImageUsageFlags imageUsage,
|
||||
uint64_t* grallocUsage);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(
|
||||
VkDevice device,
|
||||
VkImage image,
|
||||
int32_t nativeFenceFd,
|
||||
VkSemaphore semaphore,
|
||||
VkFence fence);
|
||||
#endif
|
||||
|
||||
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(
|
||||
VkQueue queue,
|
||||
uint32_t waitSemaphoreCount,
|
||||
const VkSemaphore* pWaitSemaphores,
|
||||
VkImage image,
|
||||
int32_t* pNativeFenceFd);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
95
meson.build
95
meson.build
|
|
@ -42,7 +42,7 @@ if get_option('layout') != 'mirror'
|
|||
endif
|
||||
|
||||
with_llvm = get_option('llvm')
|
||||
amd_with_llvm = with_llvm.allowed() and get_option('amd-use-llvm')
|
||||
amd_with_llvm = get_option('amd-use-llvm')
|
||||
|
||||
with_mesa_debug = get_option('buildtype') == 'debug'
|
||||
|
||||
|
|
@ -156,13 +156,7 @@ if gallium_drivers.contains('auto')
|
|||
'r300', 'r600', 'radeonsi', 'nouveau', 'virgl', 'svga', 'llvmpipe', 'softpipe',
|
||||
'iris', 'crocus', 'i915', 'zink'
|
||||
]
|
||||
elif ['aarch64'].contains(host_machine.cpu_family())
|
||||
gallium_drivers = [
|
||||
'v3d', 'vc4', 'freedreno', 'etnaviv', 'nouveau', 'svga',
|
||||
'tegra', 'virgl', 'lima', 'panfrost', 'llvmpipe', 'softpipe', 'iris',
|
||||
'zink', 'asahi'
|
||||
]
|
||||
elif ['arm'].contains(host_machine.cpu_family())
|
||||
elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
|
||||
gallium_drivers = [
|
||||
'v3d', 'vc4', 'freedreno', 'etnaviv', 'nouveau', 'svga',
|
||||
'tegra', 'virgl', 'lima', 'panfrost', 'llvmpipe', 'softpipe', 'iris',
|
||||
|
|
@ -224,11 +218,10 @@ with_gallium_ethosu = gallium_drivers.contains('ethosu')
|
|||
foreach gallium_driver : gallium_drivers
|
||||
pre_args += '-DHAVE_@0@'.format(gallium_driver.to_upper())
|
||||
endforeach
|
||||
draw_with_llvm = with_llvm.allowed() and get_option('draw-use-llvm')
|
||||
with_llvm = with_llvm \
|
||||
.enable_if(with_gallium_i915, error_message : 'i915 Gallium driver requires LLVM for vertex shaders') \
|
||||
.enable_if(with_gallium_llvmpipe, error_message : 'LLVMPipe Gallium driver requires LLVM') \
|
||||
.enable_if(with_gallium_r300 and draw_with_llvm, error_message : 'R300 Gallium driver requires LLVM for vertex shaders on IGP parts') \
|
||||
.enable_if(with_gallium_r300, error_message : 'R300 Gallium driver requires LLVM for vertex shaders') \
|
||||
.enable_if(with_gallium_r600 and amd_with_llvm, error_message : 'R600 Gallium driver configured to require LLVM') \
|
||||
.enable_if(with_gallium_radeonsi and amd_with_llvm, error_message : 'RadeonSI Gallium driver configured to require LLVM')
|
||||
|
||||
|
|
@ -256,9 +249,7 @@ if _vulkan_drivers.contains('auto')
|
|||
if system_has_kms_drm
|
||||
if host_machine.cpu_family().startswith('x86')
|
||||
_vulkan_drivers = ['amd', 'intel', 'intel_hasvk', 'nouveau', 'swrast']
|
||||
elif ['aarch64'].contains(host_machine.cpu_family())
|
||||
_vulkan_drivers = ['swrast', 'intel', 'panfrost', 'freedreno', 'asahi']
|
||||
elif ['arm'].contains(host_machine.cpu_family())
|
||||
elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
|
||||
_vulkan_drivers = ['swrast', 'intel', 'panfrost', 'freedreno']
|
||||
elif ['mips', 'mips64', 'ppc', 'ppc64', 'riscv32', 'riscv64'].contains(host_machine.cpu_family())
|
||||
_vulkan_drivers = ['amd', 'swrast']
|
||||
|
|
@ -280,7 +271,7 @@ elif _vulkan_drivers.contains('all')
|
|||
_vulkan_drivers = ['amd', 'intel', 'intel_hasvk', 'swrast',
|
||||
'freedreno', 'panfrost', 'virtio', 'broadcom',
|
||||
'imagination', 'microsoft-experimental',
|
||||
'nouveau', 'asahi', 'gfxstream', 'kosmickrisp']
|
||||
'nouveau', 'asahi', 'gfxstream']
|
||||
endif
|
||||
|
||||
with_intel_vk = _vulkan_drivers.contains('intel')
|
||||
|
|
@ -297,7 +288,6 @@ with_microsoft_vk = _vulkan_drivers.contains('microsoft-experimental')
|
|||
with_nouveau_vk = _vulkan_drivers.contains('nouveau')
|
||||
with_asahi_vk = _vulkan_drivers.contains('asahi')
|
||||
with_gfxstream_vk = _vulkan_drivers.contains('gfxstream')
|
||||
with_kosmickrisp_vk = _vulkan_drivers.contains('kosmickrisp')
|
||||
with_any_vk = _vulkan_drivers.length() != 0
|
||||
|
||||
with_llvm = with_llvm \
|
||||
|
|
@ -376,15 +366,9 @@ endif
|
|||
if with_aco_tests and not with_amd_vk
|
||||
error('ACO tests require Radv')
|
||||
endif
|
||||
if with_aco_tests and not with_tools.contains('drm-shim')
|
||||
error('ACO tests require AMDGPU drm-shim')
|
||||
endif
|
||||
if with_radv_tests and not with_amd_vk
|
||||
error('RADV tests require RADV')
|
||||
endif
|
||||
if with_radv_tests and not with_tools.contains('drm-shim')
|
||||
error('RADV tests require AMDGPU drm-shim')
|
||||
endif
|
||||
|
||||
with_microsoft_clc = get_option('microsoft-clc').enabled()
|
||||
with_spirv_to_dxil = get_option('spirv-to-dxil')
|
||||
|
|
@ -690,26 +674,17 @@ _va_drivers = [
|
|||
with_gallium_virgl,
|
||||
]
|
||||
|
||||
allow_fallback_for_libva = get_option('allow-fallback-for').contains('libva')
|
||||
fallback_libva_options = []
|
||||
_va = get_option('gallium-va') \
|
||||
.require(_va_drivers.contains(true),
|
||||
error_message : 'VA state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau, d3d12 (with option gallium-d3d12-video), virgl.')
|
||||
_dep_va_name = host_machine.system() == 'windows' ? 'libva-win32' : 'libva'
|
||||
dep_va = dependency(
|
||||
_dep_va_name, version : '>= 1.8.0',
|
||||
required : _va,
|
||||
allow_fallback: allow_fallback_for_libva,
|
||||
default_options: fallback_libva_options
|
||||
)
|
||||
dep_va = dependency(_dep_va_name, version : '>= 1.8.0', required : _va)
|
||||
if dep_va.found()
|
||||
dep_va_headers = dep_va.partial_dependency(compile_args : true, includes : true)
|
||||
dep_va_headers = dep_va.partial_dependency(compile_args : true)
|
||||
if cc.has_header_symbol('va/va.h', 'VASurfaceAttribDRMFormatModifiers',
|
||||
dependencies: dep_va_headers)
|
||||
pre_args += '-DHAVE_VA_SURFACE_ATTRIB_DRM_FORMAT_MODIFIERS'
|
||||
endif
|
||||
libva_version = cc.get_define('VA_VERSION', prefix: '#include "va/va_version.h"',
|
||||
dependencies: dep_va_headers).split('.')
|
||||
endif
|
||||
with_gallium_va = dep_va.found()
|
||||
|
||||
|
|
@ -788,7 +763,9 @@ if with_gallium_rusticl or with_nouveau_vk or with_tools.contains('etnaviv') or
|
|||
rustc = meson.get_compiler('rust')
|
||||
rust = import('rust')
|
||||
|
||||
# Keep this in sync with the `msrv` in clippy.toml
|
||||
# Keep this in sync with the MINIMUM_SUPPORTED_RUST_VERSION in
|
||||
# .gitlab-ci/container/build-rust.sh and the `rustup default` line in
|
||||
# .gitlab-ci/meson/build.sh
|
||||
if rustc.version().version_compare('< 1.82')
|
||||
error('Mesa requires Rust 1.82.0 or newer')
|
||||
endif
|
||||
|
|
@ -820,19 +797,6 @@ if with_gallium_rusticl or with_nouveau_vk or with_tools.contains('etnaviv') or
|
|||
bindgen_output_args += ['--raw-line', '#![allow(unnecessary_transmutes)]']
|
||||
endif
|
||||
|
||||
rust_global_args = [
|
||||
# We want to be able to write `else { if {} }` when it makes more sense than
|
||||
# collapsing it into `else if {}`.
|
||||
'-Aclippy::collapsible_else_if',
|
||||
|
||||
# "Needless lifetimes" might be needless but they're harmless and we
|
||||
# prefer being explicit, so allow them.
|
||||
'-Aclippy::needless_lifetimes',
|
||||
|
||||
# Being explicit has value, allow it.
|
||||
'-Aclippy::question_mark',
|
||||
]
|
||||
|
||||
rust_2024_lint_args = [
|
||||
'-Dboxed_slice_into_iter',
|
||||
'-Ddeprecated_safe_2024',
|
||||
|
|
@ -865,7 +829,6 @@ with_driver_using_cl = [
|
|||
with_gallium_asahi, with_asahi_vk, with_tools.contains('asahi'),
|
||||
with_gallium_panfrost, with_panfrost_vk,
|
||||
with_nouveau_vk, with_imagination_vk,
|
||||
with_kosmickrisp_vk,
|
||||
].contains(true)
|
||||
|
||||
if get_option('mesa-clc') == 'system'
|
||||
|
|
@ -882,10 +845,6 @@ endif
|
|||
with_llvm = with_llvm \
|
||||
.enable_if(with_clc, error_message : 'CLC requires LLVM')
|
||||
|
||||
with_poly = [
|
||||
with_gallium_asahi, with_asahi_vk, with_tools.contains('asahi'),
|
||||
].contains(true)
|
||||
|
||||
dep_clc = null_dep
|
||||
if with_clc
|
||||
dep_clc = dependency('libclc')
|
||||
|
|
@ -1180,7 +1139,6 @@ if cc.get_argument_syntax() == 'msvc'
|
|||
'/we4024', # Error when passing different type of parameter
|
||||
'/we4189', # 'identifier' : local variable is initialized but not referenced
|
||||
'/Zc:__cplusplus', #Set __cplusplus macro to match the /std:c++<version> on the command line
|
||||
'/Zc:enumTypes', # Enables C++ conforming enum underlying type and enumerator type deduction
|
||||
'/Zc:preprocessor', # Use the standards-conforming preprocessor
|
||||
]
|
||||
c_args += cc.get_supported_arguments(_trial)
|
||||
|
|
@ -1269,12 +1227,7 @@ else
|
|||
# Check for C and C++ arguments for MSVC compatibility. These are only used
|
||||
# in parts of the mesa code base that need to compile with MSVC, mainly
|
||||
# common code
|
||||
_trial_msvc = [
|
||||
'-Werror=pointer-arith',
|
||||
'-Werror=vla',
|
||||
'-Werror=gnu-empty-initializer',
|
||||
'-Wgnu-pointer-arith',
|
||||
]
|
||||
_trial_msvc = ['-Werror=pointer-arith', '-Werror=vla', '-Werror=gnu-empty-initializer']
|
||||
c_msvc_compat_args += cc.get_supported_arguments(_trial_msvc)
|
||||
cpp_msvc_compat_args += cpp.get_supported_arguments(_trial_msvc)
|
||||
endif
|
||||
|
|
@ -1511,10 +1464,7 @@ endif
|
|||
if cc.has_header_symbol('errno.h', 'program_invocation_name',
|
||||
args : '-D_GNU_SOURCE')
|
||||
pre_args += '-DHAVE_PROGRAM_INVOCATION_NAME'
|
||||
elif with_tools.contains('intel') and not with_platform_android
|
||||
# Intel tools is supported on Android where the program name is from
|
||||
# `getprogname()` without `program_invocation_name` in glibc.
|
||||
# See `src/util/u_process.c` for more details.
|
||||
elif with_tools.contains('intel')
|
||||
error('Intel tools require the program_invocation_name variable')
|
||||
endif
|
||||
|
||||
|
|
@ -1661,7 +1611,7 @@ if dep_thread.found()
|
|||
endif
|
||||
|
||||
with_expat = get_option('expat') \
|
||||
.disable_auto_if(with_platform_windows) \
|
||||
.disable_auto_if(with_platform_android or with_platform_windows) \
|
||||
.enable_if(with_intel_tools, error_message : 'Intel tools require expat')
|
||||
|
||||
if host_machine.system() == 'darwin'
|
||||
|
|
@ -1794,6 +1744,7 @@ if with_clc
|
|||
# but we don't know what LLVM version we are using yet
|
||||
llvm_optional_modules += ['all-targets', 'windowsdriver', 'frontendhlsl', 'frontenddriver']
|
||||
endif
|
||||
draw_with_llvm = get_option('draw-use-llvm')
|
||||
if draw_with_llvm
|
||||
llvm_modules += 'native'
|
||||
# lto is needded with LLVM>=15, but we don't know what LLVM verrsion we are using yet
|
||||
|
|
@ -1837,12 +1788,8 @@ if dep_llvm.found()
|
|||
error('Lavapipe and llvmpipe require LLVM draw support.')
|
||||
endif
|
||||
|
||||
if with_gallium_i915 and not draw_with_llvm
|
||||
error('i915 requires LLVM draw support for vertex shaders.')
|
||||
endif
|
||||
|
||||
if with_gallium_r300 and not draw_with_llvm and host_machine.cpu_family() == 'x86'
|
||||
error('r300 requires LLVM draw support for vertex shaders.')
|
||||
if (with_gallium_i915 or with_gallium_r300) and not draw_with_llvm
|
||||
error('i915 and R300 require LLVM draw support for vertex shaders.')
|
||||
endif
|
||||
|
||||
if host_machine.system() != 'windows'
|
||||
|
|
@ -1948,7 +1895,6 @@ dep_lua = dependency('lua54', 'lua5.4', 'lua-5.4',
|
|||
'lua53', 'lua5.3', 'lua-5.3',
|
||||
'lua', required: false,
|
||||
allow_fallback: with_tools.contains('freedreno'),
|
||||
disabler : true,
|
||||
version: '>=5.3')
|
||||
|
||||
# Be explicit about only using this lib on Windows, to avoid picking
|
||||
|
|
@ -2245,7 +2191,7 @@ endif
|
|||
|
||||
with_sysprof = get_option('sysprof')
|
||||
if with_sysprof
|
||||
dep_sysprof = dependency('sysprof-capture-4', version: '>= 49.0')
|
||||
dep_sysprof = dependency('sysprof-capture-4', version: '>= 4.49.0')
|
||||
pre_args += '-DHAVE_SYSPROF'
|
||||
endif
|
||||
|
||||
|
|
@ -2330,13 +2276,6 @@ else
|
|||
vulkan_icd_lib_path = get_option('prefix') / get_option('libdir')
|
||||
endif
|
||||
|
||||
vulkan_manifest_per_architecture = get_option('vulkan-manifest-per-architecture')
|
||||
|
||||
if vulkan_manifest_per_architecture
|
||||
vulkan_manifest_suffix = '@0@.json'.format(host_machine.cpu())
|
||||
else
|
||||
vulkan_manifest_suffix = 'json'
|
||||
endif
|
||||
|
||||
subdir('include')
|
||||
subdir('bin')
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ option(
|
|||
choices : ['auto', 'amd', 'broadcom', 'freedreno', 'intel', 'intel_hasvk',
|
||||
'panfrost', 'swrast', 'virtio', 'imagination',
|
||||
'microsoft-experimental', 'nouveau', 'asahi', 'gfxstream',
|
||||
'kosmickrisp', 'all'],
|
||||
'all'],
|
||||
description : 'List of vulkan drivers to build. If this is set to auto ' +
|
||||
'all drivers applicable to the target OS/architecture ' +
|
||||
'will be built'
|
||||
|
|
@ -286,19 +286,6 @@ option(
|
|||
'Default: $datadir/vulkan/icd.d'
|
||||
)
|
||||
|
||||
option(
|
||||
'vulkan-manifest-per-architecture',
|
||||
type : 'boolean',
|
||||
value : true,
|
||||
description : 'If true, Vulkan ICDs have a separate JSON manifest per ' +
|
||||
'architecture, for example lvp_icd.x86_64.json. ' +
|
||||
'(Recommended for non-default ${prefix}.) ' +
|
||||
'If false, all architectures share a single JSON manifest, ' +
|
||||
'for example lvp_icd.json, referencing the library by its ' +
|
||||
'basename. ' +
|
||||
'(Recommended for Unix OS distros installing into /usr.)'
|
||||
)
|
||||
|
||||
option(
|
||||
'moltenvk-dir',
|
||||
type : 'string',
|
||||
|
|
@ -846,7 +833,7 @@ option(
|
|||
type : 'array',
|
||||
value : ['perfetto'],
|
||||
choices : [
|
||||
'libdrm', 'libva', 'perfetto',
|
||||
'libdrm', 'perfetto',
|
||||
],
|
||||
description : 'Allows the fallback mechanism if the dependency is not available on the system, or too old.'
|
||||
)
|
||||
|
|
|
|||
|
|
@ -103,8 +103,6 @@ ForEachMacros:
|
|||
- foreach_list_typed_safe
|
||||
- foreach_two_lists
|
||||
|
||||
- U_SPARSE_BITSET_FOREACH_SET
|
||||
|
||||
# nir
|
||||
- nir_foreach_function_temp_variable
|
||||
- nir_foreach_function_temp_variable_safe
|
||||
|
|
@ -239,9 +237,7 @@ ForEachMacros:
|
|||
- agx_foreach_reg_dest
|
||||
- agx_foreach_successor
|
||||
- foreach_next_use
|
||||
|
||||
# poly
|
||||
- poly_foreach_xfb
|
||||
- libagx_foreach_xfb
|
||||
|
||||
# radv
|
||||
- PHASE
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@
|
|||
#define FAMILY_NV 0x8F //# 143 / Navi: 10
|
||||
#define FAMILY_VGH 0x90 //# 144 / Van Gogh
|
||||
#define FAMILY_NV3 0x91 //# 145 / Navi: 3x
|
||||
#define FAMILY_STX 0x96
|
||||
#define FAMILY_GFX1150 0x96
|
||||
#define FAMILY_PHX 0x94 //# 148 / Phoenix
|
||||
#define FAMILY_RMB 0x92 //# 146 / Rembrandt
|
||||
#define FAMILY_RPL 0x95 //# 149 / Raphael
|
||||
#define FAMILY_MDN 0x97 //# 151 / Mendocino
|
||||
#define FAMILY_NV4 0x98
|
||||
#define FAMILY_GFX12 0x98
|
||||
|
||||
// AMDGPU_FAMILY_IS(familyId, familyName)
|
||||
#define FAMILY_IS(f, fn) (f == FAMILY_##fn)
|
||||
|
|
@ -101,9 +101,9 @@
|
|||
#define AMDGPU_NAVI31_RANGE 0x01, 0x10 //# 01 <= x < 16
|
||||
#define AMDGPU_NAVI32_RANGE 0x20, 0xFF //# 32 <= x < 255
|
||||
#define AMDGPU_NAVI33_RANGE 0x10, 0x20 //# 16 <= x < 32
|
||||
#define AMDGPU_STRIX1_RANGE 0x01, 0x40 //# 1 <= x < 64
|
||||
#define AMDGPU_STRIX_HALO_RANGE 0xC0, 0xFF //# 192 <= x < 255
|
||||
#define AMDGPU_KRACKAN1_RANGE 0x40, 0x50 //# 64 <= x < 80
|
||||
#define AMDGPU_GFX1150_RANGE 0x01, 0x40 //# 1 <= x < 64
|
||||
#define AMDGPU_GFX1151_RANGE 0xC0, 0xFF //# 192 <= x < 255
|
||||
#define AMDGPU_GFX1152_RANGE 0x40, 0x50 //# 64 <= x < 80
|
||||
#define AMDGPU_GFX1153_RANGE 0x50, 0xC0 //# 80 <= x < 192
|
||||
#define AMDGPU_PHOENIX1_RANGE 0x01, 0x80 //# 1 <= x < 128
|
||||
#define AMDGPU_PHOENIX2_RANGE 0x80, 0xC0 //# 128 <= x < 192
|
||||
|
|
@ -181,9 +181,9 @@
|
|||
#define ASICREV_IS_NAVI31_P(r) ASICREV_IS(r, NAVI31)
|
||||
#define ASICREV_IS_NAVI32_P(r) ASICREV_IS(r, NAVI32)
|
||||
#define ASICREV_IS_NAVI33_P(r) ASICREV_IS(r, NAVI33)
|
||||
#define ASICREV_IS_STRIX1(r) ASICREV_IS(r, STRIX1)
|
||||
#define ASICREV_IS_STRIX_HALO(r) ASICREV_IS(r, STRIX_HALO)
|
||||
#define ASICREV_IS_KRACKAN1(r) ASICREV_IS(r, KRACKAN1)
|
||||
#define ASICREV_IS_GFX1150(r) ASICREV_IS(r, GFX1150)
|
||||
#define ASICREV_IS_GFX1151(r) ASICREV_IS(r, GFX1151)
|
||||
#define ASICREV_IS_GFX1152(r) ASICREV_IS(r, GFX1152)
|
||||
#define ASICREV_IS_GFX1153(r) ASICREV_IS(r, GFX1153)
|
||||
#define ASICREV_IS_PHOENIX(r) ASICREV_IS(r, PHOENIX)
|
||||
#define ASICREV_IS_PHOENIX2(r) ASICREV_IS(r, PHOENIX2)
|
||||
|
|
|
|||
|
|
@ -220,11 +220,11 @@ ADDR_E_RETURNCODE Lib::Create(
|
|||
pLib = Gfx10HwlInit(&client);
|
||||
break;
|
||||
case FAMILY_NV3:
|
||||
case FAMILY_STX:
|
||||
case FAMILY_GFX1150:
|
||||
case FAMILY_PHX:
|
||||
pLib = Gfx11HwlInit(&client);
|
||||
break;
|
||||
case FAMILY_NV4:
|
||||
case FAMILY_GFX12:
|
||||
pLib = Gfx12HwlInit(&client);
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -750,9 +750,9 @@ ChipFamily Gfx11Lib::HwlConvertChipFamily(
|
|||
}
|
||||
break;
|
||||
|
||||
case FAMILY_STX:
|
||||
case FAMILY_GFX1150:
|
||||
{
|
||||
m_settings.isStrix = 1;
|
||||
m_settings.isGfx1150 = 1;
|
||||
}
|
||||
break;
|
||||
case FAMILY_PHX:
|
||||
|
|
@ -1743,7 +1743,7 @@ UINT_32 Gfx11Lib::GetValidDisplaySwizzleModes(
|
|||
|
||||
if (false
|
||||
|| (m_settings.isPhoenix)
|
||||
|| (m_settings.isStrix)
|
||||
|| (m_settings.isGfx1150)
|
||||
)
|
||||
{
|
||||
// Not all GPUs support displaying with 256kB swizzle modes.
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ struct Gfx11ChipSettings
|
|||
{
|
||||
struct
|
||||
{
|
||||
UINT_32 isStrix : 1;
|
||||
UINT_32 isGfx1150 : 1;
|
||||
UINT_32 isPhoenix : 1;
|
||||
UINT_32 reserved1 : 30;
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,12 @@ multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.multiply,Fail
|
|||
multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.overlay,Fail
|
||||
multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.screen,Fail
|
||||
|
||||
# new with ANGLE 2024-10-17
|
||||
KHR-GLES31.core.texture_buffer.texture_buffer_max_size,Fail
|
||||
|
||||
# New failure with ANGLE 2025-02-12
|
||||
KHR-GLES3.framebuffer_blit.framebuffer_blit_functionality_multisampled_to_singlesampled_blit,Crash
|
||||
|
||||
# New failures with ES CTS 3.2.12.0
|
||||
KHR-GLES3.framebuffer_blit.scissor_blit,Crash
|
||||
KHR-GLES3.framebuffer_blit.multisampled_to_singlesampled_blit_depth_config_test,Crash
|
||||
|
|
|
|||
|
|
@ -347,16 +347,14 @@
|
|||
.ci-tron-test-amdgpu:
|
||||
variables:
|
||||
CI_TRON_PATTERN__JOB_WARN__REGEX: 'ring .* timeout'
|
||||
CI_TRON_KERNEL__URL: "https://fs.mupuf.org/radv/linux-6.17.3_w_buddy_fixes/linux-x86_64"
|
||||
CI_TRON_INITRAMFS__DEPMOD__URL: "https://fs.mupuf.org/radv/linux-6.17.3_w_buddy_fixes/linux-x86_64.depmod.cpio.xz"
|
||||
CI_TRON_INITRAMFS__GPU__URL: "https://fs.mupuf.org/radv/linux-6.17.3_w_buddy_fixes/linux-x86_64.gpu_amdgpu.cpio"
|
||||
CI_TRON_INITRAMFS__DEPMOD__URL: "https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/$B2C_VERSION/downloads/linux-x86_64.depmod.cpio.xz"
|
||||
CI_TRON_INITRAMFS__GPU__URL: "https://gitlab.freedesktop.org/gfx-ci/boot2container/-/releases/$B2C_VERSION/downloads/linux-x86_64.gpu.cpio"
|
||||
CI_TRON_INITRAMFS__GPU__FORMAT__0__ARCHIVE__KEEP__0__PATH: "(lib/(modules|firmware/amdgpu)/.*)"
|
||||
CI_TRON_KERNEL_CMDLINE__LOAD_MODULES: 'modules_load=amdgpu'
|
||||
tags:
|
||||
- farm:$RUNNER_FARM_LOCATION
|
||||
- $CI_TRON_DUT_SETUP_TAGS
|
||||
- amdgpu:$INTEGRATED_OR_DISCRETE
|
||||
- ci-tron:priority:$CI_TRON_JOB_PRIORITY
|
||||
|
||||
.ci-tron-test-radv:
|
||||
extends: .ci-tron-test-amdgpu
|
||||
|
|
@ -419,6 +417,20 @@
|
|||
CI_TRON_KERNEL_CMDLINE__TSC_WORKAROUND: 'tsc=unstable'
|
||||
GPU_VERSION: radv-polaris10
|
||||
|
||||
# FIXME: B2C's 6.16 kernel regressed and leads to the following hang with a 10% probability. Let's keep using the
|
||||
# last known working kernel until the bisection is over.
|
||||
# [ 32.648386] amdgpu 0000:2d:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring kiq_0.2.1.0 test failed (-110)
|
||||
# [ 32.648641] [drm:gfx_v8_0_hw_fini [amdgpu]] *ERROR* KCQ disable failed
|
||||
# [ 32.900818] amdgpu: cp is busy, skip halt cp
|
||||
# [ 33.152738] amdgpu: rlc is busy, skip halt rlc
|
||||
# [ 33.980604] amdgpu 0000:2d:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring gfx test failed (-110)
|
||||
# [ 33.980854] amdgpu 0000:2d:00.0: amdgpu: resume of IP block <gfx_v8_0> failed -110
|
||||
# [ 33.980860] amdgpu 0000:2d:00.0: amdgpu: GPU Recovery Failed: -110
|
||||
CI_TRON_KERNEL__URL: "https://fs.mupuf.org/radv/linux-6.15.9/linux-x86_64"
|
||||
CI_TRON_INITRAMFS__DEPMOD__URL: "https://fs.mupuf.org/radv/linux-6.15.9/linux-x86_64.depmod.cpio.xz"
|
||||
CI_TRON_INITRAMFS__GPU__URL: "https://fs.mupuf.org/radv/linux-6.15.9/linux-x86_64.gpu.cpio"
|
||||
|
||||
|
||||
.polaris10-test-valve-mupuf:
|
||||
extends: .polaris10-test-valve
|
||||
variables:
|
||||
|
|
@ -477,6 +489,11 @@
|
|||
INTEGRATED_OR_DISCRETE: discrete
|
||||
GPU_VERSION: radv-navi21
|
||||
FDO_CI_CONCURRENT: 32
|
||||
# FIXME: drop everything below to use the same kernel as the rest of the amdgpu jobs
|
||||
CI_TRON_KERNEL__URL: https://fs.mupuf.org/linux-6.6-b2c-radv-ci
|
||||
CI_TRON_INITRAMFS__DEPMOD__URL: null
|
||||
CI_TRON_INITRAMFS__GPU__URL: null
|
||||
CI_TRON_INITRAMFS__GPU__FORMAT__0__ARCHIVE__KEEP__0__PATH: null
|
||||
|
||||
.vangogh-test-valve:
|
||||
variables:
|
||||
|
|
@ -485,6 +502,11 @@
|
|||
INTEGRATED_OR_DISCRETE: integrated
|
||||
GPU_VERSION: radv-vangogh
|
||||
FDO_CI_CONCURRENT: 8
|
||||
tags:
|
||||
- farm:$RUNNER_FARM_LOCATION
|
||||
- amdgpu:$INTEGRATED_OR_DISCRETE
|
||||
- $CI_TRON_DUT_SETUP_TAGS
|
||||
- $CI_TRON_JOB_PRIORITY_TAG
|
||||
|
||||
.raphael-test-valve:
|
||||
variables:
|
||||
|
|
@ -501,6 +523,12 @@
|
|||
INTEGRATED_OR_DISCRETE: discrete
|
||||
GPU_VERSION: radv-navi31
|
||||
FDO_CI_CONCURRENT: 32
|
||||
# FIXME: drop everything below to use the same kernel as the rest of the amdgpu jobs
|
||||
CI_TRON_KERNEL__URL: https://fs.mupuf.org/linux-6.6-b2c-radv-ci
|
||||
CI_TRON_INITRAMFS__DEPMOD__URL: null
|
||||
CI_TRON_INITRAMFS__GPU__URL: null
|
||||
CI_TRON_INITRAMFS__GPU__FORMAT__0__ARCHIVE__KEEP__0__PATH: null
|
||||
|
||||
|
||||
.gfx1201-test-valve:
|
||||
variables:
|
||||
|
|
@ -508,4 +536,4 @@
|
|||
CI_TRON_DUT_SETUP_TAGS: amdgpu:codename:NAVI48
|
||||
INTEGRATED_OR_DISCRETE: discrete
|
||||
GPU_VERSION: radv-gfx1201
|
||||
FDO_CI_CONCURRENT: 32
|
||||
FDO_CI_CONCURRENT: 16 # FIXME: Replace with 32 when the zerovram regression is addressed
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ radv-tahiti-vkcts:
|
|||
timeout: 1h
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 50
|
||||
RADV_PERFTEST: video_decode,video_encode
|
||||
|
||||
radv-hawaii-vkcts:
|
||||
extends:
|
||||
|
|
@ -202,6 +203,7 @@ radv-hawaii-vkcts:
|
|||
timeout: 1h
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 50
|
||||
RADV_PERFTEST: video_decode,video_encode
|
||||
|
||||
radv-polaris10-vkcts:
|
||||
extends:
|
||||
|
|
@ -310,7 +312,8 @@ radv-navi31-vkcts:
|
|||
- .radv-valve-rules
|
||||
variables:
|
||||
RADV_DEBUG: nomeshshader # Disable mesh shaders until task shaders stop hanging
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
# TODO: Remove video_encode,video_decode with next kernel.
|
||||
RADV_PERFTEST: transfer_queue,video_decode,video_encode,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 20
|
||||
|
||||
|
||||
|
|
@ -359,8 +362,8 @@ radv-fossils:
|
|||
# RDNA3 (GFX11)
|
||||
- AMDGPU_GPU_ID="NAVI31"
|
||||
./install/fossilize-runner.sh
|
||||
# RDNA3.5 (STRIX1)
|
||||
- AMDGPU_GPU_ID="STRIX1"
|
||||
# RDNA3.5 (GFX1150)
|
||||
- AMDGPU_GPU_ID="GFX1150"
|
||||
./install/fossilize-runner.sh
|
||||
|
||||
############### vkd3d-proton
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
KHR-GL46.shader_image_load_store.basic-allTargets-atomic,Fail
|
||||
KHR-GL46.es_31_compatibility.shader_image_load_store.basic-allFormats-store-fs,Fail
|
||||
KHR-GL46.sparse_texture2_tests.StandardPageSizesTestCase_texture_1d_array_r11f_g11f_b10f,Fail
|
||||
KHR-GL46.sparse_texture2_tests.StandardPageSizesTestCase_texture_1d_array_r16,Fail
|
||||
KHR-GL46.sparse_texture2_tests.StandardPageSizesTestCase_texture_1d_array_r16f,Fail
|
||||
|
|
|
|||
|
|
@ -3,7 +3,3 @@ dEQP-GLES31.functional.geometry_shading.basic.output_256
|
|||
KHR-GLES31.core.tessellation_shader.vertex.vertex_ordering
|
||||
KHR-GL46.tessellation_shader.vertex.vertex_ordering
|
||||
KHR-Single-GL46.arrays_of_arrays_gl.AtomicUsage
|
||||
|
||||
# The mesh shader tests trigger GPU resets on amdgpu, making the system
|
||||
# unstable, so they have to be be skipped for now.
|
||||
KHR-Single-GL46.meshShader.*
|
||||
|
|
|
|||
|
|
@ -411,3 +411,7 @@ KHR-GL46.sparse_texture2_tests.UncommittedRegionsAccess_texture_cube_map_r32i,Fa
|
|||
KHR-GL46.sparse_texture2_tests.UncommittedRegionsAccess_texture_2d_multisample_r32ui,Fail
|
||||
KHR-GL46.sparse_texture2_tests.StandardPageSizesTestCase_texture_1d_array_r32ui,Fail
|
||||
KHR-GL46.sparse_texture2_tests.UncommittedRegionsAccess_texture_2d_array_rg16f,Fail
|
||||
|
||||
# New failures with GL CTS 4.6.6.0
|
||||
KHR-GL46.es_31_compatibility.shader_image_load_store.basic-allFormats-store-fs,Fail
|
||||
KHR-GL46.direct_state_access.vertex_arrays_vertex_buffers_errors,Fail
|
||||
|
|
|
|||
|
|
@ -34,5 +34,3 @@ spec@arb_timer_query@timestamp-get
|
|||
|
||||
dEQP-GLES3.functional.occlusion_query.scissor_depth_write_stencil_write
|
||||
dEQP-GLES3.functional.occlusion_query.conservative_scissor_depth_clear_stencil_clear
|
||||
|
||||
KHR-Single-GL46.arrays_of_arrays_gl.AtomicDeclaration
|
||||
|
|
|
|||
|
|
@ -7,4 +7,3 @@ KHR-GL46.copy_image.functional
|
|||
KHR-GL46.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_MaxPatchVertices_Position_PointSize
|
||||
KHR-GL46.texture_swizzle.smoke
|
||||
KHR-Single-GL46.arrays_of_arrays_gl.AtomicUsage
|
||||
KHR-Single-GL46.arrays_of_arrays_gl.AtomicDeclaration
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue