From d0fcc2dd503f734f10f879ad666c27fd81c44262 Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Mon, 21 Oct 2019 12:56:00 -0700 Subject: [PATCH] anv: Properly allocate aux-tracking space for CCS_E add_aux_state_tracking_buffer() actually checks the aux usage when determining how many dwords to allocate for state tracking. Move the function call to the point after the CCS_E aux usage is assigned. Fixes: de3be618016 ("anv/cmd_buffer: Rework aux tracking") Reviewed-by: Kenneth Graunke --- src/intel/vulkan/anv_image.c | 6 +++--- src/intel/vulkan/anv_private.h | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 84b9fde0751..8db8642b5d5 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -470,9 +470,6 @@ make_surface(const struct anv_device *dev, return VK_SUCCESS; } - add_surface(image, &image->planes[plane].aux_surface, plane); - add_aux_state_tracking_buffer(image, plane, dev); - /* For images created without MUTABLE_FORMAT_BIT set, we know that * they will always be used with the original format. In * particular, they will always be used with a format that @@ -485,6 +482,9 @@ make_surface(const struct anv_device *dev, image->ccs_e_compatible) { image->planes[plane].aux_usage = ISL_AUX_USAGE_CCS_E; } + + add_surface(image, &image->planes[plane].aux_surface, plane); + add_aux_state_tracking_buffer(image, plane, dev); } } } else if ((aspect & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) && image->samples > 1) { diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index cce986b7412..c6f5ff7cfeb 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3309,6 +3309,8 @@ anv_image_get_compression_state_addr(const struct anv_device *device, } addr.offset += array_layer * 4; + assert(addr.offset < + image->planes[plane].address.offset + image->planes[plane].size); return addr; } -- 2.30.2