radv: allow ds<->color copies on compute/transfer queues

This should be supported just fine.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38043>
This commit is contained in:
Samuel Pitoiset 2025-06-16 16:11:25 +02:00 committed by Marge Bot
parent 49128926d6
commit 0034f5a948
3 changed files with 13 additions and 1 deletions

View file

@ -387,6 +387,16 @@ radv_physical_device_get_format_properties(struct radv_physical_device *pdev, Vk
if (vk_format_has_depth(format) && vk_format_has_stencil(format))
tiled &= ~VK_FORMAT_FEATURE_2_BLIT_DST_BIT;
if (radv_compute_queue_enabled(pdev)) {
tiled |= VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR |
VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR;
}
if (radv_transfer_queue_enabled(pdev)) {
tiled |= VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR |
VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR;
}
/* Don't support linear depth surfaces */
linear = 0;
}

View file

@ -72,7 +72,7 @@ radv_taskmesh_enabled(const struct radv_physical_device *pdev)
pdev->info.has_gang_submit;
}
static bool
bool
radv_transfer_queue_enabled(const struct radv_physical_device *pdev)
{
const struct radv_instance *instance = radv_physical_device_instance(pdev);

View file

@ -304,6 +304,8 @@ VkResult create_drm_physical_device(struct vk_instance *vk_instance, struct _drm
void radv_physical_device_destroy(struct vk_physical_device *vk_pdev);
bool radv_transfer_queue_enabled(const struct radv_physical_device *pdev);
bool radv_compute_queue_enabled(const struct radv_physical_device *pdev);
static inline uint32_t