diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c index 9d32f0c92fc..78a88981ba8 100644 --- a/src/amd/vulkan/radv_wsi.c +++ b/src/amd/vulkan/radv_wsi.c @@ -54,10 +54,22 @@ radv_wsi_get_prime_blit_queue(VkDevice _device) if (pdev->info.gfx_level >= GFX9 && !(instance->debug_flags & RADV_DEBUG_NO_DMA_BLIT)) { - pdev->vk_queue_to_radv[pdev->num_queues++] = RADV_QUEUE_TRANSFER; + uint32_t queue_family_index = pdev->num_queues; + for (uint32_t i = 0; i < pdev->num_queues; i++) { + if (pdev->vk_queue_to_radv[i] == RADV_QUEUE_TRANSFER) { + queue_family_index = i; + break; + } + } + + if (queue_family_index == pdev->num_queues) { + assert(pdev->num_queues < RADV_MAX_QUEUE_FAMILIES); + pdev->vk_queue_to_radv[pdev->num_queues++] = RADV_QUEUE_TRANSFER; + } + const VkDeviceQueueCreateInfo queue_create = { .sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, - .queueFamilyIndex = pdev->num_queues - 1, + .queueFamilyIndex = queue_family_index, .queueCount = 1, };