From 235abfb7e689a3fcf400764510d4bb670c9bea98 Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Wed, 27 Jan 2016 12:08:56 -0800 Subject: [PATCH] anv/image: Enlarge the image level 0 extent The extent previously was supposed to match the mip at a given level under the assumption that the base address would be that of the mip as well. Now however, the base address only matches the offset of the containing tile. Therefore, enlarge the extent to match that of phys_slice0, so that we don't draw/fetch in out of bounds territory. This solution isn't perfect because the base adress isn't always at the first tile, therefore the assumed valid memory region by the HW contains some number of invalid tiles on two edges. --- src/vulkan/anv_image.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vulkan/anv_image.c b/src/vulkan/anv_image.c index 2622b11b89e..889a9e87d79 100644 --- a/src/vulkan/anv_image.c +++ b/src/vulkan/anv_image.c @@ -544,12 +544,12 @@ anv_image_view_init(struct anv_image_view *iview, * data from a source Image to a destination Image. */ const struct isl_format_layout * isl_layout = image->format->isl_layout; - iview->level_0_extent.width = anv_minify(image->extent.width, range->baseMipLevel); - iview->level_0_extent.height = anv_minify(image->extent.height, range->baseMipLevel); + iview->level_0_extent.depth = anv_minify(image->extent.depth, range->baseMipLevel); - iview->level_0_extent.width = DIV_ROUND_UP(iview->level_0_extent.width, isl_layout->bw); - iview->level_0_extent.height = DIV_ROUND_UP(iview->level_0_extent.height, isl_layout->bh); iview->level_0_extent.depth = DIV_ROUND_UP(iview->level_0_extent.depth, isl_layout->bd); + + iview->level_0_extent.height = isl_surf_get_array_pitch_el_rows(&surface->isl); + iview->level_0_extent.width = isl_surf_get_row_pitch_el(&surface->isl); mCreateInfo.subresourceRange.baseMipLevel = 0; mCreateInfo.subresourceRange.baseArrayLayer = 0; } else { -- 2.30.2