radv: Initialize DCC on transition from preinitialized.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 11 Jan 2018 12:21:50 +0000 (13:21 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 18 Jan 2018 00:57:52 +0000 (01:57 +0100)
Looks like the decompress does not handle invalid encodings well,
which happens with random memory. Of course apps should not use it
with random memory, but they are allowed to ....

Fixes: 44fcf58744 "radv: Disable DCC for GENERAL layout and compute transfer dest."
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_cmd_buffer.c

index 67799a13cc242314f874ed0c340d1bad12a50b31..172f95e7c99537a508059eb1d16f39f2f6bd992f 100644 (file)
@@ -4026,7 +4026,9 @@ static void radv_handle_dcc_image_transition(struct radv_cmd_buffer *cmd_buffer,
                                             unsigned dst_queue_mask,
                                             const VkImageSubresourceRange *range)
 {
-       if (src_layout == VK_IMAGE_LAYOUT_UNDEFINED) {
+       if (src_layout == VK_IMAGE_LAYOUT_PREINITIALIZED) {
+               radv_initialize_dcc(cmd_buffer, image, 0xffffffffu);
+       } else if (src_layout == VK_IMAGE_LAYOUT_UNDEFINED) {
                radv_initialize_dcc(cmd_buffer, image,
                                    radv_layout_dcc_compressed(image, dst_layout, dst_queue_mask) ?
                                         0x20202020u : 0xffffffffu);