diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index e22df735b44..4a591af14f6 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -355,7 +355,7 @@ radv_describe_begin_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) if (cmd_buffer->qf == RADV_QUEUE_GENERAL) marker.queue_flags |= VK_QUEUE_GRAPHICS_BIT; - if (!radv_sparse_queue_enabled(pdev)) + if (!radv_dedicated_sparse_queue_enabled(pdev)) marker.queue_flags |= VK_QUEUE_SPARSE_BINDING_BIT; radv_emit_sqtt_userdata(cmd_buffer, &marker, sizeof(marker) / 4); diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 87609f84827..4fca7103f47 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -318,7 +318,7 @@ radv_physical_device_init_queue_table(struct radv_physical_device *pdev) } } - if (radv_sparse_queue_enabled(pdev)) { + if (radv_dedicated_sparse_queue_enabled(pdev)) { pdev->vk_queue_to_radv[idx] = RADV_QUEUE_SPARSE; idx++; } @@ -2401,7 +2401,7 @@ radv_get_physical_device_queue_family_properties(struct radv_physical_device *pd num_queue_families++; } - if (radv_sparse_queue_enabled(pdev)) { + if (radv_dedicated_sparse_queue_enabled(pdev)) { num_queue_families++; } @@ -2415,9 +2415,8 @@ radv_get_physical_device_queue_family_properties(struct radv_physical_device *pd idx = 0; if (*pCount >= 1) { - VkQueueFlags gfx_flags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT; - if (!radv_sparse_queue_enabled(pdev)) - gfx_flags |= VK_QUEUE_SPARSE_BINDING_BIT; + VkQueueFlags gfx_flags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | + VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT; *pQueueFamilyProperties[idx] = (VkQueueFamilyProperties){ .queueFlags = gfx_flags, .queueCount = 1, @@ -2428,9 +2427,7 @@ radv_get_physical_device_queue_family_properties(struct radv_physical_device *pd } if (pdev->info.ip[AMD_IP_COMPUTE].num_queues > 0 && !(instance->debug_flags & RADV_DEBUG_NO_COMPUTE_QUEUE)) { - VkQueueFlags compute_flags = VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT; - if (!radv_sparse_queue_enabled(pdev)) - compute_flags |= VK_QUEUE_SPARSE_BINDING_BIT; + VkQueueFlags compute_flags = VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT; if (*pCount > idx) { *pQueueFamilyProperties[idx] = (VkQueueFamilyProperties){ .queueFlags = compute_flags, @@ -2459,7 +2456,7 @@ radv_get_physical_device_queue_family_properties(struct radv_physical_device *pd if (radv_transfer_queue_enabled(pdev)) { if (*pCount > idx) { *pQueueFamilyProperties[idx] = (VkQueueFamilyProperties){ - .queueFlags = VK_QUEUE_TRANSFER_BIT, + .queueFlags = VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT, .queueCount = pdev->info.ip[AMD_IP_SDMA].num_queues, .timestampValidBits = 64, .minImageTransferGranularity = (VkExtent3D){16, 16, 8}, @@ -2482,7 +2479,7 @@ radv_get_physical_device_queue_family_properties(struct radv_physical_device *pd } } - if (radv_sparse_queue_enabled(pdev)) { + if (radv_dedicated_sparse_queue_enabled(pdev)) { if (*pCount > idx) { *pQueueFamilyProperties[idx] = (VkQueueFamilyProperties){ .queueFlags = VK_QUEUE_SPARSE_BINDING_BIT, diff --git a/src/amd/vulkan/radv_physical_device.h b/src/amd/vulkan/radv_physical_device.h index 733c8628d76..be255980ad2 100644 --- a/src/amd/vulkan/radv_physical_device.h +++ b/src/amd/vulkan/radv_physical_device.h @@ -195,7 +195,7 @@ radv_physical_device_instance(const struct radv_physical_device *pdev) } static inline bool -radv_sparse_queue_enabled(const struct radv_physical_device *pdev) +radv_dedicated_sparse_queue_enabled(const struct radv_physical_device *pdev) { const struct radv_instance *instance = radv_physical_device_instance(pdev); diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 53396e28d3a..d249a808a36 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -1896,16 +1896,10 @@ radv_queue_submit(struct vk_queue *vqueue, struct vk_queue_submit *submission) { struct radv_queue *queue = (struct radv_queue *)vqueue; struct radv_device *device = radv_queue_device(queue); - const struct radv_physical_device *pdev = radv_device_physical(device); - VkResult result; - if (!radv_sparse_queue_enabled(pdev)) { - result = radv_queue_submit_bind_sparse_memory(device, submission); - if (result != VK_SUCCESS) - goto fail; - } else { - assert(!submission->buffer_bind_count && !submission->image_bind_count && !submission->image_opaque_bind_count); - } + VkResult result = radv_queue_submit_bind_sparse_memory(device, submission); + if (result != VK_SUCCESS) + goto fail; if (!submission->command_buffer_count && !submission->wait_count && !submission->signal_count) return VK_SUCCESS;