AlmaLinux changes: Enable vc4 and v3d for Raspberry Pi graphics in AlmaLinux (Resolves: https://github.com/AlmaLinux/raspberry-pi/issues/32)
Add LLVM 21 support for gallivm (riscv64)
This commit is contained in:
commit
3be02ab580
@ -1,59 +0,0 @@
|
||||
From 102d282d8add081f5f1aab35974218f151744ac5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jose.exposito89@gmail.com>
|
||||
Date: Mon, 23 Feb 2026 08:40:07 +0100
|
||||
Subject: [PATCH] Revert "dri: fix __DRI_IMAGE_FORMAT* to PIPE_FORMAT*
|
||||
mappings"
|
||||
|
||||
This reverts commit 2ae8d0362bec12e84f787f226d2ba7a18130084f.
|
||||
---
|
||||
src/loader/loader_dri_helper.h | 18 ++++++++++--------
|
||||
1 file changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/loader/loader_dri_helper.h b/src/loader/loader_dri_helper.h
|
||||
index 169e36b5d80..0d801e99648 100644
|
||||
--- a/src/loader/loader_dri_helper.h
|
||||
+++ b/src/loader/loader_dri_helper.h
|
||||
@@ -61,8 +61,10 @@ struct loader_screen_resources {
|
||||
|
||||
|
||||
/**
|
||||
- * These formats are endian independent they result in the same layout
|
||||
- * regradless of a big or little endian cpu.
|
||||
+ * These formats correspond to the similarly named MESA_FORMAT_*
|
||||
+ * tokens, except in the native endian of the CPU. For example, on
|
||||
+ * little endian __DRI_IMAGE_FORMAT_XRGB8888 corresponds to
|
||||
+ * MESA_FORMAT_XRGB8888, but MESA_FORMAT_XRGB8888_REV on big endian.
|
||||
*
|
||||
* __DRI_IMAGE_FORMAT_NONE is for images that aren't directly usable
|
||||
* by the driver (YUV planar formats) but serve as a base image for
|
||||
@@ -73,21 +75,21 @@ struct loader_screen_resources {
|
||||
* createImageFromNames (NONE, see above) and fromPlane (R8 & GR88).
|
||||
*/
|
||||
#define __DRI_IMAGE_FORMAT_RGB565 PIPE_FORMAT_B5G6R5_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_XRGB8888 PIPE_FORMAT_B8G8R8X8_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_ARGB8888 PIPE_FORMAT_B8G8R8A8_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_ABGR8888 PIPE_FORMAT_R8G8B8A8_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_XBGR8888 PIPE_FORMAT_R8G8B8X8_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_XRGB8888 PIPE_FORMAT_BGRX8888_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_ARGB8888 PIPE_FORMAT_BGRA8888_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_ABGR8888 PIPE_FORMAT_RGBA8888_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_XBGR8888 PIPE_FORMAT_RGBX8888_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_RGB888 PIPE_FORMAT_B8G8R8_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_BGR888 PIPE_FORMAT_R8G8B8_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_R8 PIPE_FORMAT_R8_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_GR88 PIPE_FORMAT_R8G8_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_GR88 PIPE_FORMAT_RG88_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_NONE PIPE_FORMAT_NONE
|
||||
#define __DRI_IMAGE_FORMAT_XRGB2101010 PIPE_FORMAT_B10G10R10X2_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_ARGB2101010 PIPE_FORMAT_B10G10R10A2_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_SARGB8 PIPE_FORMAT_BGRA8888_SRGB
|
||||
#define __DRI_IMAGE_FORMAT_ARGB1555 PIPE_FORMAT_B5G5R5A1_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_R16 PIPE_FORMAT_R16_UNORM
|
||||
-#define __DRI_IMAGE_FORMAT_GR1616 PIPE_FORMAT_R16G16_UNORM
|
||||
+#define __DRI_IMAGE_FORMAT_GR1616 PIPE_FORMAT_RG1616_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_XBGR2101010 PIPE_FORMAT_R10G10B10X2_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_ABGR2101010 PIPE_FORMAT_R10G10B10A2_UNORM
|
||||
#define __DRI_IMAGE_FORMAT_SABGR8 PIPE_FORMAT_RGBA8888_SRGB
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@ -1,149 +0,0 @@
|
||||
From b0158d174d297276397b21a6657ea0ef14652183 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Wed, 5 Nov 2025 11:01:05 +1000
|
||||
Subject: [PATCH 1/2] device-select: add a layer setting to disable device
|
||||
selection logic
|
||||
|
||||
There are cases like zink where we have a file descriptors we are searching
|
||||
for devices for, so we don't need device selecting reordering, we just want
|
||||
the fastest path to get the devices so we can match them.
|
||||
|
||||
This also helps avoid some cases of deadlock inside compositors where
|
||||
zink/vulkan initialises later and tries to connect to the compositor.
|
||||
|
||||
This uses a VK_EXT_layer_setting to add a bypass setting.
|
||||
---
|
||||
.../VkLayer_MESA_device_select.json.in | 6 +++
|
||||
.../device-select-layer/device_select_layer.c | 53 +++++++++++++++----
|
||||
2 files changed, 48 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/vulkan/device-select-layer/VkLayer_MESA_device_select.json.in b/src/vulkan/device-select-layer/VkLayer_MESA_device_select.json.in
|
||||
index 40d6ea8cd8b..1623381a81a 100644
|
||||
--- a/src/vulkan/device-select-layer/VkLayer_MESA_device_select.json.in
|
||||
+++ b/src/vulkan/device-select-layer/VkLayer_MESA_device_select.json.in
|
||||
@@ -7,6 +7,12 @@
|
||||
"api_version": "1.4.303",
|
||||
"implementation_version": "1",
|
||||
"description": "Linux device selection layer",
|
||||
+ "instance_extensions": [
|
||||
+ {
|
||||
+ "name": "VK_EXT_layer_settings",
|
||||
+ "spec_version": "2"
|
||||
+ }
|
||||
+ ],
|
||||
"functions": {
|
||||
"vkNegotiateLoaderLayerInterfaceVersion": "vkNegotiateLoaderLayerInterfaceVersion"
|
||||
},
|
||||
diff --git a/src/vulkan/device-select-layer/device_select_layer.c b/src/vulkan/device-select-layer/device_select_layer.c
|
||||
index 19cfc556f54..c03938b82c0 100644
|
||||
--- a/src/vulkan/device-select-layer/device_select_layer.c
|
||||
+++ b/src/vulkan/device-select-layer/device_select_layer.c
|
||||
@@ -54,7 +54,9 @@ struct instance_info {
|
||||
PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
|
||||
bool has_pci_bus, has_vulkan11;
|
||||
bool has_wayland, has_xcb;
|
||||
- bool zink, xwayland, xserver;
|
||||
+ bool xserver;
|
||||
+ /* don't do device selection */
|
||||
+ bool bypass_device_select;
|
||||
};
|
||||
|
||||
static struct hash_table *device_select_instance_ht = NULL;
|
||||
@@ -118,10 +120,34 @@ static VkResult device_select_CreateInstance(const VkInstanceCreateInfo *pCreate
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkInstance *pInstance)
|
||||
{
|
||||
- VkLayerInstanceCreateInfo *chain_info;
|
||||
- for(chain_info = (VkLayerInstanceCreateInfo*)pCreateInfo->pNext; chain_info; chain_info = (VkLayerInstanceCreateInfo*)chain_info->pNext)
|
||||
- if(chain_info->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO && chain_info->function == VK_LAYER_LINK_INFO)
|
||||
+ VkLayerInstanceCreateInfo *chain_info = NULL;
|
||||
+ bool bypass_device_select = false;
|
||||
+ vk_foreach_struct_const(s, pCreateInfo->pNext) {
|
||||
+ switch (s->sType) {
|
||||
+ case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: {
|
||||
+ const VkLayerInstanceCreateInfo *this_info = (const void *)s;
|
||||
+ if (this_info->function == VK_LAYER_LINK_INFO)
|
||||
+ chain_info = (VkLayerInstanceCreateInfo *)this_info; /* loses const */
|
||||
break;
|
||||
+ }
|
||||
+ case VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT: {
|
||||
+ const VkLayerSettingsCreateInfoEXT *lsci = (const void *)s;
|
||||
+ for (unsigned i = 0; i < lsci->settingCount; i++) {
|
||||
+ const VkLayerSettingEXT *ls = &lsci->pSettings[i];
|
||||
+ if (!strcmp(ls->pLayerName, "MESA_device_select")) {
|
||||
+ if (!strcmp(ls->pSettingName, "no_device_select")) {
|
||||
+ assert(ls->type == VK_LAYER_SETTING_TYPE_BOOL32_EXT);
|
||||
+ uint32_t *values = (uint32_t *)ls->pValues;
|
||||
+ bypass_device_select = values[0];
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
assert(chain_info->u.pLayerInfo);
|
||||
|
||||
@@ -140,10 +166,10 @@ static VkResult device_select_CreateInstance(const VkInstanceCreateInfo *pCreate
|
||||
return result;
|
||||
}
|
||||
|
||||
+ bool zink = !strcmp(engineName, "mesa zink");
|
||||
+ bool xwayland = !strcmp(applicationName, "Xwayland");
|
||||
struct instance_info *info = (struct instance_info *)calloc(1, sizeof(struct instance_info));
|
||||
info->GetInstanceProcAddr = GetInstanceProcAddr;
|
||||
- info->zink = !strcmp(engineName, "mesa zink");
|
||||
- info->xwayland = !strcmp(applicationName, "Xwayland");
|
||||
info->xserver = !strcmp(applicationName, "Xorg") || !strcmp(applicationName, "Xephyr");
|
||||
|
||||
bool has_wayland = getenv("WAYLAND_DISPLAY") || getenv("WAYLAND_SOCKET");
|
||||
@@ -155,16 +181,20 @@ static VkResult device_select_CreateInstance(const VkInstanceCreateInfo *pCreate
|
||||
info->has_wayland = true;
|
||||
#endif
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
- if (!strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XCB_SURFACE_EXTENSION_NAME) && has_xcb)
|
||||
- info->has_xcb = !info->xserver || !info->zink;
|
||||
+ if (!strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XCB_SURFACE_EXTENSION_NAME) &&
|
||||
+ has_xcb)
|
||||
+ info->has_xcb = !info->xserver || !zink;
|
||||
#endif
|
||||
}
|
||||
|
||||
+ if (zink && xwayland)
|
||||
+ bypass_device_select = true;
|
||||
/*
|
||||
* The loader is currently not able to handle GetPhysicalDeviceProperties2KHR calls in
|
||||
* EnumeratePhysicalDevices when there are other layers present. To avoid mysterious crashes
|
||||
* for users just use only the vulkan version for now.
|
||||
*/
|
||||
+ info->bypass_device_select = bypass_device_select;
|
||||
info->has_vulkan11 = pCreateInfo->pApplicationInfo &&
|
||||
pCreateInfo->pApplicationInfo->apiVersion >= VK_MAKE_VERSION(1, 1, 0);
|
||||
|
||||
@@ -558,7 +588,7 @@ static VkResult device_select_EnumeratePhysicalDevices(VkInstance instance,
|
||||
uint32_t selected_physical_device_count = 0;
|
||||
const char* selection = getenv("MESA_VK_DEVICE_SELECT");
|
||||
bool expose_only_one_dev = false;
|
||||
- if (info->zink && info->xwayland)
|
||||
+ if (info->bypass_device_select)
|
||||
return info->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
|
||||
VkResult result = info->EnumeratePhysicalDevices(instance, &physical_device_count, NULL);
|
||||
VK_OUTARRAY_MAKE_TYPED(VkPhysicalDevice, out, pPhysicalDevices, pPhysicalDeviceCount);
|
||||
@@ -643,8 +673,9 @@ static VkResult device_select_EnumeratePhysicalDeviceGroups(VkInstance instance,
|
||||
struct instance_info *info = device_select_layer_get_instance(instance);
|
||||
uint32_t physical_device_group_count = 0;
|
||||
uint32_t selected_physical_device_group_count = 0;
|
||||
- if (info->zink && info->xwayland)
|
||||
- return info->EnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroups);
|
||||
+ if (info->bypass_device_select)
|
||||
+ return info->EnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount,
|
||||
+ pPhysicalDeviceGroups);
|
||||
VkResult result = info->EnumeratePhysicalDeviceGroups(instance, &physical_device_group_count, NULL);
|
||||
VK_OUTARRAY_MAKE_TYPED(VkPhysicalDeviceGroupProperties, out, pPhysicalDeviceGroups, pPhysicalDeviceGroupCount);
|
||||
|
||||
--
|
||||
2.51.1
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
From c016346b50e9085b531f9bcbd7cfd63d3806a3e1 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Wed, 11 Feb 2026 05:47:57 +1000
|
||||
Subject: [PATCH] gallivm: handle u16 correct on const loads.
|
||||
|
||||
I somehow screwed this up on my previous attempt at fixing this bug,
|
||||
|
||||
This should fix the loop limiter bug on big endian properly.
|
||||
|
||||
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
|
||||
Cc: mesa-stable
|
||||
Fixes: e28cfb2bada2 ("gallivm: handle u8/u16 const loads properly on big-endian.")
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39813>
|
||||
---
|
||||
src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
|
||||
index 770f1cc6592..e755225dce9 100644
|
||||
--- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
|
||||
+++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c
|
||||
@@ -1269,10 +1269,7 @@ emit_load_const(struct lp_build_nir_soa_context *bld,
|
||||
|
||||
for (unsigned i = 0; i < instr->def.num_components; i++) {
|
||||
outval[i] = lp_build_const_int_vec(bld->base.gallivm, int_bld->type,
|
||||
- bits == 8 ? instr->value[i].u8 :
|
||||
- bits == 16 ? instr->value[i].u32 :
|
||||
- bits == 32 ? instr->value[i].u32 :
|
||||
- instr->value[i].u64);
|
||||
+ nir_const_value_as_uint(instr->value[i], bits));
|
||||
}
|
||||
for (unsigned i = instr->def.num_components; i < NIR_MAX_VEC_COMPONENTS; i++) {
|
||||
outval[i] = NULL;
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@ -1,106 +0,0 @@
|
||||
From 30c754624ab73b180c66658701814ec5e3d12a31 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Wed, 5 Nov 2025 11:02:26 +1000
|
||||
Subject: [PATCH 2/2] zink: use device select layer settings to disable device
|
||||
selection
|
||||
|
||||
In the case where we have a device that we want to choose after
|
||||
probing, there is no point in asking the device select layer to do
|
||||
any reordering at all.
|
||||
|
||||
This helps avoid a deadlock inside compositors where we don't need
|
||||
device selection anyways.
|
||||
---
|
||||
src/gallium/drivers/zink/zink_instance.py | 18 ++++++++++++++++++
|
||||
src/gallium/drivers/zink/zink_screen.c | 9 ++++++++-
|
||||
2 files changed, 26 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_instance.py b/src/gallium/drivers/zink/zink_instance.py
|
||||
index 1ab36bee2ca..c0e813be164 100644
|
||||
--- a/src/gallium/drivers/zink/zink_instance.py
|
||||
+++ b/src/gallium/drivers/zink/zink_instance.py
|
||||
@@ -37,6 +37,7 @@ import platform
|
||||
# - nonstandard: Disables validation (cross-checking with vk.xml) if True.
|
||||
EXTENSIONS = [
|
||||
Extension("VK_EXT_debug_utils"),
|
||||
+ Extension("VK_EXT_layer_settings"),
|
||||
Extension("VK_KHR_get_physical_device_properties2"),
|
||||
Extension("VK_KHR_external_memory_capabilities"),
|
||||
Extension("VK_KHR_external_semaphore_capabilities"),
|
||||
@@ -62,8 +63,10 @@ LAYERS = [
|
||||
conditions=["zink_debug & ZINK_DEBUG_VALIDATION"]),
|
||||
Layer("VK_LAYER_LUNARG_standard_validation",
|
||||
conditions=["zink_debug & ZINK_DEBUG_VALIDATION", "!have_layer_KHRONOS_validation"]),
|
||||
+ Layer("VK_LAYER_MESA_device_select")
|
||||
]
|
||||
|
||||
+
|
||||
REPLACEMENTS = {
|
||||
"VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES2_EXTENSION_NAME" : "VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"
|
||||
}
|
||||
@@ -87,6 +90,7 @@ struct zink_screen;
|
||||
|
||||
struct zink_instance_info {
|
||||
uint32_t loader_version;
|
||||
+ bool no_device_select;
|
||||
|
||||
%for ext in extensions:
|
||||
bool have_${ext.name_with_vendor()};
|
||||
@@ -261,6 +265,20 @@ zink_create_instance(struct zink_screen *screen, struct zink_instance_info *inst
|
||||
ici.ppEnabledLayerNames = layers;
|
||||
ici.enabledLayerCount = num_layers;
|
||||
|
||||
+ VkLayerSettingEXT ds_layer = {0};
|
||||
+ VkLayerSettingsCreateInfoEXT lsci = {0};
|
||||
+ uint32_t no_device_select_value = instance_info->no_device_select;
|
||||
+ if (have_EXT_layer_settings && have_layer_MESA_device_select) {
|
||||
+ ds_layer.pLayerName = "MESA_device_select";
|
||||
+ ds_layer.pSettingName = "no_device_select";
|
||||
+ ds_layer.type = VK_LAYER_SETTING_TYPE_BOOL32_EXT;
|
||||
+ ds_layer.valueCount = 1;
|
||||
+ ds_layer.pValues = &no_device_select_value;
|
||||
+ lsci.sType = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT;
|
||||
+ lsci.settingCount = 1;
|
||||
+ lsci.pSettings = &ds_layer;
|
||||
+ ici.pNext = &lsci;
|
||||
+ }
|
||||
GET_PROC_ADDR_INSTANCE_LOCAL(screen, NULL, CreateInstance);
|
||||
assert(vk_CreateInstance);
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
|
||||
index 7ec86d0090a..34eee2ba113 100644
|
||||
--- a/src/gallium/drivers/zink/zink_screen.c
|
||||
+++ b/src/gallium/drivers/zink/zink_screen.c
|
||||
@@ -1576,6 +1576,12 @@ zink_destroy_screen(struct pipe_screen *pscreen)
|
||||
glsl_type_singleton_decref();
|
||||
}
|
||||
|
||||
+static bool
|
||||
+zink_picks_device(int dev_major, uint64_t adapter_luid)
|
||||
+{
|
||||
+ return (dev_major > 0 && dev_major < 255) || adapter_luid;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
zink_get_display_device(const struct zink_screen *screen, uint32_t pdev_count,
|
||||
const VkPhysicalDevice *pdevs, int64_t dev_major,
|
||||
@@ -1647,7 +1653,7 @@ choose_pdev(struct zink_screen *screen, int64_t dev_major, int64_t dev_minor, ui
|
||||
bool cpu = debug_get_bool_option("LIBGL_ALWAYS_SOFTWARE", false) ||
|
||||
debug_get_bool_option("D3D_ALWAYS_SOFTWARE", false);
|
||||
|
||||
- if (cpu || (dev_major > 0 && dev_major < 255) || adapter_luid) {
|
||||
+ if (cpu || zink_picks_device(dev_major, adapter_luid)) {
|
||||
uint32_t pdev_count;
|
||||
int idx;
|
||||
VkPhysicalDevice *pdevs;
|
||||
@@ -3309,6 +3315,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
simple_mtx_lock(&instance_lock);
|
||||
if (++instance_refcount == 1) {
|
||||
instance_info.loader_version = zink_get_loader_version(screen);
|
||||
+ instance_info.no_device_select = zink_picks_device(dev_major, adapter_luid);
|
||||
instance = zink_create_instance(screen, &instance_info);
|
||||
}
|
||||
if (!instance) {
|
||||
--
|
||||
2.51.1
|
||||
|
||||
78
mesa.spec
78
mesa.spec
@ -1,9 +1,9 @@
|
||||
%ifnarch s390x
|
||||
%global with_hardware 1
|
||||
%global with_kmsro 1
|
||||
%global with_radeonsi 1
|
||||
%global with_vmware 1
|
||||
%global with_vulkan_hw 1
|
||||
%global with_vdpau 1
|
||||
%if !0%{?rhel}
|
||||
%global with_r300 1
|
||||
%global with_r600 1
|
||||
@ -55,12 +55,11 @@
|
||||
%global with_v3d 1
|
||||
%endif
|
||||
%global with_freedreno 1
|
||||
%global with_kmsro 1
|
||||
%global with_panfrost 1
|
||||
%if 0%{?with_asahi}
|
||||
%global asahi_platform_vulkan %{?with_vulkan_hw:,asahi}%{!?with_vulkan_hw:%{nil}}
|
||||
%endif
|
||||
%global extra_platform_vulkan %{?with_vulkan_hw:,broadcom,freedreno,panfrost,imagination-experimental}%{!?with_vulkan_hw:%{nil}}
|
||||
%global extra_platform_vulkan %{?with_vulkan_hw:,broadcom,freedreno,panfrost,imagination}%{!?with_vulkan_hw:%{nil}}
|
||||
%endif
|
||||
|
||||
%if !0%{?rhel}
|
||||
@ -88,7 +87,7 @@
|
||||
|
||||
Name: mesa
|
||||
Summary: Mesa graphics libraries
|
||||
%global ver 25.2.7
|
||||
%global ver 26.1.1
|
||||
Version: %{gsub %ver - ~}
|
||||
Release: %autorelease
|
||||
License: MIT AND BSD-3-Clause AND SGI-B-2.0
|
||||
@ -107,7 +106,7 @@ Source2: https://github.com/mesonbuild/meson/releases/download/%{meson_ver}/meso
|
||||
|
||||
# libclc is not available in RHEL but it is required for Intel drivers since
|
||||
# mesa >= 24.1.0
|
||||
%global libclc_version 21.1.3
|
||||
%global libclc_version 21.1.8
|
||||
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libclc_version}/libclc-%{libclc_version}.src.tar.xz
|
||||
BuildRequires: libedit-devel
|
||||
BuildRequires: clang-devel >= %{libclc_version}
|
||||
@ -115,8 +114,8 @@ BuildRequires: clang-devel >= %{libclc_version}
|
||||
# BuildRequires: spirv-llvm-translator-tools
|
||||
|
||||
# spirv-llvm-translator is a dependency of libclc
|
||||
%global spirv_llvm_trans_ver 21.1.2
|
||||
%global spirv_llvm_trans_commit a37544fc0bb90b4e8b8d755580119c018891dfa4
|
||||
%global spirv_llvm_trans_ver 22.1.1
|
||||
%global spirv_llvm_trans_commit 114f5ee1cec66fe2ca733c12770c1bc196675d32
|
||||
%global spirv_llvm_trans_shortcommit %(c=%{spirv_llvm_trans_commit}; echo ${c:0:7})
|
||||
Source4: https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/%{spirv_llvm_trans_commit}/spirv-llvm-translator-%{spirv_llvm_trans_shortcommit}.tar.gz
|
||||
BuildRequires: cmake
|
||||
@ -131,10 +130,10 @@ BuildRequires: zlib-devel
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/subprojects
|
||||
# but we generally want the latest compatible versions
|
||||
%global rust_paste_ver 1.0.15
|
||||
%global rust_proc_macro2_ver 1.0.101
|
||||
%global rust_quote_ver 1.0.40
|
||||
%global rust_syn_ver 2.0.106
|
||||
%global rust_unicode_ident_ver 1.0.18
|
||||
%global rust_proc_macro2_ver 1.0.106
|
||||
%global rust_quote_ver 1.0.44
|
||||
%global rust_syn_ver 2.0.115
|
||||
%global rust_unicode_ident_ver 1.0.23
|
||||
%global rustc_hash_ver 2.1.1
|
||||
Source10: https://crates.io/api/v1/crates/paste/%{rust_paste_ver}/download#/paste-%{rust_paste_ver}.tar.gz
|
||||
Source11: https://crates.io/api/v1/crates/proc-macro2/%{rust_proc_macro2_ver}/download#/proc-macro2-%{rust_proc_macro2_ver}.tar.gz
|
||||
@ -143,16 +142,6 @@ Source13: https://crates.io/api/v1/crates/syn/%{rust_syn_ver}/download#/sy
|
||||
Source14: https://crates.io/api/v1/crates/unicode-ident/%{rust_unicode_ident_ver}/download#/unicode-ident-%{rust_unicode_ident_ver}.tar.gz
|
||||
Source15: https://crates.io/api/v1/crates/rustc-hash/%{rustc_hash_ver}/download#/rustc-hash-%{rustc_hash_ver}.tar.gz
|
||||
|
||||
|
||||
# fix zink/device-select bug
|
||||
Patch11: 0001-device-select-add-a-layer-setting-to-disable-device-.patch
|
||||
Patch12: 0002-zink-use-device-select-layer-settings-to-disable-dev.patch
|
||||
|
||||
# Fix s390x regressions:
|
||||
# https://issues.redhat.com/browse/RHEL-144813
|
||||
Patch13: 0001-gallivm-handle-u16-correct-on-const-loads.patch
|
||||
Patch14: 0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch
|
||||
|
||||
# AlmaLinux Patch
|
||||
Patch1001: cd129dbf8af2d16b1243f2ce287ff69c6a5dc557.patch
|
||||
|
||||
@ -179,6 +168,7 @@ BuildRequires: pkgconfig(wayland-protocols) >= 1.34
|
||||
BuildRequires: pkgconfig(wayland-client) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-server) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-egl-backend) >= 3
|
||||
BuildRequires: pkgconfig(libdisplay-info)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xdamage) >= 1.1
|
||||
@ -202,9 +192,6 @@ BuildRequires: flex
|
||||
%if 0%{?with_lmsensors}
|
||||
BuildRequires: lm_sensors-devel
|
||||
%endif
|
||||
%if 0%{?with_vdpau}
|
||||
BuildRequires: pkgconfig(vdpau) >= 1.1
|
||||
%endif
|
||||
%if 0%{?with_va}
|
||||
BuildRequires: pkgconfig(libva) >= 0.38.0
|
||||
%endif
|
||||
@ -259,6 +246,7 @@ Provides: mesa-dri-filesystem = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: mesa-omx-drivers < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: mesa-libd3d < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: mesa-libd3d-devel < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: mesa-vdpau-drivers < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description filesystem
|
||||
%{summary}.
|
||||
@ -326,15 +314,6 @@ Obsoletes: %{name}-vaapi-drivers < 22.2.0-5
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_vdpau}
|
||||
%package vdpau-drivers
|
||||
Summary: Mesa-based VDPAU drivers
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description vdpau-drivers
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%package libgbm
|
||||
Summary: Mesa gbm runtime library
|
||||
Provides: libgbm
|
||||
@ -441,9 +420,9 @@ path = "src/nouveau/nil/lib.rs"
|
||||
|
||||
# only direct dependencies need to be listed here
|
||||
[dependencies]
|
||||
paste = "$(grep ^directory subprojects/paste.wrap | sed 's|.*-||')"
|
||||
syn = { version = "$(grep ^directory subprojects/syn.wrap | sed 's|.*-||')", features = ["clone-impls"] }
|
||||
rustc-hash = "$(grep ^directory subprojects/rustc-hash.wrap | sed 's|.*-||')"
|
||||
paste = "$(grep ^directory subprojects/paste*.wrap | sed 's|.*-||')"
|
||||
syn = { version = "$(grep ^directory subprojects/syn*.wrap | sed 's|.*-||')", features = ["clone-impls"] }
|
||||
rustc-hash = "$(grep ^directory subprojects/rustc-hash*.wrap | sed 's|.*-||')"
|
||||
_EOF
|
||||
%if 0%{?vendor_nvk_crates}
|
||||
%cargo_prep -v subprojects/packagecache
|
||||
@ -514,7 +493,7 @@ export RUSTFLAGS="%build_rustflags"
|
||||
export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/"
|
||||
%endif
|
||||
rewrite_wrap_file() {
|
||||
sed -e "/source.*/d" -e "s/${1}-.*/$(basename ${MESON_PACKAGE_CACHE_DIR:-subprojects/packagecache}/${1}-*)/" -i subprojects/${1}.wrap
|
||||
sed -e "/source.*/d" -e "s/^directory = ${1}-.*/directory = $(basename ${MESON_PACKAGE_CACHE_DIR:-subprojects/packagecache}/${1}-*)/" -i subprojects/${1}*.wrap
|
||||
}
|
||||
|
||||
rewrite_wrap_file proc-macro2
|
||||
@ -532,7 +511,6 @@ rewrite_wrap_file rustc-hash
|
||||
%else
|
||||
-Dgallium-drivers=llvmpipe,virgl \
|
||||
%endif
|
||||
-Dgallium-vdpau=%{?with_vdpau:enabled}%{!?with_vdpau:disabled} \
|
||||
-Dgallium-va=%{?with_va:enabled}%{!?with_va:disabled} \
|
||||
-Dgallium-mediafoundation=disabled \
|
||||
-Dteflon=%{?with_teflon:true}%{!?with_teflon:false} \
|
||||
@ -604,9 +582,6 @@ rm -f %{buildroot}%{_libdir}/libLLVMSPIRVLib.so
|
||||
rm -f %{buildroot}%{_libdir}/libLLVMSPIRVLib.so.*
|
||||
rm -f %{buildroot}%{_libdir}/pkgconfig/LLVMSPIRVLib.pc
|
||||
|
||||
# libvdpau opens the versioned name, don't bother including the unversioned
|
||||
rm -vf %{buildroot}%{_libdir}/vdpau/*.so
|
||||
|
||||
# likewise glvnd
|
||||
rm -vf %{buildroot}%{_libdir}/libGLX_mesa.so
|
||||
rm -vf %{buildroot}%{_libdir}/libEGL_mesa.so
|
||||
@ -621,7 +596,7 @@ rm -vf %{buildroot}%{_libdir}/dri/apple_dri.so
|
||||
|
||||
# glvnd needs a default provider for indirect rendering where it cannot
|
||||
# determine the vendor
|
||||
ln -s %{_libdir}/libGLX_mesa.so.0 %{buildroot}%{_libdir}/libGLX_system.so.0
|
||||
ln -s libGLX_mesa.so.0 %{buildroot}%{_libdir}/libGLX_system.so.0
|
||||
|
||||
# this keeps breaking, check it early. note that the exit from eu-ftr is odd.
|
||||
pushd %{buildroot}%{_libdir}
|
||||
@ -701,7 +676,7 @@ popd
|
||||
%{_libdir}/dri/i915_dri.so
|
||||
%endif
|
||||
%endif
|
||||
%ifarch aarch64 x86_64 %{ix86}
|
||||
%ifnarch s390x
|
||||
%if 0%{?with_asahi}
|
||||
%{_libdir}/dri/apple_dri.so
|
||||
%{_libdir}/dri/asahi_dri.so
|
||||
@ -795,22 +770,6 @@ popd
|
||||
%{_libdir}/dri/virtio_gpu_drv_video.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_vdpau}
|
||||
%files vdpau-drivers
|
||||
%dir %{_libdir}/vdpau
|
||||
%{_libdir}/vdpau/libvdpau_nouveau.so.1*
|
||||
%if 0%{?with_r600}
|
||||
%{_libdir}/vdpau/libvdpau_r600.so.1*
|
||||
%endif
|
||||
%if 0%{?with_radeonsi}
|
||||
%{_libdir}/vdpau/libvdpau_radeonsi.so.1*
|
||||
%endif
|
||||
%if 0%{?with_d3d12}
|
||||
%{_libdir}/vdpau/libvdpau_d3d12.so.1*
|
||||
%endif
|
||||
%{_libdir}/vdpau/libvdpau_virtio_gpu.so.1*
|
||||
%endif
|
||||
|
||||
%if 0%{?with_d3d12}
|
||||
%files dxil-devel
|
||||
%{_bindir}/spirv2dxil
|
||||
@ -862,7 +821,6 @@ popd
|
||||
%{_datadir}/vulkan/icd.d/freedreno_icd.*.json
|
||||
%{_libdir}/libvulkan_panfrost.so
|
||||
%{_datadir}/vulkan/icd.d/panfrost_icd.*.json
|
||||
%{_libdir}/libpowervr_rogue.so
|
||||
%{_libdir}/libvulkan_powervr_mesa.so
|
||||
%{_datadir}/vulkan/icd.d/powervr_mesa_icd.*.json
|
||||
%endif
|
||||
|
||||
14
sources
14
sources
@ -1,10 +1,10 @@
|
||||
SHA512 (libclc-21.1.3.src.tar.xz) = daf38b915bcc8065c56a581ccbca90ccc0d41a54489392a2ae6ec3e0a8782ea231bc6edb9624cd879d698074017ee3c1d2b038e388cb75ea08a80ee3e27a57d1
|
||||
SHA512 (mesa-25.2.7.tar.xz) = 87dd815e0d11d6ec0eb969ee93d3f376103bb899d90599e0b7902394e41c58139384df79f89633e132ca969348d3320f55308a74651d409b454d51f1bcda27bc
|
||||
SHA512 (libclc-21.1.8.src.tar.xz) = 920302f31833386cf7ebe995fc5578a764c99a6432ea58d94b55e84b7c0304275010d757a5c1cea76ee5cd73564bf4737960ab249995c5021b3dc4cc4c255922
|
||||
SHA512 (mesa-26.1.1.tar.xz) = 384a7db33d2f06e287337329f2f17503082ba6b1cd876a1884e940fdb6193ffae6d6b14344625256f3b3b39972ad697130a4d2ea25c40979f7aa76c2176f7988
|
||||
SHA512 (meson-1.7.0.tar.gz) = a5d1f00b193ca37ae64f85c9dfc29a2661c167d82d9953b9acd1393b222b05fa5fc03ffdf00fd1ae7a2014da3a7366c35f70bf02e3204e929b74f7b00c17c840
|
||||
SHA512 (paste-1.0.15.tar.gz) = 5026d3ec7141ec4e2517a0b1283912d0801e9356f77b703d954b379439b8d85e3886d42fb28f7835edaeeac465582da14233564fb010c71425a59c9e1cbd46b4
|
||||
SHA512 (proc-macro2-1.0.101.tar.gz) = 3171c807d24371da2931f9c706fb3129bb9bf3ac40418e5d14cfc372baf96e5fee9ede72091163858e3ba0b4f88594efa1031b0bb7128ca68e7b847dead6856c
|
||||
SHA512 (quote-1.0.40.tar.gz) = 45a76e22a2b0bec47e4ba73c3b73cc41d821dfcce9876134c5d8eed514da214aee4ce7612e372c8709f888c0d8b9b7e5442f27adb7a59f3571f0339ed7e2ac99
|
||||
SHA512 (proc-macro2-1.0.106.tar.gz) = b726e2c92af434bfa88cd4f53c3fe6db647503567675fb439890dee3d15f5111137e3242b28d164114ce081c10acf3fd11950753ddb349190c87ee04e7d97744
|
||||
SHA512 (quote-1.0.44.tar.gz) = 6c1e9b31e0c8bd13cd865e6846dc243d88f2c057adeb8e674117bdcb46947219a6a352a6a50be1132c483f55331e6556275ac514513dbf017825c64e5d96010d
|
||||
SHA512 (rustc-hash-2.1.1.tar.gz) = 87097d98d47f327d000041ab13acddc366f1500d9c3e5c82169c3358112c7a7c03701c9b3c2c81d9f9da65b7ebac1c479b179dfaf7c059cd0b929b4673e51084
|
||||
SHA512 (spirv-llvm-translator-a37544f.tar.gz) = 9e790322beead5fd2934140e8f4870978a860fe03aaffd042ff74578b76f7f404dcd0dbaea1d6ee2a408b477e5de9819910a5b86ce4ba8a018e21b7d60ed5e97
|
||||
SHA512 (syn-2.0.106.tar.gz) = e07e1058770fa3f1039eaf335340cefb597c0dd11bb90fec9fa777ca5815d0e0bb1711bb4db52cac77e205dd68fbe2bce0e1aa9895c2a52a1ea6d7758d13424c
|
||||
SHA512 (unicode-ident-1.0.18.tar.gz) = d11f89fb696f9e2953c96a40b5478832651b268c83b9c7a700b07e768e795d6e8dc346597d1226df21219d36866768d1f640bd8edb68db8bd3d5d437b2bfd324
|
||||
SHA512 (spirv-llvm-translator-114f5ee.tar.gz) = 5e983a5b4a7353448a5ccbf75ab37600e9f2157a1bcc6920e79cd762ffb4d07985ee54d9809f7f97b4495d44d89ccd66bebb67325569e9eef63014230c44bf56
|
||||
SHA512 (syn-2.0.115.tar.gz) = 47afe5cd05da90d116e35259b4e3c03236e719ef8f62fbf1d32e4e7e78b454571f9e88e77e86665e815d5dcfe065c75fff987f57ba66942277f8f16fb680ead3
|
||||
SHA512 (unicode-ident-1.0.23.tar.gz) = f2e57950b87ab93456a74788c22b8f865fe8864147104507ed40cc87979c0a06007eec17c2c2241cb586b5e9600e5b518059611fde6325c7a3a79265751f8fe0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user