extra/mesa to 24.0.3-1

This commit is contained in:
Kevin Mihelich 2024-03-15 01:02:40 +00:00
parent d85a2b9d9c
commit 1d3ea9ffbb
3 changed files with 10 additions and 249 deletions

View file

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

View file

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

View file

@ -1,230 +0,0 @@
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