mirror of
https://src.fedoraproject.org/rpms/mesa.git
synced 2024-11-24 09:32:42 +00:00
Fix zink crash and re-enable the automatic fallback
This commit is contained in:
parent
beecf70924
commit
53f97b7f12
3 changed files with 40 additions and 27 deletions
|
@ -1,26 +0,0 @@
|
||||||
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
|
|
||||||
index d50be23e871..e3697622635 100644
|
|
||||||
--- a/src/egl/main/eglapi.c
|
|
||||||
+++ b/src/egl/main/eglapi.c
|
|
||||||
@@ -695,17 +695,21 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
|
|
||||||
if (disp->Options.ForceSoftware)
|
|
||||||
RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
|
|
||||||
else {
|
|
||||||
+#if 0
|
|
||||||
bool success = false;
|
|
||||||
if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) {
|
|
||||||
disp->Options.Zink = EGL_TRUE;
|
|
||||||
success = _eglDriver.Initialize(disp);
|
|
||||||
}
|
|
||||||
if (!success) {
|
|
||||||
+#endif
|
|
||||||
disp->Options.Zink = EGL_FALSE;
|
|
||||||
disp->Options.ForceSoftware = EGL_TRUE;
|
|
||||||
if (!_eglDriver.Initialize(disp))
|
|
||||||
RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
|
|
||||||
+#if 0
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ Source1: Mesa-MLAA-License-Clarification-Email.txt
|
||||||
Patch10: gnome-shell-glthread-disable.patch
|
Patch10: gnome-shell-glthread-disable.patch
|
||||||
Patch11: 0001-intel-compiler-reemit-boolean-resolve-for-inverted-i.patch
|
Patch11: 0001-intel-compiler-reemit-boolean-resolve-for-inverted-i.patch
|
||||||
Patch12: 0001-intel-compiler-fix-release-build-unused-variable.patch
|
Patch12: 0001-intel-compiler-fix-release-build-unused-variable.patch
|
||||||
Patch13: disable-zink-egl-fallback.patch
|
Patch13: zink-fix-resizable-bar-detection-logic.patch
|
||||||
Patch14: mesa-meson-c99.patch
|
Patch14: mesa-meson-c99.patch
|
||||||
|
|
||||||
BuildRequires: meson >= 1.2.0
|
BuildRequires: meson >= 1.2.0
|
||||||
|
|
39
zink-fix-resizable-bar-detection-logic.patch
Normal file
39
zink-fix-resizable-bar-detection-logic.patch
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
From a077c14f150f1c4f670dce381ac2eb548f1a4ac2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alessandro Astone <ales.astone@gmail.com>
|
||||||
|
Date: Wed, 10 Jan 2024 17:24:30 +0100
|
||||||
|
Subject: [PATCH] zink: Fix resizable BAR detection logic
|
||||||
|
|
||||||
|
This was broken in two ways:
|
||||||
|
* When looking for the MAX biggest_ram it was actually comparing
|
||||||
|
a candidate against biggest_vis_ram
|
||||||
|
|
||||||
|
* mem_props.memoryTypes[] should be accessed with the memory type
|
||||||
|
index as found in heap_map
|
||||||
|
|
||||||
|
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10341
|
||||||
|
Cc: 23.3 <mesa-stable>
|
||||||
|
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26979>
|
||||||
|
---
|
||||||
|
src/gallium/drivers/zink/zink_screen.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
|
||||||
|
index 5a6d17cb4fa3..6697d7ab938c 100644
|
||||||
|
--- a/src/gallium/drivers/zink/zink_screen.c
|
||||||
|
+++ b/src/gallium/drivers/zink/zink_screen.c
|
||||||
|
@@ -3258,10 +3258,10 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||||
|
{
|
||||||
|
uint64_t biggest_vis_vram = 0;
|
||||||
|
for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL_VISIBLE]; i++)
|
||||||
|
- biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size);
|
||||||
|
+ biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL_VISIBLE][i]].heapIndex].size);
|
||||||
|
uint64_t biggest_vram = 0;
|
||||||
|
for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL]; i++)
|
||||||
|
- biggest_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size);
|
||||||
|
+ biggest_vram = MAX2(biggest_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL][i]].heapIndex].size);
|
||||||
|
/* determine if vis vram is roughly equal to total vram */
|
||||||
|
if (biggest_vis_vram > biggest_vram * 0.9)
|
||||||
|
screen->resizable_bar = true;
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
Loading…
Reference in a new issue