From 7c2ee1d626a862a08c1abef174398db5691a7f24 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 28 Apr 2021 17:21:23 +0200 Subject: [PATCH] radv: check if DCC is enabled when resolving different levels Fixes an assertion triggered by new CTS: dEQP-VK.renderpass2.suballocation.multisample_resolve.*_resolve_level_* Looks like the driver should pass a range to radv_layout_dcc_compressed(). Cc: 21.1 mesa-stable Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: (cherry picked from commit 80f55e51634cf78b474a5a02e1dd9f4645cc3772) --- .pick_status.json | 2 +- src/amd/vulkan/radv_meta_resolve_cs.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d7838c13ba2..e0f14b11c5f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -355,7 +355,7 @@ "description": "radv: check if DCC is enabled when resolving different levels", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c index 176063967e0..9dc2c2b0ce5 100644 --- a/src/amd/vulkan/radv_meta_resolve_cs.c +++ b/src/amd/vulkan/radv_meta_resolve_cs.c @@ -678,7 +678,8 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_ uint32_t queue_mask = radv_image_queue_family_mask(dest_image, cmd_buffer->queue_family_index, cmd_buffer->queue_family_index); - if (radv_layout_dcc_compressed(cmd_buffer->device, dest_image, dest_image_layout, false, + if (radv_dcc_enabled(dest_image, region->dstSubresource.mipLevel) && + radv_layout_dcc_compressed(cmd_buffer->device, dest_image, dest_image_layout, false, queue_mask) && (region->dstOffset.x || region->dstOffset.y || region->dstOffset.z || region->extent.width != dest_image->info.width || @@ -760,6 +761,7 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_ radv_meta_restore(&saved_state, cmd_buffer); if (!radv_image_use_dcc_image_stores(cmd_buffer->device, dest_image) && + radv_dcc_enabled(dest_image, region->dstSubresource.mipLevel) && radv_layout_dcc_compressed(cmd_buffer->device, dest_image, dest_image_layout, false, queue_mask)) {