diff --git a/.pick_status.json b/.pick_status.json index bf045feb5df..b0cee274fa1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -22,7 +22,7 @@ "description": "radv: initialize with expanded cmask if the destination layout needs it", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "7b21ce401f7e81deca5ab6a4353b1369d059bcee" }, diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index ab1e1a6d2c8..af68af599a3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -5517,8 +5517,16 @@ static void radv_init_color_image_metadata(struct radv_cmd_buffer *cmd_buffer, if (radv_image_has_cmask(image)) { uint32_t value = 0xffffffffu; /* Fully expanded mode. */ - /* TODO: clarify this. */ - if (radv_image_has_fmask(image)) { + /* TODO: clarify why 0xccccccccu is used. */ + + /* If CMASK isn't updated with the new layout, we should use the + * fully expanded mode so that the image is read correctly if + * CMASK is used (such as when transitioning to a compressed + * layout). + */ + if (radv_image_has_fmask(image) && + radv_layout_can_fast_clear(image, dst_layout, + dst_render_loop, dst_queue_mask)) { value = 0xccccccccu; }