From ae235e0f225859d6306aea292b13ad3e183d7267 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 16 Dec 2019 14:21:29 +0100 Subject: [PATCH] v3dv: store base mip level in the image view Part-of: --- src/broadcom/vulkan/v3dv_image.c | 10 ++++++---- src/broadcom/vulkan/v3dv_private.h | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_image.c b/src/broadcom/vulkan/v3dv_image.c index d4badd46749..e149ae9ddf6 100644 --- a/src/broadcom/vulkan/v3dv_image.c +++ b/src/broadcom/vulkan/v3dv_image.c @@ -358,16 +358,18 @@ v3dv_CreateImageView(VkDevice _device, iview->image = image; iview->aspects = range->aspectMask; + + iview->base_level = range->baseMipLevel; iview->extent = (VkExtent3D) { - .width = u_minify(image->extent.width , range->baseMipLevel), - .height = u_minify(image->extent.height, range->baseMipLevel), - .depth = u_minify(image->extent.depth , range->baseMipLevel), + .width = u_minify(image->extent.width , iview->base_level), + .height = u_minify(image->extent.height, iview->base_level), + .depth = u_minify(image->extent.depth , iview->base_level), }; iview->first_layer = range->baseArrayLayer; iview->last_layer = range->baseArrayLayer + v3dv_layer_count(image, range) - 1; - iview->offset = layer_offset(image, range->baseMipLevel, iview->first_layer); + iview->offset = layer_offset(image, iview->base_level, iview->first_layer); iview->tiling = image->slices[0].tiling; diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 616fc756c02..7d00e176fa3 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -281,6 +281,7 @@ struct v3dv_image_view { uint32_t internal_bpp; uint32_t internal_type; + uint32_t base_level; uint32_t first_layer; uint32_t last_layer; uint32_t offset;