Mesa (master): radv: Initialize DCC on transition from preinitialized.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Thu Jan 18 01:19:39 UTC 2018


Module: Mesa
Branch: master
Commit: 2ce11ac11fee594ca01608c4006b38c0c8ea37ff
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ce11ac11fee594ca01608c4006b38c0c8ea37ff

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Thu Jan 11 13:21:50 2018 +0100

radv: Initialize DCC on transition from preinitialized.

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 at redhat.com>

---

 src/amd/vulkan/radv_cmd_buffer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 67799a13cc..172f95e7c9 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -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);




More information about the mesa-commit mailing list