upg bullet mesa

This commit is contained in:
joborun linux 2023-04-04 22:51:57 +03:00
parent 07ae374246
commit 2cf2d3cc04
7 changed files with 187 additions and 37 deletions

View File

@ -7,11 +7,10 @@
pkgbase=bullet
pkgname=('bullet' 'bullet-dp' 'bullet-docs' 'python-pybullet')
pkgver=3.24
_pkgver=3.24
pkgrel=02
pkgver=3.25
_pkgver=3.25
pkgrel=01
pkgdesc="A 3D Collision Detection and Rigid Body Dynamics Library for games and animation"
arch=('x86_64')
url="http://www.bulletphysics.com/Bullet/"
makedepends=('cmake' 'doxygen' 'graphviz' 'ttf-dejavu' 'mesa' 'glu' 'python' 'python-numpy' 'python-setuptools' 'ninja')
#source=("$pkgname-$pkgver.tar.gz::https://github.com/bulletphysics/bullet3/archive/${_commit}.tar.gz"
@ -26,6 +25,7 @@ prepare() {
build() {
cp -r bullet3-${_pkgver} bullet3-${_pkgver}-dp
export CXXFLAGS+=" -ffat-lto-objects"
cd bullet3-${_pkgver}
cmake \
-Bbuild \
@ -129,20 +129,20 @@ package_bullet-docs() {
cp -r html "${pkgdir}"/usr/share/doc/bullet/html
}
#---- license gpg-key sha256sums ----
#---- arch license gpg-key & sha256sums ----
arch=(x86_64)
license=('custom:zlib')
sha256sums=(6b1e987d6f8156fa8a6468652f4eaad17b3e11252c9870359e5bca693e35780b # bullet-3.24.tar.gz
68ca940af489f7e9718fe9199cf0c3428c8e4d2b4ae1576847fffe56c0da50f7) # bullet3_examplebrowser.sh
####### diffs between old and new Arch PKGBUILD
#### systemd crap in new PKGBUILD
scan for systemd ipv6 service & socket
sha256sums=(c45afb6399e3f68036ddb641c6bf6f552bf332d5ab6be62f7e6c54eda05ceb77 # bullet-3.25.tar.gz
68ca940af489f7e9718fe9199cf0c3428c8e4d2b4ae1576847fffe56c0da50f7) # bullet3_examplebrowser.sh
sha512sums=('7086e5fcf69635801bb311261173cb8d173b712ca1bd78be03df48fad884674e85512861190e45a1a62d5627aaad65cde08c175c44a3be9afa410d3dfd5358d4'
'8741ad94b6c46c226d89aebc8ab06d8a11bac3c04d3f0a2bf7a7524792a3375aa7bf7d295410b16fbeb4c348a31057b4570acdebe9bbaea251f44daca8d9fe81')
## 9ae6e93fc73cb04c71d96f49ad87ea0f461e4f23856960a3d32d6fcfd6c72c47 bullet-3.25-01-x86_64.pkg.tar.lz
## 1b9ef639a8bf054948544aafb649546859525f241d047f1330dd48d45a41c281 bullet-docs-3.25-01-x86_64.pkg.tar.lz
## e76a299580309a015f130aa3e8729dc66605e3ca0d292d6491ea1b4036a10061 bullet-dp-3.25-01-x86_64.pkg.tar.lz
## 07692749619b6fd2f9df007fac5e7cdf163689a45bbe2736ecbda3ed8fc8cb40 python-pybullet-3.25-01-x86_64.pkg.tar.lz

View File

@ -3,9 +3,9 @@
pkgbase=bullet
pkgname=('bullet' 'bullet-dp' 'bullet-docs' 'python-pybullet')
pkgver=3.24
_pkgver=3.24
pkgrel=2
pkgver=3.25
_pkgver=3.25
pkgrel=1
pkgdesc="A 3D Collision Detection and Rigid Body Dynamics Library for games and animation"
arch=('x86_64')
url="http://www.bulletphysics.com/Bullet/"
@ -13,7 +13,7 @@ license=('custom:zlib')
makedepends=('cmake' 'doxygen' 'graphviz' 'ttf-dejavu' 'mesa' 'glu' 'python' 'python-numpy' 'python-setuptools' 'ninja')
source=("$pkgname-$pkgver.tar.gz::https://github.com/bulletphysics/bullet3/archive/refs/tags/${_pkgver}.tar.gz"
bullet3_examplebrowser.sh)
sha512sums=('0f8cf009e50853b2ff461414893f09f752774dac3fb51ba158ef670865b61140a13567cadbf7b19d643d24d6207a23f825773edb86234591f83bd19e3fb3d054'
sha512sums=('7086e5fcf69635801bb311261173cb8d173b712ca1bd78be03df48fad884674e85512861190e45a1a62d5627aaad65cde08c175c44a3be9afa410d3dfd5358d4'
'8741ad94b6c46c226d89aebc8ab06d8a11bac3c04d3f0a2bf7a7524792a3375aa7bf7d295410b16fbeb4c348a31057b4570acdebe9bbaea251f44daca8d9fe81')
prepare() {
@ -24,6 +24,7 @@ prepare() {
build() {
cp -r bullet3-${_pkgver} bullet3-${_pkgver}-dp
export CXXFLAGS+=" -ffat-lto-objects"
cd bullet3-${_pkgver}
cmake \
-Bbuild \

View File

@ -8,3 +8,6 @@ python
python-numpy
python-setuptools
ninja
libgit2

View File

@ -1,5 +1,6 @@
real 33m22.070s
user 96m7.343s
sys 5m15.576s
real 30m18.479s
user 91m42.090s
sys 5m0.016s

View File

@ -0,0 +1,130 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Date: Mon, 3 Apr 2023 14:52:59 +0300
Subject: [PATCH] intel/fs: fix scheduling of HALT instructions
With the following test :
dEQP-VK.spirv_assembly.instruction.terminate_invocation.terminate.no_out_of_bounds_load
There is a :
shader_start:
... <- no control flow
g0 = some_alu
g1 = fbl
g2 = broadcast g3, g1
g4 = get_buffer_size g2
... <- no control flow
halt <- on some lanes
g5 = send <surface>, g4
eliminate_find_live_channel will remove the fbl/broadcast because it
assumes lane0 is active at get_buffer_size :
shader_start:
... <- no control flow
g0 = some_alu
g4 = get_buffer_size g0
... <- no control flow
halt <- on some lanes
g5 = send <surface>, g4
But then the instruction scheduler will move the get_buffer_size after
the halt :
shader_start:
... <- no control flow
halt <- on some lanes
g0 = some_alu
g4 = get_buffer_size g0
g5 = send <surface>, g4
get_buffer_size pulls the surface index from lane0 in g0 which could
have been turned off by the halt and we end up accessing an invalid
surface handle.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
---
.../compiler/brw_schedule_instructions.cpp | 46 +++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/src/intel/compiler/brw_schedule_instructions.cpp b/src/intel/compiler/brw_schedule_instructions.cpp
index 3286e3f83b96..43f63784b2e8 100644
--- a/src/intel/compiler/brw_schedule_instructions.cpp
+++ b/src/intel/compiler/brw_schedule_instructions.cpp
@@ -651,6 +651,7 @@ public:
ralloc_free(this->mem_ctx);
}
void add_barrier_deps(schedule_node *n);
+ void add_cross_lane_deps(schedule_node *n);
void add_dep(schedule_node *before, schedule_node *after, int latency);
void add_dep(schedule_node *before, schedule_node *after);
@@ -1098,6 +1099,28 @@ is_scheduling_barrier(const backend_instruction *inst)
inst->has_side_effects();
}
+static bool
+has_cross_lane_access(const fs_inst *inst)
+{
+ if (inst->opcode == SHADER_OPCODE_BROADCAST ||
+ inst->opcode == SHADER_OPCODE_READ_SR_REG ||
+ inst->opcode == SHADER_OPCODE_CLUSTER_BROADCAST ||
+ inst->opcode == SHADER_OPCODE_SHUFFLE ||
+ inst->opcode == FS_OPCODE_LOAD_LIVE_CHANNELS ||
+ inst->opcode == SHADER_OPCODE_FIND_LAST_LIVE_CHANNEL ||
+ inst->opcode == SHADER_OPCODE_FIND_LIVE_CHANNEL)
+ return true;
+
+ for (unsigned s = 0; s < inst->sources; s++) {
+ if (inst->src[s].file == VGRF) {
+ if (inst->src[s].stride == 0)
+ return true;
+ }
+ }
+
+ return false;
+}
+
/**
* Sometimes we really want this node to execute after everything that
* was before it and before everything that followed it. This adds
@@ -1128,6 +1151,25 @@ instruction_scheduler::add_barrier_deps(schedule_node *n)
}
}
+/**
+ * Because some instructions like HALT can disable lanes, scheduling prior to
+ * a cross lane access should not be allowed, otherwise we could end up with
+ * later instructions accessing uninitialized data.
+ */
+void
+instruction_scheduler::add_cross_lane_deps(schedule_node *n)
+{
+ schedule_node *prev = (schedule_node *)n->prev;
+
+ if (prev) {
+ while (!prev->is_head_sentinel()) {
+ if (has_cross_lane_access((fs_inst *)prev->inst))
+ add_dep(prev, n, 0);
+ prev = (schedule_node *)prev->prev;
+ }
+ }
+}
+
/* instruction scheduling needs to be aware of when an MRF write
* actually writes 2 MRFs.
*/
@@ -1165,6 +1207,10 @@ fs_instruction_scheduler::calculate_deps()
if (is_scheduling_barrier(inst))
add_barrier_deps(n);
+ if (inst->opcode == BRW_OPCODE_HALT ||
+ inst->opcode == SHADER_OPCODE_HALT_TARGET)
+ add_cross_lane_deps(n);
+
/* read-after-write deps. */
for (int i = 0; i < inst->sources; i++) {
if (inst->src[i].file == VGRF) {

View File

@ -10,7 +10,7 @@ pkgname=('vulkan-mesa-layers' 'opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'vulk
'vulkan-virtio' 'libva-mesa-driver' 'mesa-vdpau' 'mesa')
pkgdesc="An open-source implementation of the OpenGL specification w/o systemd or zstd"
pkgver=23.0.1
pkgrel=01
pkgrel=02
#options=('debug' '!lto') # uncomment this if you want the debug package built # Arch removed debug for 22.3.3-3 version
options=('!lto')
makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence' 'libxxf86vm'
@ -20,9 +20,9 @@ makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence
makedepends+=('rust' 'rust-bindgen' 'spirv-tools' 'spirv-llvm-translator') # rusticl dependencies
url="https://www.mesa3d.org/"
source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
# 0001-anv-force-MEDIA_INTERFACE_DESCRIPTOR_LOAD-reemit-aft.patch
0001-iris-Retry-DRM_IOCTL_I915_GEM_EXECBUFFER2-on-ENOMEM.patch
0002-Revert-iris-Avoid-abort-if-kernel-can-t-allocate-mem.patch
0003-intel-fs-fix-scheduling-of-HALT-instructions.patch
LICENSE)
prepare() {
@ -37,6 +37,11 @@ prepare() {
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20449
patch -Np1 -i ../0001-iris-Retry-DRM_IOCTL_I915_GEM_EXECBUFFER2-on-ENOMEM.patch
patch -Np1 -i ../0002-Revert-iris-Avoid-abort-if-kernel-can-t-allocate-mem.patch
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7110
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20765
patch -Np1 -i ../0003-intel-fs-fix-scheduling-of-HALT-instructions.patch
}
build() {
@ -254,14 +259,17 @@ sha256sums=(e8e586856b55893abae9bdcdb98b41c081d909bb1faf372e6e7262307bf34adf #
b6d7db7f4835a65082a3dc10abaa20ecc1b05a4c87467fb8aaa8cbd1b24d33d8 # mesa-23.0.1.tar.xz.sig
99264c77d63d6fa810e295914808cde9f580a64e913e99fa794c1aa25a4f8fb2 # 0001-iris-Retry-DRM_IOCTL_I915_GEM_EXECBUFFER2-on-ENOMEM.patch
d6ef8fb1809e8aeae0ec32bfe916adb770c64880bfd3d0f4472a616c9f356a9a # 0002-Revert-iris-Avoid-abort-if-kernel-can-t-allocate-mem.patch
dc6790b5be0e80c23e74ae18ca1a2b40f57f4211cc7b645bf22b63af3b790e40 # 0003-intel-fs-fix-scheduling-of-HALT-instructions.patch
7052ba73bb07ea78873a2431ee4e828f4e72bda7d176d07f770fa48373dec537) # LICENSE
## 006cf25e83b6031ea4277bdec5d8ace2d34a21a9b7d0a3feaf9123b04bf0b68e libva-mesa-driver-23.0.1-01-x86_64.pkg.tar.lz
## c7ae665bd50aa228f02f0adbce6035836fc151bba29ff9333dca3170111fd851 mesa-23.0.1-01-x86_64.pkg.tar.lz
## c46637bbc17e449d35a06334cf1178add96dcd632fd17374f297d7cdbf95da34 mesa-vdpau-23.0.1-01-x86_64.pkg.tar.lz
## 937d2bfd3acc5b6c0b9acb42c181ae4c52577abb35053cb20c21697a604a6476 opencl-mesa-23.0.1-01-x86_64.pkg.tar.lz
## af9a1b2419d675cf372b4c1d42ae0686fd589e2341e4ced9863a10158ea05aca vulkan-intel-23.0.1-01-x86_64.pkg.tar.lz
## 732de4159346f6bb05acbc23e59e69c1d4f28ced2440921b5758e110824c233a vulkan-mesa-layers-23.0.1-01-x86_64.pkg.tar.lz
## cdfc47d8697401e5362cd74001de88ea9d6cb5a5d9c571a7f9f482b682e5fc27 vulkan-radeon-23.0.1-01-x86_64.pkg.tar.lz
## 40d8d6b7e79d98352715e0419b1eabd9f1931101105ae1112085c73e2e0cb5a6 vulkan-swrast-23.0.1-01-x86_64.pkg.tar.lz
## 10bfdb02b6c375ae71f4313937adae51920d5a1abca56fe122672e9f3ff5dd2d vulkan-virtio-23.0.1-01-x86_64.pkg.tar.lz
## 5969cc13e4ec1c4efc9807d373ef2307801ffc0eca1a281cc3feb5d3ffb9667f libva-mesa-driver-23.0.1-02-x86_64.pkg.tar.lz
## e729f720da7e5f074130e0dc047ca9804d3b5fc9b6a47f72e9261edf11850810 mesa-23.0.1-02-x86_64.pkg.tar.lz
## ee6b1e1dc643863c8c621f600275c5a6c98f0a22e04177036ac26021cee0031b mesa-vdpau-23.0.1-02-x86_64.pkg.tar.lz
## a8c6df0bb4706854dca1d66046bbd2994de705e02cbfdbcb90f9743cb2eb3c6f opencl-mesa-23.0.1-02-x86_64.pkg.tar.lz
## aa5306abad5e6e0cb3f3a6522e14877f5554aa556f89ac96702ce5a7b5bd981c vulkan-intel-23.0.1-02-x86_64.pkg.tar.lz
## 39f4df626106244a8573cfb4e44d65ec343cdc7f7c5a9165455d5dddce89714e vulkan-mesa-layers-23.0.1-02-x86_64.pkg.tar.lz
## 4c61c60faadf94052dc2bcfe4143ff8e0d9184505ec34ceaf82d9619fa0e47e5 vulkan-radeon-23.0.1-02-x86_64.pkg.tar.lz
## c904cdb3f107edc805c90843557bb6c5c3138290fd2de44fde5d28b5c9132f6d vulkan-swrast-23.0.1-02-x86_64.pkg.tar.lz
## 46d470afd9e77c5b507fedf46e08ada83110ce510f764c6574a80389447cc006 vulkan-virtio-23.0.1-02-x86_64.pkg.tar.lz

View File

@ -7,7 +7,7 @@ pkgbase=mesa
pkgname=('vulkan-mesa-layers' 'opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'vulkan-swrast' 'vulkan-virtio' 'libva-mesa-driver' 'mesa-vdpau' 'mesa')
pkgdesc="An open-source implementation of the OpenGL specification"
pkgver=23.0.1
pkgrel=1
pkgrel=2
arch=('x86_64')
makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence' 'libxxf86vm'
'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols' 'zstd' 'elfutils' 'llvm'
@ -19,16 +19,19 @@ license=('custom')
source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
0001-iris-Retry-DRM_IOCTL_I915_GEM_EXECBUFFER2-on-ENOMEM.patch
0002-Revert-iris-Avoid-abort-if-kernel-can-t-allocate-mem.patch
0003-intel-fs-fix-scheduling-of-HALT-instructions.patch
LICENSE)
sha256sums=('e8e586856b55893abae9bdcdb98b41c081d909bb1faf372e6e7262307bf34adf'
'SKIP'
'99264c77d63d6fa810e295914808cde9f580a64e913e99fa794c1aa25a4f8fb2'
'd6ef8fb1809e8aeae0ec32bfe916adb770c64880bfd3d0f4472a616c9f356a9a'
'dc6790b5be0e80c23e74ae18ca1a2b40f57f4211cc7b645bf22b63af3b790e40'
'7052ba73bb07ea78873a2431ee4e828f4e72bda7d176d07f770fa48373dec537')
b2sums=('50d358e393037381d0d848f868ac3439b0851809c3533432dc428bd77e81bc71bbfd2b598e221b6e8c4c2528ef32e5624aec4fe2e552e01ee98abbcf96a1f5b7'
'SKIP'
'a90bfc47fb3a46eff1ef2455c7aa18c2bb515ec217b423d0a87cc5f3b824a77c0381e1378498464418644108142022dcd3c289e157877c6ae7584beaec1d9987'
'bd52994305fc0fa2f12c46ea3208bbb24f97495d9bad73120d83a6cdcf7e48f5ff0d14ac0055765516b70caacdf024fca4159b70b054e85f2783c78c9218aefe'
'37d1d070c45c85bce8abe3524a3f8d9ac9ed6326a3eec653cd89fffce3630b08eb9b96b11aeb495488230449c99f9b508f73a15e53265d2b159286b0e2dda7cc'
'1ecf007b82260710a7bf5048f47dd5d600c168824c02c595af654632326536a6527fbe0738670ee7b921dd85a70425108e0f471ba85a8e1ca47d294ad74b4adb')
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l.velikov@gmail.com>
'946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez <tanty@igalia.com>
@ -44,6 +47,10 @@ prepare() {
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20449
patch -Np1 -i ../0001-iris-Retry-DRM_IOCTL_I915_GEM_EXECBUFFER2-on-ENOMEM.patch
patch -Np1 -i ../0002-Revert-iris-Avoid-abort-if-kernel-can-t-allocate-mem.patch
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7110
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20765
patch -Np1 -i ../0003-intel-fs-fix-scheduling-of-HALT-instructions.patch
}
build() {