summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2022-02-11 11:17:49 +0100
committerDylan Baker <dylan.c.baker@intel.com>2022-02-24 14:56:50 -0800
commit95f87609de568cbcfbd98a18a2cde3e144423e45 (patch)
treea8eb947a65be8f8485b9703935431ecc70781739
parent0fd825b4f4751825e9a953347d54c2336c3168a5 (diff)
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@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14978> (cherry picked from commit aa3405e8123324b3d8173c709e6573d86570d99a)
-rw-r--r--.pick_status.json2
-rw-r--r--src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json
index f9f5ff17d32..5f55ec4246b 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1111,7 +1111,7 @@
"description": "radv/winsys: fix initializing debug/perftest options if multiple instances",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null
},
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;
}