import CS mesa-25.2.7-4.el9
This commit is contained in:
parent
787af83e5e
commit
b3bd80ab43
16
.gitignore
vendored
16
.gitignore
vendored
@ -1,5 +1,11 @@
|
||||
SOURCES/libclc-20.1.3.src.tar.xz
|
||||
SOURCES/mesa-25.0.7.tar.xz
|
||||
SOURCES/meson-1.3.0.tar.gz
|
||||
SOURCES/spirv-llvm-translator-834db1a.tar.gz
|
||||
SOURCES/wayland-protocols-1.38.tar.xz
|
||||
SOURCES/libclc-21.1.3.src.tar.xz
|
||||
SOURCES/mesa-25.2.7.tar.xz
|
||||
SOURCES/meson-1.7.0.tar.gz
|
||||
SOURCES/paste-1.0.15.tar.gz
|
||||
SOURCES/proc-macro2-1.0.101.tar.gz
|
||||
SOURCES/quote-1.0.40.tar.gz
|
||||
SOURCES/rustc-hash-2.1.1.tar.gz
|
||||
SOURCES/spirv-llvm-translator-a37544f.tar.gz
|
||||
SOURCES/syn-2.0.106.tar.gz
|
||||
SOURCES/unicode-ident-1.0.18.tar.gz
|
||||
SOURCES/wayland-protocols-1.41.tar.xz
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
0d3fda8d6ac128ead0883253008c24f16b7d3848 SOURCES/libclc-20.1.3.src.tar.xz
|
||||
7f98eca4670fe20cebb327a0d78f01d76332f861 SOURCES/mesa-25.0.7.tar.xz
|
||||
6e2c98cccd1b85d5fe8716e7b0f6f080acd77f37 SOURCES/meson-1.3.0.tar.gz
|
||||
23de2f0b60789090c06f33ea7293d862b0362af4 SOURCES/spirv-llvm-translator-834db1a.tar.gz
|
||||
3fbb7095a8a33e8465351c25ff1fc01bedeafacd SOURCES/wayland-protocols-1.38.tar.xz
|
||||
3dcfd76b6097774d3c8f2bb05e920c12fb5e18f0 SOURCES/libclc-21.1.3.src.tar.xz
|
||||
43e42024911f1fc54044d703efb5f0cb050db44e SOURCES/mesa-25.2.7.tar.xz
|
||||
df69d7e60fd4d502d2b717b35d35924c017f3068 SOURCES/meson-1.7.0.tar.gz
|
||||
9daa82dceaa495951cc92ad83879d99cc04969af SOURCES/paste-1.0.15.tar.gz
|
||||
47e47f5da2396a4befa61a36469efa1ecb2b34f4 SOURCES/proc-macro2-1.0.101.tar.gz
|
||||
be7844434db89e988fec5a48aea5f5a768721dc9 SOURCES/quote-1.0.40.tar.gz
|
||||
f144c32f41afa29f6e09c0ceefcc458b291c5bff SOURCES/rustc-hash-2.1.1.tar.gz
|
||||
b4bafa76d4fa5f05e8f0307b366c0b412041ce9e SOURCES/spirv-llvm-translator-a37544f.tar.gz
|
||||
ebffd7f7aad4984cb2ec79956c93b3ade7e40bf6 SOURCES/syn-2.0.106.tar.gz
|
||||
b58aa62ecd755071e241408ef4e78e3baeca019c SOURCES/unicode-ident-1.0.18.tar.gz
|
||||
523b591f54e788d3117718096228b2cb6e999f2d SOURCES/wayland-protocols-1.41.tar.xz
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
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,88 +0,0 @@
|
||||
From 870b8717b25eceadac8dd653debe8346826227cb Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Mon, 9 Jun 2025 09:19:28 +1000
|
||||
Subject: [PATCH] Revert "hasvk/elk: stop turning load_push_constants into
|
||||
load_uniform"
|
||||
|
||||
This reverts commit b036d2ded2de32e81730ec8ce37c803bad112efa.
|
||||
|
||||
This seems to break gtk4 and other stuff.
|
||||
|
||||
Cc: mesa-stable
|
||||
(taking ack from Lionel saying we should revert)
|
||||
|
||||
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35407>
|
||||
---
|
||||
src/intel/compiler/elk/elk_fs_nir.cpp | 4 ++--
|
||||
src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c | 6 +++---
|
||||
src/intel/vulkan_hasvk/anv_nir_compute_push_layout.c | 3 +--
|
||||
3 files changed, 6 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/intel/compiler/elk/elk_fs_nir.cpp b/src/intel/compiler/elk/elk_fs_nir.cpp
|
||||
index 459e2d966b7..6b78d6cf9f8 100644
|
||||
--- a/src/intel/compiler/elk/elk_fs_nir.cpp
|
||||
+++ b/src/intel/compiler/elk/elk_fs_nir.cpp
|
||||
@@ -4969,8 +4969,7 @@ fs_nir_emit_intrinsic(nir_to_elk_state &ntb,
|
||||
break;
|
||||
}
|
||||
|
||||
- case nir_intrinsic_load_uniform:
|
||||
- case nir_intrinsic_load_push_constant: {
|
||||
+ case nir_intrinsic_load_uniform: {
|
||||
/* Offsets are in bytes but they should always aligned to
|
||||
* the type size
|
||||
*/
|
||||
@@ -7058,3 +7057,4 @@ nir_to_elk(elk_fs_visitor *s)
|
||||
|
||||
ralloc_free(ntb.mem_ctx);
|
||||
}
|
||||
+
|
||||
diff --git a/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c
|
||||
index 2bedf9017ed..1c613a9ebe7 100644
|
||||
--- a/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c
|
||||
+++ b/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c
|
||||
@@ -463,9 +463,9 @@ build_buffer_addr_for_res_index(nir_builder *b,
|
||||
nir_iadd(b, res.dyn_offset_base, res.array_index);
|
||||
|
||||
nir_def *dyn_load =
|
||||
- nir_load_uniform(b, 1, 32, nir_imul_imm(b, dyn_offset_idx, 4),
|
||||
- .base = offsetof(struct anv_push_constants, dynamic_offsets),
|
||||
- .range = MAX_DYNAMIC_BUFFERS * 4);
|
||||
+ nir_load_push_constant(b, 1, 32, nir_imul_imm(b, dyn_offset_idx, 4),
|
||||
+ .base = offsetof(struct anv_push_constants, dynamic_offsets),
|
||||
+ .range = MAX_DYNAMIC_BUFFERS * 4);
|
||||
|
||||
nir_def *dynamic_offset =
|
||||
nir_bcsel(b, nir_ieq_imm(b, res.dyn_offset_base, 0xff),
|
||||
diff --git a/src/intel/vulkan_hasvk/anv_nir_compute_push_layout.c b/src/intel/vulkan_hasvk/anv_nir_compute_push_layout.c
|
||||
index ed314af8b98..8a3f83f2c26 100644
|
||||
--- a/src/intel/vulkan_hasvk/anv_nir_compute_push_layout.c
|
||||
+++ b/src/intel/vulkan_hasvk/anv_nir_compute_push_layout.c
|
||||
@@ -55,7 +55,6 @@ anv_nir_compute_push_layout(nir_shader *nir,
|
||||
has_const_ubo = true;
|
||||
break;
|
||||
|
||||
- case nir_intrinsic_load_uniform:
|
||||
case nir_intrinsic_load_push_constant: {
|
||||
unsigned base = nir_intrinsic_base(intrin);
|
||||
unsigned range = nir_intrinsic_range(intrin);
|
||||
@@ -132,7 +131,6 @@ anv_nir_compute_push_layout(nir_shader *nir,
|
||||
|
||||
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
|
||||
switch (intrin->intrinsic) {
|
||||
- case nir_intrinsic_load_uniform:
|
||||
case nir_intrinsic_load_push_constant: {
|
||||
/* With bindless shaders we load uniforms with SEND
|
||||
* messages. All the push constants are located after the
|
||||
@@ -141,6 +139,7 @@ anv_nir_compute_push_layout(nir_shader *nir,
|
||||
* elk_nir_lower_rt_intrinsics.c).
|
||||
*/
|
||||
unsigned base_offset = push_start;
|
||||
+ intrin->intrinsic = nir_intrinsic_load_uniform;
|
||||
nir_intrinsic_set_base(intrin,
|
||||
nir_intrinsic_base(intrin) -
|
||||
base_offset);
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
From 24f85c06c28736b73c14208a0ffa6657d2aee9cd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jexposit@redhat.com>
|
||||
Date: Mon, 21 Apr 2025 13:52:14 +0200
|
||||
Subject: [PATCH] Revert "kopper: Explicitly choose zink"
|
||||
|
||||
On QEMU (virtio driver), without 3D acceleration enabled and without
|
||||
mesa-vulkan-drivers installed, this commit prevents Mutter to start.
|
||||
|
||||
This reverts commit c0bc957c5d8c7edd57626284b712dd6ea1e375fc.
|
||||
|
||||
Related: https://bugzilla.redhat.com/show_bug.cgi?id=2360851
|
||||
Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13009
|
||||
---
|
||||
.pick_status.json | 2 +-
|
||||
src/gallium/frontends/dri/kopper.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.pick_status.json b/.pick_status.json
|
||||
index 99df2fb30c2..cdf3965678c 100644
|
||||
--- a/.pick_status.json
|
||||
+++ b/.pick_status.json
|
||||
@@ -16204,7 +16204,7 @@
|
||||
"description": "kopper: Explicitly choose zink",
|
||||
"nominated": false,
|
||||
"nomination_type": 0,
|
||||
- "resolution": 1,
|
||||
+ "resolution": 4,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
diff --git a/src/gallium/frontends/dri/kopper.c b/src/gallium/frontends/dri/kopper.c
|
||||
index a1d7dcb79b4..3bdb56022a9 100644
|
||||
--- a/src/gallium/frontends/dri/kopper.c
|
||||
+++ b/src/gallium/frontends/dri/kopper.c
|
||||
@@ -73,7 +73,7 @@ kopper_init_screen(struct dri_screen *screen, bool driver_name_is_inferred)
|
||||
bool success;
|
||||
#ifdef HAVE_LIBDRM
|
||||
if (screen->fd != -1)
|
||||
- success = pipe_loader_drm_probe_fd(&screen->dev, screen->fd, true);
|
||||
+ success = pipe_loader_drm_probe_fd(&screen->dev, screen->fd, false);
|
||||
else
|
||||
success = pipe_loader_vk_probe_dri(&screen->dev);
|
||||
#else
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@ -0,0 +1,149 @@
|
||||
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
|
||||
|
||||
@ -0,0 +1,74 @@
|
||||
From 17ab0f2ece0a45dd5df507a466ecf6f40d452e1a Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Fryzek <lfryzek@igalia.com>
|
||||
Date: Wed, 3 Dec 2025 19:33:57 -0500
|
||||
Subject: [PATCH 1/2] drisw: Modify drisw_swap_buffers_with_damage to swap
|
||||
entire buffer
|
||||
|
||||
When swapping buffer with damage regions, to be strictly correct we
|
||||
need to swap the entire back buffer to the front buffer. This needs to
|
||||
be done in case the compositor does not support damage regions. This
|
||||
means we need to ignore the input damage region and tell drisw to swap
|
||||
the entire buffer.
|
||||
|
||||
Cc: mesa-stable
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38817>
|
||||
---
|
||||
src/gallium/frontends/dri/drisw.c | 28 ++++++++--------------------
|
||||
1 file changed, 8 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/frontends/dri/drisw.c b/src/gallium/frontends/dri/drisw.c
|
||||
index 4359ca569e5..394b6986832 100644
|
||||
--- a/src/gallium/frontends/dri/drisw.c
|
||||
+++ b/src/gallium/frontends/dri/drisw.c
|
||||
@@ -225,6 +225,13 @@ drisw_copy_to_front(struct pipe_context *pipe,
|
||||
static void
|
||||
drisw_swap_buffers_with_damage(struct dri_drawable *drawable, int nrects, const int *rects)
|
||||
{
|
||||
+ /* Damage regions still require us to update the whole front buffer
|
||||
+ * in case the compositor doesn't obey them, so we will just ignore
|
||||
+ * the passed in damage regions and swap the whole buffer
|
||||
+ */
|
||||
+ (void)nrects;
|
||||
+ (void)rects;
|
||||
+
|
||||
struct dri_context *ctx = dri_get_current();
|
||||
struct dri_screen *screen = drawable->screen;
|
||||
struct pipe_resource *ptex;
|
||||
@@ -242,25 +249,6 @@ drisw_swap_buffers_with_damage(struct dri_drawable *drawable, int nrects, const
|
||||
if (ptex) {
|
||||
struct pipe_fence_handle *fence = NULL;
|
||||
|
||||
- struct pipe_box stack_boxes[64];
|
||||
- if (nrects > ARRAY_SIZE(stack_boxes))
|
||||
- nrects = 0;
|
||||
- if (nrects) {
|
||||
- for (unsigned int i = 0; i < nrects; i++) {
|
||||
- const int *rect = &rects[i * 4];
|
||||
-
|
||||
- int w = MIN2(rect[2], ptex->width0);
|
||||
- int h = MIN2(rect[3], ptex->height0);
|
||||
- int x = CLAMP(rect[0], 0, ptex->width0);
|
||||
- int y = CLAMP(ptex->height0 - rect[1] - h, 0, ptex->height0);
|
||||
-
|
||||
- if (h > ptex->height0 - y)
|
||||
- h = ptex->height0 - y;
|
||||
-
|
||||
- u_box_2d(x, y, w, h, &stack_boxes[i]);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
if (ctx->pp)
|
||||
pp_run(ctx->pp, ptex, ptex, drawable->textures[ST_ATTACHMENT_DEPTH_STENCIL]);
|
||||
|
||||
@@ -279,7 +267,7 @@ drisw_swap_buffers_with_damage(struct dri_drawable *drawable, int nrects, const
|
||||
screen->base.screen->fence_finish(screen->base.screen, ctx->st->pipe,
|
||||
fence, OS_TIMEOUT_INFINITE);
|
||||
screen->base.screen->fence_reference(screen->base.screen, &fence, NULL);
|
||||
- drisw_copy_to_front(ctx->st->pipe, drawable, ptex, nrects, nrects ? stack_boxes : NULL);
|
||||
+ drisw_copy_to_front(ctx->st->pipe, drawable, ptex, 0, NULL);
|
||||
drawable->buffer_age = 1;
|
||||
|
||||
/* TODO: remove this if the framebuffer state doesn't change. */
|
||||
--
|
||||
2.52.0
|
||||
|
||||
36
SOURCES/0001-gallivm-handle-u16-correct-on-const-loads.patch
Normal file
36
SOURCES/0001-gallivm-handle-u16-correct-on-const-loads.patch
Normal file
@ -0,0 +1,36 @@
|
||||
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
|
||||
|
||||
@ -0,0 +1,72 @@
|
||||
From 48799005d7f3b099cb2e93d09ce6dc211f619887 Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Fryzek <lfryzek@igalia.com>
|
||||
Date: Wed, 3 Dec 2025 19:19:56 -0500
|
||||
Subject: [PATCH 2/2] Revert "drisw: Copy entire buffer ignoring damage
|
||||
regions"
|
||||
|
||||
This reverts commit 755e795e4c0d2660129c14998425f7dd3299bdf9.
|
||||
|
||||
Cc: mesa-stable
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38817>
|
||||
---
|
||||
src/gallium/winsys/sw/dri/dri_sw_winsys.c | 38 +++++++++++++++++------
|
||||
1 file changed, 29 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/winsys/sw/dri/dri_sw_winsys.c b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
|
||||
index 7d18b6138ea..0b2c8754ec5 100644
|
||||
--- a/src/gallium/winsys/sw/dri/dri_sw_winsys.c
|
||||
+++ b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
|
||||
@@ -352,21 +352,41 @@ dri_sw_displaytarget_display(struct sw_winsys *ws,
|
||||
struct dri_sw_winsys *dri_sw_ws = dri_sw_winsys(ws);
|
||||
struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
|
||||
struct dri_drawable *dri_drawable = (struct dri_drawable *)context_private;
|
||||
- unsigned width, height;
|
||||
+ unsigned width, height, x = 0, y = 0;
|
||||
unsigned blsize = util_format_get_blocksize(dri_sw_dt->format);
|
||||
bool is_shm = dri_sw_dt->shmid != -1;
|
||||
/* Set the width to 'stride / cpp'.
|
||||
*
|
||||
* PutImage correctly clips to the width of the dst drawable.
|
||||
*/
|
||||
- width = dri_sw_dt->stride / blsize;
|
||||
- height = dri_sw_dt->height;
|
||||
- if (is_shm)
|
||||
- dri_sw_ws->lf->put_image_shm(dri_drawable, dri_sw_dt->shmid, dri_sw_dt->data, 0, 0,
|
||||
- 0, 0, width, height, dri_sw_dt->stride);
|
||||
- else
|
||||
- dri_sw_ws->lf->put_image(dri_drawable, dri_sw_dt->data, width, height);
|
||||
- return;
|
||||
+ if (!nboxes) {
|
||||
+ width = dri_sw_dt->stride / blsize;
|
||||
+ height = dri_sw_dt->height;
|
||||
+ if (is_shm)
|
||||
+ dri_sw_ws->lf->put_image_shm(dri_drawable, dri_sw_dt->shmid, dri_sw_dt->data, 0, 0,
|
||||
+ 0, 0, width, height, dri_sw_dt->stride);
|
||||
+ else
|
||||
+ dri_sw_ws->lf->put_image(dri_drawable, dri_sw_dt->data, width, height);
|
||||
+ return;
|
||||
+ }
|
||||
+ for (unsigned i = 0; i < nboxes; i++) {
|
||||
+ unsigned offset = dri_sw_dt->stride * box[i].y;
|
||||
+ unsigned offset_x = box[i].x * blsize;
|
||||
+ char *data = dri_sw_dt->data + offset;
|
||||
+ x = box[i].x;
|
||||
+ y = box[i].y;
|
||||
+ width = box[i].width;
|
||||
+ height = box[i].height;
|
||||
+ if (is_shm) {
|
||||
+ /* don't add x offset for shm, the put_image_shm will deal with it */
|
||||
+ dri_sw_ws->lf->put_image_shm(dri_drawable, dri_sw_dt->shmid, dri_sw_dt->data, offset, offset_x,
|
||||
+ x, y, width, height, dri_sw_dt->stride);
|
||||
+ } else {
|
||||
+ data += offset_x;
|
||||
+ dri_sw_ws->lf->put_image2(dri_drawable, data,
|
||||
+ x, y, width, height, dri_sw_dt->stride);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@ -0,0 +1,106 @@
|
||||
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
|
||||
|
||||
@ -1,144 +0,0 @@
|
||||
From e4eb5e80c316c0af3fff310ca89e1175d81556c1 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Thu, 27 Feb 2025 15:44:27 +0100
|
||||
Subject: [PATCH] clover: Don't include libclc headers
|
||||
|
||||
Per https://github.com/llvm/llvm-project/issues/119967 these
|
||||
headers are internal implementation details of libclc and were
|
||||
never supposed to be installed. They are not available anymore
|
||||
since LLVM 20. Instead opencl-c.h should be used.
|
||||
|
||||
There already ise a code path for including opencl-c.h, so always
|
||||
use it.
|
||||
|
||||
This didn't work for me out of the box, because the build system
|
||||
currently hardcodes the clang resource directory, which is incorrect
|
||||
for Fedora at least. Fix this by using GetResourcePath +
|
||||
CLANG_RESOURCE_DIR provided by clang instead. This is basically
|
||||
the same as what is done in clc_helper.c
|
||||
|
||||
I've still retained the old behavior as a fallback just in case
|
||||
(e.g. if clang is linked statically?)
|
||||
|
||||
Reviewed-by: Karol Herbst <kherbst@redhat.com>
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33805>
|
||||
---
|
||||
.../frontends/clover/llvm/invocation.cpp | 53 +++++++++++++------
|
||||
src/gallium/frontends/clover/meson.build | 5 +-
|
||||
2 files changed, 39 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/frontends/clover/llvm/invocation.cpp b/src/gallium/frontends/clover/llvm/invocation.cpp
|
||||
index 3cbb05baecf67..ca030b404d791 100644
|
||||
--- a/src/gallium/frontends/clover/llvm/invocation.cpp
|
||||
+++ b/src/gallium/frontends/clover/llvm/invocation.cpp
|
||||
@@ -24,6 +24,8 @@
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
+#include <dlfcn.h>
|
||||
+
|
||||
#include <llvm/IR/DiagnosticPrinter.h>
|
||||
#include <llvm/IR/DiagnosticInfo.h>
|
||||
#include <llvm/IR/LLVMContext.h>
|
||||
@@ -39,6 +41,8 @@
|
||||
#include <clang/Frontend/TextDiagnosticBuffer.h>
|
||||
#include <clang/Frontend/TextDiagnosticPrinter.h>
|
||||
#include <clang/Basic/TargetInfo.h>
|
||||
+#include <clang/Config/config.h>
|
||||
+#include <clang/Driver/Driver.h>
|
||||
|
||||
#if LLVM_VERSION_MAJOR >= 20
|
||||
#include <llvm/Support/VirtualFileSystem.h>
|
||||
@@ -323,6 +327,30 @@ namespace {
|
||||
return c;
|
||||
}
|
||||
|
||||
+ std::string getResourceDirectory() {
|
||||
+ Dl_info info;
|
||||
+ if (dladdr((void *)clang::CompilerInvocation::CreateFromArgs, &info) == 0) {
|
||||
+ return FALLBACK_CLANG_RESOURCE_DIR;
|
||||
+ }
|
||||
+
|
||||
+ char *libclang_path = realpath(info.dli_fname, NULL);
|
||||
+ if (libclang_path == nullptr) {
|
||||
+ return FALLBACK_CLANG_RESOURCE_DIR;
|
||||
+ }
|
||||
+
|
||||
+ // GetResourcePath is a way to retrieve the actual libclang resource dir based on a given
|
||||
+ // binary or library.
|
||||
+ std::string clang_resource_dir =
|
||||
+#if LLVM_VERSION_MAJOR >= 20
|
||||
+ clang::driver::Driver::GetResourcesPath(std::string(libclang_path));
|
||||
+#else
|
||||
+ clang::driver::Driver::GetResourcesPath(std::string(libclang_path), CLANG_RESOURCE_DIR);
|
||||
+#endif
|
||||
+ free(libclang_path);
|
||||
+
|
||||
+ return clang_resource_dir;
|
||||
+ }
|
||||
+
|
||||
std::unique_ptr<Module>
|
||||
compile(LLVMContext &ctx, clang::CompilerInstance &c,
|
||||
const std::string &name, const std::string &source,
|
||||
@@ -331,25 +359,18 @@ namespace {
|
||||
c.getFrontendOpts().ProgramAction = clang::frontend::EmitLLVMOnly;
|
||||
c.getHeaderSearchOpts().UseBuiltinIncludes = true;
|
||||
c.getHeaderSearchOpts().UseStandardSystemIncludes = true;
|
||||
- c.getHeaderSearchOpts().ResourceDir = CLANG_RESOURCE_DIR;
|
||||
|
||||
- if (use_libclc) {
|
||||
- // Add libclc generic search path
|
||||
- c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
|
||||
- clang::frontend::Angled,
|
||||
- false, false);
|
||||
+ std::string clang_resource_dir = getResourceDirectory();
|
||||
+ c.getHeaderSearchOpts().ResourceDir = clang_resource_dir;
|
||||
|
||||
- // Add libclc include
|
||||
- c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
|
||||
- } else {
|
||||
- // Add opencl-c generic search path
|
||||
- c.getHeaderSearchOpts().AddPath(CLANG_RESOURCE_DIR,
|
||||
- clang::frontend::Angled,
|
||||
- false, false);
|
||||
+ // Add opencl-c generic search path
|
||||
+ std::string clang_include_path = clang_resource_dir + "/include";
|
||||
+ c.getHeaderSearchOpts().AddPath(clang_include_path,
|
||||
+ clang::frontend::Angled,
|
||||
+ false, false);
|
||||
|
||||
- // Add opencl include
|
||||
- c.getPreprocessorOpts().Includes.push_back("opencl-c.h");
|
||||
- }
|
||||
+ // Add opencl include
|
||||
+ c.getPreprocessorOpts().Includes.push_back("opencl-c.h");
|
||||
|
||||
// Add definition for the OpenCL version
|
||||
const auto dev_version = dev.device_version();
|
||||
diff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build
|
||||
index e569b86a1bea7..56a9894f0dbb1 100644
|
||||
--- a/src/gallium/frontends/clover/meson.build
|
||||
+++ b/src/gallium/frontends/clover/meson.build
|
||||
@@ -10,7 +10,6 @@ clover_opencl_cpp_args = [
|
||||
'-DCL_USE_DEPRECATED_OPENCL_2_0_APIS',
|
||||
'-DCL_USE_DEPRECATED_OPENCL_2_1_APIS',
|
||||
'-DCL_USE_DEPRECATED_OPENCL_2_2_APIS',
|
||||
- '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'includedir')),
|
||||
'-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'libexecdir'))
|
||||
]
|
||||
clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
|
||||
@@ -43,9 +42,9 @@ libclllvm = static_library(
|
||||
cpp_args : [
|
||||
clover_cpp_args,
|
||||
clover_opencl_cpp_args,
|
||||
- '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
|
||||
+ '-DFALLBACK_CLANG_RESOURCE_DIR="@0@"'.format(join_paths(
|
||||
dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang',
|
||||
- dep_llvm.version(), 'include',
|
||||
+ dep_llvm.version()
|
||||
)),
|
||||
],
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
--
|
||||
GitLab
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
diff -up mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf.dma mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf
|
||||
--- mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf.dma 2022-11-25 10:32:32.175879868 +1000
|
||||
+++ mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf 2022-11-25 10:32:43.743067470 +1000
|
||||
@@ -653,6 +653,7 @@ TODO: document the other workarounds.
|
||||
<application name="gnome-shell" executable="gnome-shell">
|
||||
<option name="adaptive_sync" value="false" />
|
||||
<option name="v3d_nonmsaa_texture_size_limit" value="true" />
|
||||
+ <option name="mesa_glthread" value="false"/>
|
||||
</application>
|
||||
<application name="Desktop — Plasma" executable="plasmashell">
|
||||
<option name="adaptive_sync" value="false" />
|
||||
384
SPECS/mesa.spec
384
SPECS/mesa.spec
@ -4,15 +4,14 @@
|
||||
%global with_vmware 1
|
||||
%global with_vulkan_hw 1
|
||||
%global with_vdpau 1
|
||||
%global with_va 1
|
||||
%if !0%{?rhel}
|
||||
%global with_r300 1
|
||||
%global with_r600 1
|
||||
%global with_nine 1
|
||||
%if 0%{?with_vulkan_hw}
|
||||
%global with_nvk %{with_vulkan_hw}
|
||||
%endif
|
||||
%global with_opencl 1
|
||||
%global with_va 1
|
||||
%endif
|
||||
%if !0%{?rhel} || 0%{?rhel} >= 9
|
||||
%global with_nvk %{with_vulkan_hw}
|
||||
%endif
|
||||
%global base_vulkan %{?with_vulkan_hw:,amd}%{!?with_vulkan_hw:%{nil}}
|
||||
%endif
|
||||
@ -24,11 +23,12 @@
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86} x86_64
|
||||
%global with_iris 1
|
||||
%global with_crocus 1
|
||||
%global with_xa 1
|
||||
%global with_intel_clc 1
|
||||
%global with_iris 1
|
||||
%global intel_platform_vulkan %{?with_vulkan_hw:,intel,intel_hasvk}%{!?with_vulkan_hw:%{nil}}
|
||||
%if !0%{?rhel}
|
||||
%global with_i915 1
|
||||
%endif
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
%if !0%{?with_vulkan_hw}
|
||||
@ -38,6 +38,8 @@
|
||||
|
||||
%ifarch %{arm} aarch64
|
||||
%if !0%{?rhel}
|
||||
%global with_asahi 1
|
||||
%global with_d3d12 1
|
||||
%global with_etnaviv 1
|
||||
%global with_lima 1
|
||||
%global with_tegra 1
|
||||
@ -47,13 +49,16 @@
|
||||
%global with_freedreno 1
|
||||
%global with_kmsro 1
|
||||
%global with_panfrost 1
|
||||
%global with_xa 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}}
|
||||
%endif
|
||||
|
||||
%if !0%{?rhel}
|
||||
%global with_libunwind 1
|
||||
%global with_lmsensors 1
|
||||
%global with_virtio 1
|
||||
%endif
|
||||
|
||||
%ifarch %{valgrind_arches}
|
||||
@ -62,13 +67,22 @@
|
||||
%bcond_with valgrind
|
||||
%endif
|
||||
|
||||
%global vulkan_drivers swrast%{?base_vulkan}%{?intel_platform_vulkan}%{?extra_platform_vulkan}%{?with_nvk:,nouveau}
|
||||
%global vulkan_drivers swrast%{?base_vulkan}%{?intel_platform_vulkan}%{?asahi_platform_vulkan}%{?extra_platform_vulkan}%{?with_nvk:,nouveau}%{?with_virtio:,virtio}%{?with_d3d12:,microsoft-experimental}
|
||||
|
||||
%if 0%{?with_nvk} && 0%{?rhel}
|
||||
%global vendor_nvk_crates 1
|
||||
%endif
|
||||
|
||||
# We've gotten a report that enabling LTO for mesa breaks some games. See
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1862771 for details.
|
||||
# Disable LTO for now
|
||||
%global _lto_cflags %nil
|
||||
|
||||
Name: mesa
|
||||
Summary: Mesa graphics libraries
|
||||
%global ver 25.0.7
|
||||
%global ver 25.2.7
|
||||
Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)}
|
||||
Release: 2%{?dist}
|
||||
Release: 4%{?dist}
|
||||
License: MIT AND BSD-3-Clause AND SGI-B-2.0
|
||||
URL: http://www.mesa3d.org
|
||||
|
||||
@ -78,13 +92,14 @@ Source0: https://archive.mesa3d.org/mesa-%{ver}.tar.xz
|
||||
# Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD.
|
||||
Source1: Mesa-MLAA-License-Clarification-Email.txt
|
||||
|
||||
# meson >= 1.3.0 is required
|
||||
%global meson_ver 1.3.0
|
||||
# meson >= 1.7.0 is required
|
||||
%global meson_ver 1.7.0
|
||||
Source2: https://github.com/mesonbuild/meson/releases/download/%{meson_ver}/meson-%{meson_ver}.tar.gz
|
||||
|
||||
|
||||
# libclc is not available in RHEL but it is required for Intel drivers since
|
||||
# mesa >= 24.1.0
|
||||
%global libclc_version 20.1.3
|
||||
%global libclc_version 21.1.3
|
||||
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}
|
||||
@ -92,8 +107,8 @@ BuildRequires: clang-devel >= %{libclc_version}
|
||||
# BuildRequires: spirv-llvm-translator-tools
|
||||
|
||||
# spirv-llvm-translator is a dependency of libclc
|
||||
%global spirv_llvm_trans_ver 20.1.0
|
||||
%global spirv_llvm_trans_commit 834db1a1985ac36d5a3e1b4b34dc1ca3f919ad5b
|
||||
%global spirv_llvm_trans_ver 21.1.2
|
||||
%global spirv_llvm_trans_commit a37544fc0bb90b4e8b8d755580119c018891dfa4
|
||||
%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
|
||||
@ -103,33 +118,48 @@ BuildRequires: spirv-headers-devel
|
||||
BuildRequires: spirv-tools-devel
|
||||
BuildRequires: zlib-devel
|
||||
|
||||
# wayland-protocols >= 1.38 is required
|
||||
%global wayland_protocols_ver 1.38
|
||||
# wayland-protocols >= 1.41 is required
|
||||
%global wayland_protocols_ver 1.41
|
||||
Source5: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/%{wayland_protocols_ver}/downloads/wayland-protocols-%{wayland_protocols_ver}.tar.xz
|
||||
BuildRequires: wayland-devel
|
||||
|
||||
Patch10: gnome-shell-glthread-disable.patch
|
||||
# In CentOS/RHEL, Rust crates required to build NVK are vendored.
|
||||
# The minimum target versions are obtained from the .wrap files
|
||||
# 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 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
|
||||
Source12: https://crates.io/api/v1/crates/quote/%{rust_quote_ver}/download#/quote-%{rust_quote_ver}.tar.gz
|
||||
Source13: https://crates.io/api/v1/crates/syn/%{rust_syn_ver}/download#/syn-%{rust_syn_ver}.tar.gz
|
||||
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
|
||||
|
||||
# Backport of https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33805
|
||||
# to fix clover with libclc from LLVM 20.
|
||||
Patch20: e4eb5e80c316c0af3fff310ca89e1175d81556c1.patch
|
||||
# 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
|
||||
|
||||
# This patch makes Fedora CI fail and causes issues in QEMU. Revert it until
|
||||
# we find a fix.
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2360851
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/13009
|
||||
Patch40: 0001-Revert-kopper-Explicitly-choose-zink.patch
|
||||
# Fix s390x regressions:
|
||||
# https://issues.redhat.com/browse/RHEL-151315
|
||||
Patch13: 0001-gallivm-handle-u16-correct-on-const-loads.patch
|
||||
Patch14: 0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch
|
||||
|
||||
# Upstream revert for gtk corruption on haswell
|
||||
Patch50: 0001-Revert-hasvk-elk-stop-turning-load_push_constants-in.patch
|
||||
# Fix performance issue with Xorg
|
||||
Patch21: 0001-drisw-Modify-drisw_swap_buffers_with_damage-to-swap-.patch
|
||||
Patch22: 0002-Revert-drisw-Copy-entire-buffer-ignoring-damage-regi.patch
|
||||
|
||||
# Build our own version but keep the dependency for the RPM macros
|
||||
BuildRequires: meson
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: gettext
|
||||
%if 0%{?with_hardware}
|
||||
BuildRequires: kernel-headers
|
||||
BuildRequires: systemd-devel
|
||||
%endif
|
||||
# We only check for the minimum version of pkgconfig(libdrm) needed so that the
|
||||
# SRPMs for each arch still have the same build dependencies. See:
|
||||
@ -141,10 +171,9 @@ BuildRequires: pkgconfig(libunwind)
|
||||
BuildRequires: pkgconfig(expat)
|
||||
BuildRequires: pkgconfig(zlib) >= 1.2.3
|
||||
BuildRequires: pkgconfig(libzstd)
|
||||
BuildRequires: pkgconfig(libselinux)
|
||||
BuildRequires: pkgconfig(wayland-scanner)
|
||||
# Build our own version
|
||||
# BuildRequires: pkgconfig(wayland-protocols) >= 1.38
|
||||
#BuildRequires: pkgconfig(wayland-protocols) >= 1.34
|
||||
BuildRequires: pkgconfig(wayland-client) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-server) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-egl-backend) >= 3
|
||||
@ -185,7 +214,7 @@ BuildRequires: flatbuffers-devel
|
||||
BuildRequires: flatbuffers-compiler
|
||||
BuildRequires: xtensor-devel
|
||||
%endif
|
||||
%if 0%{?with_opencl} || 0%{?with_nvk} || 0%{?with_intel_clc}
|
||||
%if 0%{?with_opencl} || 0%{?with_nvk} || 0%{?with_asahi} || 0%{?with_panfrost}
|
||||
BuildRequires: clang-devel
|
||||
# Build our own version
|
||||
# BuildRequires: pkgconfig(libclc)
|
||||
@ -194,24 +223,20 @@ BuildRequires: pkgconfig(SPIRV-Tools)
|
||||
%endif
|
||||
%if 0%{?with_opencl} || 0%{?with_nvk}
|
||||
BuildRequires: bindgen
|
||||
BuildRequires: rust-packaging
|
||||
%if 0%{?rhel}
|
||||
BuildRequires: rust-toolset
|
||||
%else
|
||||
BuildRequires: cargo-rpm-macros
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?with_nvk}
|
||||
BuildRequires: cbindgen
|
||||
BuildRequires: (crate(paste) >= 1.0.14 with crate(paste) < 2)
|
||||
BuildRequires: (crate(proc-macro2) >= 1.0.56 with crate(proc-macro2) < 2)
|
||||
BuildRequires: (crate(quote) >= 1.0.25 with crate(quote) < 2)
|
||||
BuildRequires: (crate(syn/clone-impls) >= 2.0.15 with crate(syn/clone-impls) < 3)
|
||||
BuildRequires: (crate(unicode-ident) >= 1.0.6 with crate(unicode-ident) < 2)
|
||||
%endif
|
||||
%if %{with valgrind}
|
||||
BuildRequires: pkgconfig(valgrind)
|
||||
%endif
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-mako
|
||||
%if 0%{?with_intel_clc}
|
||||
BuildRequires: python3-ply
|
||||
%endif
|
||||
BuildRequires: python3-pycparser
|
||||
BuildRequires: python3-pyyaml
|
||||
BuildRequires: vulkan-headers
|
||||
@ -219,6 +244,9 @@ BuildRequires: glslang
|
||||
%if 0%{?with_vulkan_hw}
|
||||
BuildRequires: pkgconfig(vulkan)
|
||||
%endif
|
||||
%if 0%{?with_d3d12}
|
||||
BuildRequires: pkgconfig(DirectX-Headers) >= 1.614.1
|
||||
%endif
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
@ -227,6 +255,8 @@ BuildRequires: pkgconfig(vulkan)
|
||||
Summary: Mesa driver filesystem
|
||||
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}
|
||||
|
||||
%description filesystem
|
||||
%{summary}.
|
||||
@ -235,6 +265,7 @@ Obsoletes: mesa-omx-drivers < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Summary: Mesa libGL runtime libraries
|
||||
Requires: libglvnd-glx%{?_isa} >= 1:1.3.2
|
||||
Requires: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: %{name}-libOSMesa < 25.1.0~rc2-1
|
||||
|
||||
%description libGL
|
||||
%{summary}.
|
||||
@ -246,6 +277,7 @@ Requires: libglvnd-devel%{?_isa} >= 1:1.3.2
|
||||
Provides: libGL-devel
|
||||
Provides: libGL-devel%{?_isa}
|
||||
Recommends: gl-manpages
|
||||
Obsoletes: %{name}-libOSMesa-devel < 25.1.0~rc2-1
|
||||
|
||||
%description libGL-devel
|
||||
%{summary}.
|
||||
@ -278,11 +310,13 @@ Recommends: %{name}-va-drivers%{?_isa}
|
||||
%endif
|
||||
Obsoletes: %{name}-libglapi < 25.0.0~rc2-1
|
||||
Provides: %{name}-libglapi >= 25.0.0~rc2-1
|
||||
|
||||
# If mesa-libEGL is installed, it must match in version. This is here to prevent using
|
||||
# mesa-libEGL < 23.0.3-1 (frozen in the 'fedora' repo) which didn't have strong enough
|
||||
# inter-dependencies. See https://bugzilla.redhat.com/show_bug.cgi?id=2193135 .
|
||||
Requires: (%{name}-libEGL%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} if %{name}-libEGL%{?_isa})
|
||||
|
||||
|
||||
%description dri-drivers
|
||||
%{summary}.
|
||||
|
||||
@ -305,21 +339,6 @@ Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{rel
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%package libOSMesa
|
||||
Summary: Mesa offscreen rendering libraries
|
||||
Provides: libOSMesa
|
||||
Provides: libOSMesa%{?_isa}
|
||||
|
||||
%description libOSMesa
|
||||
%{summary}.
|
||||
|
||||
%package libOSMesa-devel
|
||||
Summary: Mesa offscreen rendering development package
|
||||
Requires: %{name}-libOSMesa%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libOSMesa-devel
|
||||
%{summary}.
|
||||
|
||||
%package libgbm
|
||||
Summary: Mesa gbm runtime library
|
||||
Provides: libgbm
|
||||
@ -342,25 +361,6 @@ Provides: libgbm-devel%{?_isa}
|
||||
%description libgbm-devel
|
||||
%{summary}.
|
||||
|
||||
%if 0%{?with_xa}
|
||||
%package libxatracker
|
||||
Summary: Mesa XA state tracker
|
||||
Provides: libxatracker
|
||||
Provides: libxatracker%{?_isa}
|
||||
|
||||
%description libxatracker
|
||||
%{summary}.
|
||||
|
||||
%package libxatracker-devel
|
||||
Summary: Mesa XA state tracker development package
|
||||
Requires: %{name}-libxatracker%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: libxatracker-devel
|
||||
Provides: libxatracker-devel%{?_isa}
|
||||
|
||||
%description libxatracker-devel
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_opencl}
|
||||
%package libOpenCL
|
||||
Summary: Mesa OpenCL runtime library
|
||||
@ -388,19 +388,13 @@ Summary: Mesa TensorFlow Lite delegate
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_nine}
|
||||
%package libd3d
|
||||
Summary: Mesa Direct3D9 state tracker
|
||||
%if 0%{?with_d3d12}
|
||||
%package dxil-devel
|
||||
Summary: Mesa SPIR-V to DXIL binary
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libd3d
|
||||
%{summary}.
|
||||
|
||||
%package libd3d-devel
|
||||
Summary: Mesa Direct3D9 state tracker development package
|
||||
Requires: %{name}-libd3d%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libd3d-devel
|
||||
%{summary}.
|
||||
%description dxil-devel
|
||||
Development tools for translating SPIR-V shader code to DXIL for Direct3D 12
|
||||
%endif
|
||||
|
||||
%package vulkan-drivers
|
||||
@ -428,7 +422,49 @@ tar -xvf %{SOURCE4}
|
||||
# Extract wayland-protocols
|
||||
tar -xvf %{SOURCE5}
|
||||
|
||||
# Extract Rust crates meson cache directory
|
||||
%if 0%{?vendor_nvk_crates}
|
||||
mkdir subprojects/packagecache/
|
||||
tar -xvf %{SOURCE10} -C subprojects/packagecache/
|
||||
tar -xvf %{SOURCE11} -C subprojects/packagecache/
|
||||
tar -xvf %{SOURCE12} -C subprojects/packagecache/
|
||||
tar -xvf %{SOURCE13} -C subprojects/packagecache/
|
||||
tar -xvf %{SOURCE14} -C subprojects/packagecache/
|
||||
tar -xvf %{SOURCE15} -C subprojects/packagecache/
|
||||
for d in subprojects/packagecache/*-*; do
|
||||
echo '{"files":{}}' > $d/.cargo-checksum.json
|
||||
done
|
||||
%endif
|
||||
|
||||
%if 0%{?with_nvk}
|
||||
cat > Cargo.toml <<_EOF
|
||||
[package]
|
||||
name = "mesa"
|
||||
version = "%{version}"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
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|.*-||')"
|
||||
_EOF
|
||||
%if 0%{?vendor_nvk_crates}
|
||||
%cargo_prep -v subprojects/packagecache
|
||||
%else
|
||||
%cargo_prep
|
||||
|
||||
%generate_buildrequires
|
||||
%cargo_generate_buildrequires
|
||||
%endif
|
||||
%endif
|
||||
|
||||
|
||||
%build
|
||||
|
||||
# Build meson
|
||||
cd meson-%{meson_ver}
|
||||
%py3_build
|
||||
@ -437,6 +473,7 @@ cd meson-%{meson_ver}
|
||||
export PYTHONPATH=%{buildroot}%{python3_sitelib}:%{python3_sitelib}
|
||||
cd -
|
||||
|
||||
|
||||
# Build spirv-llvm-translator
|
||||
cd SPIRV-LLVM-Translator-%{spirv_llvm_trans_commit}
|
||||
%cmake -GNinja \
|
||||
@ -481,47 +518,43 @@ cd wayland-protocols-%{wayland_protocols_ver}
|
||||
%meson_install
|
||||
cd -
|
||||
|
||||
|
||||
# ensure standard Rust compiler flags are set
|
||||
export RUSTFLAGS="%build_rustflags"
|
||||
|
||||
%if 0%{?with_nvk}
|
||||
export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/"
|
||||
# So... Meson can't actually find them without tweaks
|
||||
%define inst_crate_nameversion() %(basename %{cargo_registry}/%{1}-*)
|
||||
%define rewrite_wrap_file() sed -e "/source.*/d" -e "s/%{1}-.*/%{inst_crate_nameversion %{1}}/" -i subprojects/%{1}.wrap
|
||||
|
||||
%rewrite_wrap_file proc-macro2
|
||||
%rewrite_wrap_file quote
|
||||
%rewrite_wrap_file syn
|
||||
%rewrite_wrap_file unicode-ident
|
||||
%rewrite_wrap_file paste
|
||||
%if !0%{?vendor_nvk_crates}
|
||||
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
|
||||
}
|
||||
|
||||
# We've gotten a report that enabling LTO for mesa breaks some games. See
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1862771 for details.
|
||||
# Disable LTO for now
|
||||
%define _lto_cflags %{nil}
|
||||
rewrite_wrap_file proc-macro2
|
||||
rewrite_wrap_file quote
|
||||
rewrite_wrap_file syn
|
||||
rewrite_wrap_file unicode-ident
|
||||
rewrite_wrap_file paste
|
||||
rewrite_wrap_file rustc-hash
|
||||
%endif
|
||||
|
||||
%meson \
|
||||
-Dplatforms=x11,wayland \
|
||||
-Dosmesa=true \
|
||||
%if 0%{?with_hardware}
|
||||
-Dgallium-drivers=llvmpipe,virgl,nouveau%{?with_r300:,r300}%{?with_crocus:,crocus}%{?with_i915:,i915}%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi}%{?with_r600:,r600}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_v3d:,v3d}%{?with_lima:,lima}%{?with_panfrost:,panfrost}%{?with_vulkan_hw:,zink} \
|
||||
-Dgallium-drivers=llvmpipe,virgl,nouveau%{?with_r300:,r300}%{?with_crocus:,crocus}%{?with_i915:,i915}%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi}%{?with_r600:,r600}%{?with_asahi:,asahi}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_v3d:,v3d}%{?with_lima:,lima}%{?with_panfrost:,panfrost}%{?with_vulkan_hw:,zink}%{?with_d3d12:,d3d12} \
|
||||
%else
|
||||
-Dgallium-drivers=llvmpipe,virgl \
|
||||
%endif
|
||||
-Dgallium-vdpau=%{?with_vdpau:enabled}%{!?with_vdpau:disabled} \
|
||||
-Dgallium-va=%{?with_va:enabled}%{!?with_va:disabled} \
|
||||
-Dgallium-xa=%{?with_xa:enabled}%{!?with_xa:disabled} \
|
||||
-Dgallium-nine=%{?with_nine:true}%{!?with_nine:false} \
|
||||
-Dgallium-mediafoundation=disabled \
|
||||
-Dteflon=%{?with_teflon:true}%{!?with_teflon:false} \
|
||||
-Dgallium-opencl=%{?with_opencl:icd}%{!?with_opencl:disabled} \
|
||||
%if 0%{?with_opencl}
|
||||
-Dgallium-rusticl=true \
|
||||
%endif
|
||||
-Dvulkan-drivers=%{?vulkan_drivers} \
|
||||
-Dvulkan-layers=device-select \
|
||||
-Dshared-glapi=enabled \
|
||||
-Dgles1=disabled \
|
||||
-Dgles2=enabled \
|
||||
-Dopengl=true \
|
||||
@ -529,16 +562,12 @@ export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/"
|
||||
-Dglx=dri \
|
||||
-Degl=enabled \
|
||||
-Dglvnd=enabled \
|
||||
%if 0%{?with_intel_clc}
|
||||
-Dintel-clc=enabled \
|
||||
%endif
|
||||
-Dintel-rt=%{?with_intel_vk_rt:enabled}%{!?with_intel_vk_rt:disabled} \
|
||||
-Dmicrosoft-clc=disabled \
|
||||
-Dllvm=enabled \
|
||||
-Dshared-llvm=enabled \
|
||||
-Dvalgrind=%{?with_valgrind:enabled}%{!?with_valgrind:disabled} \
|
||||
-Dbuild-tests=false \
|
||||
-Dselinux=true \
|
||||
%if !0%{?with_libunwind}
|
||||
-Dlibunwind=disabled \
|
||||
%endif
|
||||
@ -552,6 +581,14 @@ export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/"
|
||||
%{nil}
|
||||
%meson_build
|
||||
|
||||
%if 0%{?with_nvk}
|
||||
%cargo_license_summary
|
||||
%{cargo_license} > LICENSE.dependencies
|
||||
%if 0%{?vendor_nvk_crates}
|
||||
%cargo_vendor_manifest
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%install
|
||||
cd meson-%{meson_ver}
|
||||
%py3_install
|
||||
@ -560,7 +597,6 @@ export PYTHONPATH=%{buildroot}%{python3_sitelib}:%{python3_sitelib}
|
||||
cd -
|
||||
|
||||
%meson_install
|
||||
|
||||
# Delete files installed by meson
|
||||
rm -f %{buildroot}%{_bindir}/meson
|
||||
rm -rf %{buildroot}%{_mandir}/man1/meson.1*
|
||||
@ -569,6 +605,8 @@ rm -f %{buildroot}%{_datadir}/bash-completion/completions/meson
|
||||
rm -f %{buildroot}%{_datadir}/zsh/site-functions/_meson
|
||||
rm -rf %{buildroot}%{python3_sitelib}
|
||||
|
||||
|
||||
|
||||
# Delete files installed by libclc
|
||||
rm -fr %{buildroot}%{_libdir}/clc
|
||||
rm -f %{buildroot}%{_libdir}/pkgconfig/libclc.pc
|
||||
@ -586,19 +624,26 @@ rm -fr %{buildroot}%{_datadir}/wayland-protocols/
|
||||
|
||||
# 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
|
||||
# XXX can we just not build this
|
||||
rm -vf %{buildroot}%{_libdir}/libGLES*
|
||||
|
||||
%if ! 0%{?with_asahi}
|
||||
# This symlink is unconditionally created when any kmsro driver is enabled
|
||||
# We don't want this one so delete it
|
||||
rm -vf %{buildroot}%{_libdir}/dri/apple_dri.so
|
||||
%endif
|
||||
|
||||
# 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
|
||||
|
||||
# this keeps breaking, check it early. note that the exit from eu-ftr is odd.
|
||||
pushd %{buildroot}%{_libdir}
|
||||
for i in libOSMesa*.so libGL.so ; do
|
||||
for i in libGL.so ; do
|
||||
eu-findtextrel $i && exit 1
|
||||
done
|
||||
popd
|
||||
@ -625,39 +670,15 @@ popd
|
||||
%{_includedir}/EGL/eglext_angle.h
|
||||
%{_includedir}/EGL/eglmesaext.h
|
||||
|
||||
%files libOSMesa
|
||||
%{_libdir}/libOSMesa.so.8*
|
||||
%files libOSMesa-devel
|
||||
%dir %{_includedir}/GL
|
||||
%{_includedir}/GL/osmesa.h
|
||||
%{_libdir}/libOSMesa.so
|
||||
%{_libdir}/pkgconfig/osmesa.pc
|
||||
|
||||
%files libgbm
|
||||
%{_libdir}/libgbm.so.1
|
||||
%{_libdir}/libgbm.so.1.*
|
||||
%files libgbm-devel
|
||||
%{_libdir}/libgbm.so
|
||||
%{_includedir}/gbm.h
|
||||
%{_includedir}/gbm_backend_abi.h
|
||||
%{_libdir}/pkgconfig/gbm.pc
|
||||
|
||||
%if 0%{?with_xa}
|
||||
%files libxatracker
|
||||
%if 0%{?with_hardware}
|
||||
%{_libdir}/libxatracker.so.2
|
||||
%{_libdir}/libxatracker.so.2.*
|
||||
%endif
|
||||
|
||||
%files libxatracker-devel
|
||||
%if 0%{?with_hardware}
|
||||
%{_libdir}/libxatracker.so
|
||||
%{_includedir}/xa_tracker.h
|
||||
%{_includedir}/xa_composite.h
|
||||
%{_includedir}/xa_context.h
|
||||
%{_libdir}/pkgconfig/xatracker.pc
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if 0%{?with_teflon}
|
||||
%files libTeflon
|
||||
%{_libdir}/libteflon.so
|
||||
@ -665,27 +686,13 @@ popd
|
||||
|
||||
%if 0%{?with_opencl}
|
||||
%files libOpenCL
|
||||
%{_libdir}/libMesaOpenCL.so.*
|
||||
%{_libdir}/libRusticlOpenCL.so.*
|
||||
%{_sysconfdir}/OpenCL/vendors/mesa.icd
|
||||
%{_sysconfdir}/OpenCL/vendors/rusticl.icd
|
||||
|
||||
%files libOpenCL-devel
|
||||
%{_libdir}/libMesaOpenCL.so
|
||||
%{_libdir}/libRusticlOpenCL.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_nine}
|
||||
%files libd3d
|
||||
%dir %{_libdir}/d3d/
|
||||
%{_libdir}/d3d/*.so.*
|
||||
|
||||
%files libd3d-devel
|
||||
%{_libdir}/pkgconfig/d3d.pc
|
||||
%{_includedir}/d3dadapter/
|
||||
%{_libdir}/d3d/*.so
|
||||
%endif
|
||||
|
||||
%files dri-drivers
|
||||
%{_datadir}/drirc.d/00-mesa-defaults.conf
|
||||
%{_libdir}/libgallium-*.so
|
||||
@ -708,8 +715,18 @@ popd
|
||||
%ifarch %{ix86} x86_64
|
||||
%{_libdir}/dri/crocus_dri.so
|
||||
%{_libdir}/dri/iris_dri.so
|
||||
%if 0%{?with_i915}
|
||||
%{_libdir}/dri/i915_dri.so
|
||||
%endif
|
||||
%endif
|
||||
%ifarch %{arm} aarch64
|
||||
%if 0%{?with_asahi}
|
||||
%{_libdir}/dri/apple_dri.so
|
||||
%{_libdir}/dri/asahi_dri.so
|
||||
%endif
|
||||
%if 0%{?with_d3d12}
|
||||
%{_libdir}/dri/d3d12_dri.so
|
||||
%endif
|
||||
%{_libdir}/dri/ingenic-drm_dri.so
|
||||
%{_libdir}/dri/imx-drm_dri.so
|
||||
%{_libdir}/dri/imx-lcdif_dri.so
|
||||
@ -749,10 +766,6 @@ popd
|
||||
%{_libdir}/dri/vmwgfx_dri.so
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?with_opencl}
|
||||
%dir %{_libdir}/gallium-pipe
|
||||
%{_libdir}/gallium-pipe/*.so
|
||||
%endif
|
||||
%if 0%{?with_kmsro}
|
||||
%{_libdir}/dri/armada-drm_dri.so
|
||||
%{_libdir}/dri/exynos_dri.so
|
||||
@ -794,6 +807,9 @@ popd
|
||||
%if 0%{?with_radeonsi}
|
||||
%{_libdir}/dri/radeonsi_drv_video.so
|
||||
%endif
|
||||
%if 0%{?with_d3d12}
|
||||
%{_libdir}/dri/d3d12_drv_video.so
|
||||
%endif
|
||||
%{_libdir}/dri/virtio_gpu_drv_video.so
|
||||
%endif
|
||||
|
||||
@ -807,14 +823,34 @@ popd
|
||||
%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
|
||||
%{_libdir}/libspirv_to_dxil.a
|
||||
%{_libdir}/libspirv_to_dxil.so
|
||||
%endif
|
||||
|
||||
%files vulkan-drivers
|
||||
%if 0%{?with_nvk}
|
||||
%license LICENSE.dependencies
|
||||
%if 0%{?vendor_nvk_crates}
|
||||
%license cargo-vendor.txt
|
||||
%endif
|
||||
%endif
|
||||
%{_libdir}/libvulkan_lvp.so
|
||||
%{_datadir}/vulkan/icd.d/lvp_icd.*.json
|
||||
%{_libdir}/libVkLayer_MESA_device_select.so
|
||||
%{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
|
||||
%if 0%{?with_virtio}
|
||||
%{_libdir}/libvulkan_virtio.so
|
||||
%{_datadir}/vulkan/icd.d/virtio_icd.*.json
|
||||
%endif
|
||||
%if 0%{?with_vulkan_hw}
|
||||
%{_libdir}/libvulkan_radeon.so
|
||||
%{_datadir}/drirc.d/00-radv-defaults.conf
|
||||
@ -823,6 +859,10 @@ popd
|
||||
%{_libdir}/libvulkan_nouveau.so
|
||||
%{_datadir}/vulkan/icd.d/nouveau_icd.*.json
|
||||
%endif
|
||||
%if 0%{?with_d3d12}
|
||||
%{_libdir}/libvulkan_dzn.so
|
||||
%{_datadir}/vulkan/icd.d/dzn_icd.*.json
|
||||
%endif
|
||||
%ifarch %{ix86} x86_64
|
||||
%{_libdir}/libvulkan_intel.so
|
||||
%{_datadir}/vulkan/icd.d/intel_icd.*.json
|
||||
@ -830,6 +870,10 @@ popd
|
||||
%{_datadir}/vulkan/icd.d/intel_hasvk_icd.*.json
|
||||
%endif
|
||||
%ifarch %{arm} aarch64
|
||||
%if 0%{?with_asahi}
|
||||
%{_libdir}/libvulkan_asahi.so
|
||||
%{_datadir}/vulkan/icd.d/asahi_icd.*.json
|
||||
%endif
|
||||
%{_libdir}/libvulkan_broadcom.so
|
||||
%{_datadir}/vulkan/icd.d/broadcom_icd.*.json
|
||||
%{_libdir}/libvulkan_freedreno.so
|
||||
@ -843,6 +887,32 @@ popd
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon Feb 23 2026 José Expósito <jexposit@redhat.com> - 25.2.7-4
|
||||
- Fix s390x regressions
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-151315
|
||||
|
||||
* Wed Jan 28 2026 José Expósito <jexposit@redhat.com> - 25.2.7-3
|
||||
- Enable va-driver only in Fedora
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-144489
|
||||
|
||||
* Tue Jan 6 2026 Jocelyn Falempe <jfalempe@redhat.com - 25.2.7-2
|
||||
- Resolves: https://issues.redhat.com/browse/RHEL-105157
|
||||
|
||||
* Wed Nov 28 2025 Mika Penttilä <mpenttil@redhat.com> - 25.2.7-1
|
||||
- Resolves: https://issues.redhat.com/browse/RHEL-132415
|
||||
|
||||
* Tue Nov 18 2025 Mika Penttilä José Expósito <jexposit@redhat.com> - 25.2.5-2
|
||||
- Disable LTO globally
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-128255
|
||||
|
||||
* Wed Nov 5 2025 Mika Penttilä <mpenttila@redhat.com - 25.2.5
|
||||
- Resolves: https://issues.redhat.com/browse/RHEL-107477
|
||||
Enable NVK also for RHEL 9
|
||||
|
||||
* Thu Sep 18 2025 Jocelyn Falempe <jfalempe@redhat.com> - 25.0.7-3
|
||||
- Fix black screen on ppc64le
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-113831
|
||||
|
||||
* Wed Jul 16 2025 Anusha Srivatsa <asrivats@redhat.com> - 25.0.7-2
|
||||
- NV dGFX fix for firefox crashing
|
||||
Backport fixes for NV dGFX driver crashing firefox
|
||||
|
||||
Loading…
Reference in New Issue
Block a user