Mesa (main): radv/winsys: fix initializing debug/perftest options if multiple instances

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 16:08:55 UTC 2022


Module: Mesa
Branch: main
Commit: aa3405e8123324b3d8173c709e6573d86570d99a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa3405e8123324b3d8173c709e6573d86570d99a

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Feb 11 11:17:49 2022 +0100

radv/winsys: fix initializing debug/perftest options if multiple instances

Since the winsys uses refcount, options like RADV_DEBUG_ZERO_VRAM might
have not been initialized if the first instance wasn't created with
application info.

This fixes missing zerovram for vkd3d-proton.

Cc: 21.3 22.0 mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14978>

---

 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index 122447b4055..847a5091b42 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -217,6 +217,20 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
    if (ws) {
       simple_mtx_unlock(&winsys_creation_mutex);
       amdgpu_device_deinitialize(dev);
+
+      /* Check that options don't differ from the existing winsys. */
+      if (((debug_flags & RADV_DEBUG_ALL_BOS) && !ws->debug_all_bos) ||
+          ((debug_flags & RADV_DEBUG_HANG) && !ws->debug_log_bos) ||
+          ((debug_flags & RADV_DEBUG_NO_IBS) && ws->use_ib_bos) ||
+          (perftest_flags != ws->perftest)) {
+         fprintf(stderr, "amdgpu: Found options that differ from the existing winsys.\n");
+         return NULL;
+      }
+
+      /* RADV_DEBUG_ZERO_VRAM is the only option that is allowed to be set again. */
+      if (debug_flags & RADV_DEBUG_ZERO_VRAM)
+         ws->zero_all_vram_allocs = true;
+
       return &ws->base;
    }
 



More information about the mesa-commit mailing list