From bdb5cd95f54f307c7bbb3321e8d7ff67cce20b12 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 3 Jun 2023 18:53:26 +0000 Subject: [PATCH] extra/mesa to 23.1.1-1 --- ...-fix-scheduling-of-HALT-instructions.patch | 130 ------- ...destruction-of-event-queue-with-prox.patch | 38 -- ...nd-Fix-destruction-of-event-queue-wi.patch | 50 --- .../0004-rusticl-Fix-bindgen-invocation.patch | 23 -- extra/mesa/PKGBUILD | 350 ++++++++++++------ 5 files changed, 232 insertions(+), 359 deletions(-) delete mode 100644 extra/mesa/0001-intel-fs-fix-scheduling-of-HALT-instructions.patch delete mode 100644 extra/mesa/0002-egl-wayland-Fix-destruction-of-event-queue-with-prox.patch delete mode 100644 extra/mesa/0003-vulkan-wsi-wayland-Fix-destruction-of-event-queue-wi.patch delete mode 100644 extra/mesa/0004-rusticl-Fix-bindgen-invocation.patch diff --git a/extra/mesa/0001-intel-fs-fix-scheduling-of-HALT-instructions.patch b/extra/mesa/0001-intel-fs-fix-scheduling-of-HALT-instructions.patch deleted file mode 100644 index d8b44a868..000000000 --- a/extra/mesa/0001-intel-fs-fix-scheduling-of-HALT-instructions.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Lionel Landwerlin -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 , 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 , 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 , 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 -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) { diff --git a/extra/mesa/0002-egl-wayland-Fix-destruction-of-event-queue-with-prox.patch b/extra/mesa/0002-egl-wayland-Fix-destruction-of-event-queue-with-prox.patch deleted file mode 100644 index fc2f43830..000000000 --- a/extra/mesa/0002-egl-wayland-Fix-destruction-of-event-queue-with-prox.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alexandros Frantzis -Date: Thu, 2 Mar 2023 09:35:08 +0200 -Subject: [PATCH] egl/wayland: Fix destruction of event queue with proxies - still attached. - -Destroy the display wrapper proxy before destroying the event queue that -the proxy is attached to. - -This silences a warning that libwayland 1.22 emits for programs that use -EGL/Wayland: - -warning: queue 0x562a5ed2cd20 destroyed while proxies still attached: - wl_display@1 still attached - -Signed-off-by: Alexandros Frantzis -Part-of: ---- - src/egl/drivers/dri2/platform_wayland.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c -index 32b0ff70002d..962bc34a2166 100644 ---- a/src/egl/drivers/dri2/platform_wayland.c -+++ b/src/egl/drivers/dri2/platform_wayland.c -@@ -2800,10 +2800,10 @@ dri2_teardown_wayland(struct dri2_egl_display *dri2_dpy) - wl_shm_destroy(dri2_dpy->wl_shm); - if (dri2_dpy->wl_registry) - wl_registry_destroy(dri2_dpy->wl_registry); -- if (dri2_dpy->wl_queue) -- wl_event_queue_destroy(dri2_dpy->wl_queue); - if (dri2_dpy->wl_dpy_wrapper) - wl_proxy_wrapper_destroy(dri2_dpy->wl_dpy_wrapper); -+ if (dri2_dpy->wl_queue) -+ wl_event_queue_destroy(dri2_dpy->wl_queue); - - if (dri2_dpy->own_device) - wl_display_disconnect(dri2_dpy->wl_dpy); diff --git a/extra/mesa/0003-vulkan-wsi-wayland-Fix-destruction-of-event-queue-wi.patch b/extra/mesa/0003-vulkan-wsi-wayland-Fix-destruction-of-event-queue-wi.patch deleted file mode 100644 index 8481b3108..000000000 --- a/extra/mesa/0003-vulkan-wsi-wayland-Fix-destruction-of-event-queue-wi.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alexandros Frantzis -Date: Thu, 2 Mar 2023 10:10:42 +0200 -Subject: [PATCH] vulkan/wsi/wayland: Fix destruction of event queue with - proxies still attached. - -Destroy the surface dmabuf feedback proxy before destroying the event -queue that the proxy is attached to. - -This silences a warning that libwayland 1.22 emits for programs that use -Vulkan/Wayland: - -warning: queue 0x557a4efbcf70 destroyed while proxies still attached: - zwp_linux_dmabuf_feedback_v1@18 still attached - -Signed-off-by: Alexandros Frantzis -Part-of: ---- - src/vulkan/wsi/wsi_common_wayland.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c -index 0c6560371f75..6a241bcfabe1 100644 ---- a/src/vulkan/wsi/wsi_common_wayland.c -+++ b/src/vulkan/wsi/wsi_common_wayland.c -@@ -1156,18 +1156,18 @@ wsi_wl_surface_destroy(VkIcdSurfaceBase *icd_surface, VkInstance _instance, - struct wsi_wl_surface *wsi_wl_surface = - wl_container_of((VkIcdSurfaceWayland *)icd_surface, wsi_wl_surface, base); - -- if (wsi_wl_surface->surface) -- wl_proxy_wrapper_destroy(wsi_wl_surface->surface); -- -- if (wsi_wl_surface->display) -- wsi_wl_display_destroy(wsi_wl_surface->display); -- - if (wsi_wl_surface->wl_dmabuf_feedback) { - zwp_linux_dmabuf_feedback_v1_destroy(wsi_wl_surface->wl_dmabuf_feedback); - dmabuf_feedback_fini(&wsi_wl_surface->dmabuf_feedback); - dmabuf_feedback_fini(&wsi_wl_surface->pending_dmabuf_feedback); - } - -+ if (wsi_wl_surface->surface) -+ wl_proxy_wrapper_destroy(wsi_wl_surface->surface); -+ -+ if (wsi_wl_surface->display) -+ wsi_wl_display_destroy(wsi_wl_surface->display); -+ - vk_free2(&instance->alloc, pAllocator, wsi_wl_surface); - } - diff --git a/extra/mesa/0004-rusticl-Fix-bindgen-invocation.patch b/extra/mesa/0004-rusticl-Fix-bindgen-invocation.patch deleted file mode 100644 index ed958a668..000000000 --- a/extra/mesa/0004-rusticl-Fix-bindgen-invocation.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" -Date: Sat, 22 Apr 2023 01:21:20 +0000 -Subject: [PATCH] rusticl: Fix bindgen invocation - -The deprecated `--size_t-is-usize` was removed in bindgen 0.65.1, being -enabled by default. ---- - src/gallium/frontends/rusticl/meson.build | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build -index e53b50a9b8b8..9fa024cb8db4 100644 ---- a/src/gallium/frontends/rusticl/meson.build -+++ b/src/gallium/frontends/rusticl/meson.build -@@ -92,7 +92,6 @@ rusticl_gen_args = [ - rusticl_bindgen_args = [ - '--no-convert-floats', - '--use-array-pointers-in-arguments', -- '--size_t-is-usize', - '--default-enum-style', 'rust', - '--with-derive-partialeq', - '--with-derive-eq', diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD index 1dd81e5d6..3d67d0bc8 100644 --- a/extra/mesa/PKGBUILD +++ b/extra/mesa/PKGBUILD @@ -12,38 +12,84 @@ highmem=1 pkgbase=mesa -pkgname=('vulkan-mesa-layers' 'opencl-mesa' 'vulkan-radeon' 'vulkan-swrast' 'vulkan-virtio' 'vulkan-broadcom' 'vulkan-panfrost' 'libva-mesa-driver' 'mesa-vdpau' 'mesa') -pkgdesc="An open-source implementation of the OpenGL specification" -pkgver=23.0.3 +pkgname=( + 'vulkan-mesa-layers' + 'opencl-mesa' + 'vulkan-radeon' + 'vulkan-swrast' + 'vulkan-virtio' + 'vulkan-broadcom' + 'vulkan-panfrost' + 'libva-mesa-driver' + 'mesa-vdpau' + 'mesa' +) +pkgver=23.1.1 pkgrel=1 -arch=('x86_64') -makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence' 'libxxf86vm' - 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols' 'zstd' 'elfutils' 'llvm' - 'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors' 'libxrandr' - 'systemd' 'valgrind' 'glslang' 'vulkan-icd-loader' 'directx-headers' 'cmake' 'meson') -makedepends+=('python-ply' 'spirv-llvm-translator') # intel-clc dependencies -makedepends+=('rust' 'rust-bindgen' 'spirv-tools') # rusticl dependencies +pkgdesc="An open-source implementation of the OpenGL specification" url="https://www.mesa3d.org/" +arch=('x86_64') license=('custom') -source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} - 0001-intel-fs-fix-scheduling-of-HALT-instructions.patch - 0002-egl-wayland-Fix-destruction-of-event-queue-with-prox.patch - 0003-vulkan-wsi-wayland-Fix-destruction-of-event-queue-wi.patch - 0004-rusticl-Fix-bindgen-invocation.patch - LICENSE) -sha256sums=('386362a5d80df3b096636b67f340e1ce67b705b44767d5bdd11d2ed1037192d5' +makedepends=( + 'clang' + 'expat' + 'libdrm' + 'libelf' + 'libglvnd' + 'libunwind' + 'libva' + 'libvdpau' + 'libx11' + 'libxdamage' + 'libxml2' + 'libxrandr' + 'libxshmfence' + 'libxxf86vm' + 'llvm' + 'lm_sensors' + 'systemd' + 'vulkan-icd-loader' + 'wayland' + 'zstd' + + # shared with lib32-mesa + 'clang' + 'cmake' + 'elfutils' + 'glslang' + 'libclc' + 'meson' + 'python-mako' + 'wayland-protocols' + 'xorgproto' + + # valgrind deps + 'valgrind' + + # d3d12 deps + 'directx-headers' + + # gallium-omx deps + 'libomxil-bellagio' + + # gallium-rusticl deps + 'rust' + 'rust-bindgen' + 'spirv-tools' + + # intel-clc deps + 'python-ply' + 'spirv-llvm-translator' +) +source=( + https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} + LICENSE +) +sha256sums=('a2679031ed5b73b29c4f042ac64d96f83b0cfe4858617de32e2efc196c653a40' 'SKIP' - 'dc6790b5be0e80c23e74ae18ca1a2b40f57f4211cc7b645bf22b63af3b790e40' - 'c25493de3e5930702acf833d182aeca0895d6a9d9e830dca15c42d130e25c41c' - 'db2be7ae0540d65e77449eda1af66200e27af382183fdcd0c87f99db3520b80a' - 'b3aaccd6ce5c6d417801baafa056d4dfb2a13bf9b480fb980e9af6d0d071cedb' '7052ba73bb07ea78873a2431ee4e828f4e72bda7d176d07f770fa48373dec537') -b2sums=('e716d9ddce3da649239c1bc37ec208b9669f316f6b547ca0c69937043f371f0d59ead34fec427297171916045061ddb8783d126f6dec5ece90a0719003fe2c40' +b2sums=('b17a71205248f2e97c60aa944d8b5b19d51592ba9288d2f04a8498eabaa19308f7ec7a813b948d3fad1001ae14da8771e403c68f7a4159c7f3b8830b919d64dc' 'SKIP' - '37d1d070c45c85bce8abe3524a3f8d9ac9ed6326a3eec653cd89fffce3630b08eb9b96b11aeb495488230449c99f9b508f73a15e53265d2b159286b0e2dda7cc' - 'ae891637318fdbb8dd58285098af7bea709fb032969a5671eb225a4a471bf9422fac2a6cb0fd188aad96ea5a03eb043f646f5d371dd655a100046adb1c91bd7d' - 'a7312e0931904e659b3d33fcb37b13bcadab943c6040dd2b58ea191db350b50c1ba588e334b7e59b513bd6155797e29dc1bd1a6a35a278b3824d06534f2c9d17' - '58c374ae45f84996a7bf248d0f2dd97fb003f30b2ecda5654561679b90c53830efdff10f990295390cdf8d9d676deeb756b3037c070966a6441670bf8dcb2223' '1ecf007b82260710a7bf5048f47dd5d600c168824c02c595af654632326536a6527fbe0738670ee7b921dd85a70425108e0f471ba85a8e1ca47d294ad74b4adb') validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov '946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez @@ -54,71 +100,58 @@ validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov