Module: Mesa Branch: staging/23.3 Commit: 629378d83ff1b88ea1c03fa02f2737f5ca6e887d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=629378d83ff1b88ea1c03fa02f2737f5ca6e887d
Author: Samuel Pitoiset <[email protected]> Date: Tue Nov 14 08:35:58 2023 +0100 radv: fix registering queues for RGP with compute only This crashes if the graphics queue isn't created. Fixes: 930e77e9036 ("radv/sqtt: add support for queue info") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10136 Signed-off-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26183> (cherry picked from commit 627d59344381907bd13eeb48a6737bd2561e64d8) --- .pick_status.json | 2 +- src/amd/vulkan/radv_sqtt.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 8187c11fe37..449dd98a191 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "radv: fix registering queues for RGP with compute only", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "930e77e9036a75196e080cb4b780c47104bf0ef2", "notes": null diff --git a/src/amd/vulkan/radv_sqtt.c b/src/amd/vulkan/radv_sqtt.c index 6c3fa93861a..979b9f9d845 100644 --- a/src/amd/vulkan/radv_sqtt.c +++ b/src/amd/vulkan/radv_sqtt.c @@ -579,7 +579,9 @@ radv_unregister_queue(struct radv_device *device, struct radv_queue *queue) static void radv_register_queues(struct radv_device *device, struct ac_sqtt *sqtt) { - radv_register_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + if (device->queue_count[RADV_QUEUE_GENERAL] == 1) + radv_register_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + for (uint32_t i = 0; i < device->queue_count[RADV_QUEUE_COMPUTE]; i++) radv_register_queue(device, &device->queues[RADV_QUEUE_COMPUTE][i]); } @@ -587,7 +589,9 @@ radv_register_queues(struct radv_device *device, struct ac_sqtt *sqtt) static void radv_unregister_queues(struct radv_device *device, struct ac_sqtt *sqtt) { - radv_unregister_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + if (device->queue_count[RADV_QUEUE_GENERAL] == 1) + radv_unregister_queue(device, &device->queues[RADV_QUEUE_GENERAL][0]); + for (uint32_t i = 0; i < device->queue_count[RADV_QUEUE_COMPUTE]; i++) radv_unregister_queue(device, &device->queues[RADV_QUEUE_COMPUTE][i]); }
