extra/mesa to 24.0.2-1

This commit is contained in:
Kevin Mihelich 2024-03-01 04:50:25 +00:00
parent e5b991c9b5
commit 09632ec049
4 changed files with 269 additions and 8 deletions

View file

@ -1,6 +1,6 @@
pkgbase = mesa
pkgdesc = An open-source implementation of the OpenGL specification
pkgver = 24.0.1
pkgver = 24.0.2
pkgrel = 1
epoch = 1
url = https://www.mesa3d.org/
@ -44,8 +44,10 @@ pkgbase = mesa
makedepends = valgrind
makedepends = directx-headers
makedepends = libomxil-bellagio
source = https://mesa.freedesktop.org/archive/mesa-24.0.1.tar.xz
source = https://mesa.freedesktop.org/archive/mesa-24.0.1.tar.xz.sig
source = https://mesa.freedesktop.org/archive/mesa-24.0.2.tar.xz
source = https://mesa.freedesktop.org/archive/mesa-24.0.2.tar.xz.sig
source = radeon_bo_can_reclaim_slab.diff
source = vulkan-dispatch-table-add-an-uncompacted-version.patch
source = LICENSE
validpgpkeys = 8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D
validpgpkeys = 946D09B5E4C9845E63075FF1D961C596A7203456
@ -53,11 +55,15 @@ pkgbase = mesa
validpgpkeys = A5CC9FEC93F2F837CB044912336909B6B25FADFA
validpgpkeys = 71C4B75620BC75708B4BDB254C95FAAB3EB073EC
validpgpkeys = 57551DE15B968F6341C248F68D8E31AFC32428A6
sha256sums = f387192b08c471c545590dd12230a2a343244804b5fe866fec6aea02eab57613
sha256sums = 94e28a8edad06d8ed2b83eb53f253b9eb5aa62c3080f939702e1b3039b56c9e8
sha256sums = SKIP
sha256sums = 3fd1ad8cd29319502a6f80ecb96bb9a059e5de83a8b6e39f23de8d93921fd922
sha256sums = 1733ec76f735788837833e7571b641fc64b56ec3176b93e9234fc0b5428ee6d8
sha256sums = 7052ba73bb07ea78873a2431ee4e828f4e72bda7d176d07f770fa48373dec537
b2sums = 05eb98f2fec0d15e63e8da2ca2e563d0b6fb7e29d639e66fc69074b7550939160e6f29121b80f2c64083625f2b13aa728221443b1f5adf2dd0fd92056ed9dc40
b2sums = f69e0b3edb7b8611f528a2e04104fe14b2fe8c799921be2d112dba744133813a19f90aa11d39f3f87a282e518003c7cc7966143d25e845f1f4489c461b22f661
b2sums = SKIP
b2sums = e7c3451a342cc648149375ce58697ae24273d47060e74ca2948d45ea8fe29b104f1daae4c91968fb6f37d41963d176987abf9ee21acfba0172a9b5d30300a72e
b2sums = e057a085bf7a9faceaa90b29555626d79e8c818e84a9424ade53dd21c512b2ea37dabb1d8ecccdf0f8fa69a4c6e7b66a6fe970b65baf1d368d6b9cc94ba532c7
b2sums = 1ecf007b82260710a7bf5048f47dd5d600c168824c02c595af654632326536a6527fbe0738670ee7b921dd85a70425108e0f471ba85a8e1ca47d294ad74b4adb
pkgname = vulkan-mesa-layers

View file

@ -25,7 +25,7 @@ pkgname=(
'mesa-vdpau'
'mesa'
)
pkgver=24.0.1
pkgver=24.0.2
pkgrel=1
epoch=1
pkgdesc="An open-source implementation of the OpenGL specification"
@ -82,13 +82,19 @@ makedepends=(
)
source=(
https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
radeon_bo_can_reclaim_slab.diff
vulkan-dispatch-table-add-an-uncompacted-version.patch
LICENSE
)
sha256sums=('f387192b08c471c545590dd12230a2a343244804b5fe866fec6aea02eab57613'
sha256sums=('94e28a8edad06d8ed2b83eb53f253b9eb5aa62c3080f939702e1b3039b56c9e8'
'SKIP'
'3fd1ad8cd29319502a6f80ecb96bb9a059e5de83a8b6e39f23de8d93921fd922'
'1733ec76f735788837833e7571b641fc64b56ec3176b93e9234fc0b5428ee6d8'
'7052ba73bb07ea78873a2431ee4e828f4e72bda7d176d07f770fa48373dec537')
b2sums=('05eb98f2fec0d15e63e8da2ca2e563d0b6fb7e29d639e66fc69074b7550939160e6f29121b80f2c64083625f2b13aa728221443b1f5adf2dd0fd92056ed9dc40'
b2sums=('f69e0b3edb7b8611f528a2e04104fe14b2fe8c799921be2d112dba744133813a19f90aa11d39f3f87a282e518003c7cc7966143d25e845f1f4489c461b22f661'
'SKIP'
'e7c3451a342cc648149375ce58697ae24273d47060e74ca2948d45ea8fe29b104f1daae4c91968fb6f37d41963d176987abf9ee21acfba0172a9b5d30300a72e'
'e057a085bf7a9faceaa90b29555626d79e8c818e84a9424ade53dd21c512b2ea37dabb1d8ecccdf0f8fa69a4c6e7b66a6fe970b65baf1d368d6b9cc94ba532c7'
'1ecf007b82260710a7bf5048f47dd5d600c168824c02c595af654632326536a6527fbe0738670ee7b921dd85a70425108e0f471ba85a8e1ca47d294ad74b4adb')
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l.velikov@gmail.com>
'946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez <tanty@igalia.com>
@ -100,6 +106,12 @@ validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l
prepare() {
cd mesa-$pkgver
# Proposed crash fix from https://gitlab.freedesktop.org/mesa/mesa/-/issues/10613#note_2290167
patch -Np1 -i ../radeon_bo_can_reclaim_slab.diff
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27834
patch -Np1 -i ../vulkan-dispatch-table-add-an-uncompacted-version.patch
# Include package release in version string so Chromium invalidates
# its GPU cache; otherwise it can cause pages to render incorrectly.
# https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/2020604

View file

@ -0,0 +1,13 @@
diff --git i/src/gallium/winsys/radeon/drm/radeon_drm_bo.c w/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
index 2e1d9c488e2..7979cad75fa 100644
--- i/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
+++ w/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
@@ -729,7 +729,7 @@ bool radeon_bo_can_reclaim_slab(void *priv, struct pb_slab_entry *entry)
{
struct radeon_bo *bo = container_of(entry, struct radeon_bo, u.slab.entry);
- return radeon_bo_can_reclaim(NULL, &bo->base);
+ return radeon_bo_can_reclaim(priv, &bo->base);
}
static void radeon_bo_slab_destroy(void *winsys, struct pb_buffer_lean *_buf)

View file

@ -0,0 +1,230 @@
From 5d91db9666ea61be549b2edc28d5ad4c34b34aab Mon Sep 17 00:00:00 2001
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Date: Tue, 27 Feb 2024 14:41:28 -0500
Subject: [PATCH 1/2] vulkan/dispatch_table: add an uncompacted version of the
table
this is a bandaid fix that allows users (zink) to actually call the
functions intended to be called. the real fix would be to figure out
which extensions are enabled on the device and then only GPA the
functions associated with those extensions
that's too hard though so I'm slapping some flex tape on it
cc: mesa-stable
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27834>
---
src/vulkan/util/vk_dispatch_table_gen.py | 109 +++++++++++++++++++++++
1 file changed, 109 insertions(+)
diff --git a/src/vulkan/util/vk_dispatch_table_gen.py b/src/vulkan/util/vk_dispatch_table_gen.py
index 2db977b25deff..7a3b459b37155 100644
--- a/src/vulkan/util/vk_dispatch_table_gen.py
+++ b/src/vulkan/util/vk_dispatch_table_gen.py
@@ -152,6 +152,62 @@ ${entrypoint_table('instance', instance_entrypoints)}
${entrypoint_table('physical_device', physical_device_entrypoints)}
${entrypoint_table('device', device_entrypoints)}
+<%def name="uncompacted_dispatch_table(entrypoints)">
+% for e in entrypoints:
+ % if e.alias:
+ <% continue %>
+ % endif
+ % if e.guard is not None:
+#ifdef ${e.guard}
+ % endif
+ PFN_vk${e.name} ${e.name};
+ % if e.aliases:
+ % for a in e.aliases:
+ PFN_vk${a.name} ${a.name};
+ % endfor
+ % endif
+ % if e.guard is not None:
+#else
+ PFN_vkVoidFunction ${e.name};
+ % if e.aliases:
+ % for a in e.aliases:
+ PFN_vkVoidFunction ${a.name};
+ % endfor
+ % endif
+#endif
+ % endif
+% endfor
+</%def>
+
+
+struct vk_instance_uncompacted_dispatch_table {
+ ${uncompacted_dispatch_table(instance_entrypoints)}
+};
+
+struct vk_physical_device_uncompacted_dispatch_table {
+ ${uncompacted_dispatch_table(physical_device_entrypoints)}
+};
+
+struct vk_device_uncompacted_dispatch_table {
+ ${uncompacted_dispatch_table(device_entrypoints)}
+};
+
+struct vk_uncompacted_dispatch_table {
+ union {
+ struct {
+ struct vk_instance_uncompacted_dispatch_table instance;
+ struct vk_physical_device_uncompacted_dispatch_table physical_device;
+ struct vk_device_uncompacted_dispatch_table device;
+ };
+
+ struct {
+ ${uncompacted_dispatch_table(instance_entrypoints)}
+ ${uncompacted_dispatch_table(physical_device_entrypoints)}
+ ${uncompacted_dispatch_table(device_entrypoints)}
+ };
+ };
+};
+
void
vk_instance_dispatch_table_load(struct vk_instance_dispatch_table *table,
PFN_vkGetInstanceProcAddr gpa,
@@ -165,6 +221,19 @@ vk_device_dispatch_table_load(struct vk_device_dispatch_table *table,
PFN_vkGetDeviceProcAddr gpa,
VkDevice device);
+void
+vk_instance_uncompacted_dispatch_table_load(struct vk_instance_uncompacted_dispatch_table *table,
+ PFN_vkGetInstanceProcAddr gpa,
+ VkInstance instance);
+void
+vk_physical_device_uncompacted_dispatch_table_load(struct vk_physical_device_uncompacted_dispatch_table *table,
+ PFN_vkGetInstanceProcAddr gpa,
+ VkInstance instance);
+void
+vk_device_uncompacted_dispatch_table_load(struct vk_device_uncompacted_dispatch_table *table,
+ PFN_vkGetDeviceProcAddr gpa,
+ VkDevice device);
+
void vk_instance_dispatch_table_from_entrypoints(
struct vk_instance_dispatch_table *dispatch_table,
const struct vk_instance_entrypoint_table *entrypoint_table,
@@ -267,6 +336,46 @@ ${load_dispatch_table('physical_device', 'VkInstance', 'GetInstanceProcAddr',
${load_dispatch_table('device', 'VkDevice', 'GetDeviceProcAddr',
device_entrypoints)}
+<%def name="load_uncompacted_dispatch_table(type, VkType, ProcAddr, entrypoints)">
+void
+vk_${type}_uncompacted_dispatch_table_load(struct vk_${type}_uncompacted_dispatch_table *table,
+ PFN_vk${ProcAddr} gpa,
+ ${VkType} obj)
+{
+% if type != 'physical_device':
+ table->${ProcAddr} = gpa;
+% endif
+% for e in entrypoints:
+ % if e.alias or e.name == '${ProcAddr}':
+ <% continue %>
+ % endif
+ % if e.guard is not None:
+#ifdef ${e.guard}
+ % endif
+ table->${e.name} = (PFN_vk${e.name}) gpa(obj, "vk${e.name}");
+ % for a in e.aliases:
+ table->${a.name} = (PFN_vk${a.name}) gpa(obj, "vk${a.name}");
+ if (table->${e.name} && !table->${a.name})
+ table->${a.name} = (PFN_vk${a.name}) table->${e.name};
+ if (!table->${e.name})
+ table->${e.name} = (PFN_vk${e.name}) table->${a.name};
+ % endfor
+ % if e.guard is not None:
+#endif
+ % endif
+% endfor
+}
+</%def>
+
+${load_uncompacted_dispatch_table('instance', 'VkInstance', 'GetInstanceProcAddr',
+ instance_entrypoints)}
+
+${load_uncompacted_dispatch_table('physical_device', 'VkInstance', 'GetInstanceProcAddr',
+ physical_device_entrypoints)}
+
+${load_uncompacted_dispatch_table('device', 'VkDevice', 'GetDeviceProcAddr',
+ device_entrypoints)}
+
struct string_map_entry {
uint32_t name;
--
GitLab
From d4f3770ea232e015e445b9d1fcab699119417fac Mon Sep 17 00:00:00 2001
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Date: Tue, 27 Feb 2024 16:20:48 -0500
Subject: [PATCH 2/2] zink: use uncompacted vk_dispatch_table
the dispatch table doesn't know which extensions zink wants to use,
so let zink use the extensions it wants to use
fixes #10513
cc: mesa-stable
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27834>
---
src/gallium/drivers/zink/zink_screen.c | 18 +++++++++---------
src/gallium/drivers/zink/zink_types.h | 2 +-
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 11e54a0054a09..035e742c98af7 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -3288,12 +3288,12 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
}
}
- vk_instance_dispatch_table_load(&screen->vk.instance,
- screen->vk_GetInstanceProcAddr,
- screen->instance);
- vk_physical_device_dispatch_table_load(&screen->vk.physical_device,
- screen->vk_GetInstanceProcAddr,
- screen->instance);
+ vk_instance_uncompacted_dispatch_table_load(&screen->vk.instance,
+ screen->vk_GetInstanceProcAddr,
+ screen->instance);
+ vk_physical_device_uncompacted_dispatch_table_load(&screen->vk.physical_device,
+ screen->vk_GetInstanceProcAddr,
+ screen->instance);
zink_verify_instance_extensions(screen);
@@ -3390,9 +3390,9 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
if (!screen->dev)
goto fail;
- vk_device_dispatch_table_load(&screen->vk.device,
- screen->vk_GetDeviceProcAddr,
- screen->dev);
+ vk_device_uncompacted_dispatch_table_load(&screen->vk.device,
+ screen->vk_GetDeviceProcAddr,
+ screen->dev);
init_queue(screen);
diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h
index bc668b60d8e64..ddfb2532c8432 100644
--- a/src/gallium/drivers/zink/zink_types.h
+++ b/src/gallium/drivers/zink/zink_types.h
@@ -1523,7 +1523,7 @@ struct zink_screen {
bool renderdoc_capture_all;
#endif
- struct vk_dispatch_table vk;
+ struct vk_uncompacted_dispatch_table vk;
void (*buffer_barrier)(struct zink_context *ctx, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline);
void (*image_barrier)(struct zink_context *ctx, struct zink_resource *res, VkImageLayout new_layout, VkAccessFlags flags, VkPipelineStageFlags pipeline);
--
GitLab