From: Nanley Chery Date: Mon, 21 Oct 2019 19:56:00 +0000 (-0700) Subject: anv: Properly allocate aux-tracking space for CCS_E X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d0fcc2dd503f734f10f879ad666c27fd81c44262;p=mesa.git 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 --- 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; }