diff options
author | Nanley Chery <[email protected]> | 2019-10-21 12:56:00 -0700 |
---|---|---|
committer | Nanley Chery <[email protected]> | 2019-10-28 10:47:04 -0700 |
commit | d0fcc2dd503f734f10f879ad666c27fd81c44262 (patch) | |
tree | 8bd27e98f04dd38363ee392922fa38b331bf62a0 | |
parent | 698d723a6d4f19de750fafc9287f1bd74f25ba07 (diff) |
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 <[email protected]>
-rw-r--r-- | src/intel/vulkan/anv_image.c | 6 | ||||
-rw-r--r-- | 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; } |