Files
packages/anda/lib/mesa/34005.patch
T
Raboneko 0c13a92151 feat(mesa): Add patch for vram issue in Mesa 25 (#3880) (#3883)
* Add patch for vram issue in Mesa 25

Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>

* Use new patch

Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>

* Increase release number

Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>

---------

Signed-off-by: Kyle Gospodnetich <me@kylegospodneti.ch>
(cherry picked from commit cf80e1cfba)

Co-authored-by: Kyle Gospodnetich <me@kylegospodneti.ch>
2025-03-13 12:50:46 +08:00

47 lines
1.9 KiB
Diff

From c6270978411609f52afb8c6a2219fcb94f9013bb Mon Sep 17 00:00:00 2001
From: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Date: Tue, 11 Mar 2025 15:29:37 +0100
Subject: [PATCH] radv/amdgpu: fix device deduplication
To correctly deduplicate device inside the winsys, it should use the
fd or amdgpu_device_handle. Using the allocated ac_drm_device as key
is obviously broken.
Not deduplicating devices breaks memory budget and a bunch of games
were broken.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12686
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12775
Fixes: a565f2994fe ("amd: move all uses of libdrm_amdgpu to ac_linux_drm")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34005>
---
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index be8df8708c813..8b57abeb0b1ca 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -234,7 +234,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
goto fail;
}
- struct hash_entry *entry = _mesa_hash_table_search(winsyses, dev);
+ struct hash_entry *entry = _mesa_hash_table_search(winsyses, (void *)ac_drm_device_get_cookie(dev));
if (entry) {
ws = (struct radv_amdgpu_winsys *)entry->data;
++ws->refcount;
@@ -325,7 +325,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
radv_amdgpu_bo_init_functions(ws);
radv_amdgpu_cs_init_functions(ws);
- _mesa_hash_table_insert(winsyses, dev, ws);
+ _mesa_hash_table_insert(winsyses, (void *)ac_drm_device_get_cookie(dev), ws);
simple_mtx_unlock(&winsys_creation_mutex);
return &ws->base;
--
GitLab