[Mesa-dev] [PATCH 2/2] anv: image: report correct depthPicth for 3d images
Jason Ekstrand
jason at jlekstrand.net
Tue Dec 6 17:24:48 UTC 2016
On Tue, Dec 6, 2016 at 3:05 AM, Lionel Landwerlin <llandwerlin at gmail.com>
wrote:
> With a 3d image of 2x2x3, vkGetImageSubresourceLayout currently reports :
> VkSubresourceLayout = { offset = 0,
> size = 160,
> rowPitch = 16,
> arrayPitch = 96,
> depthPitch = 96 }
>
> depthPitch should be 32.
> Use the newly introduce isl function to query the depth.
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> src/intel/vulkan/anv_image.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index e60373a151..af5e3c4974 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -363,7 +363,8 @@ VkResult anv_BindImageMemory(
> }
>
> static void
> -anv_surface_get_subresource_layout(struct anv_image *image,
> +anv_surface_get_subresource_layout(struct anv_device *device,
> + struct anv_image *image,
> struct anv_surface *surface,
> const VkImageSubresource *subresource,
> VkSubresourceLayout *layout)
> @@ -376,32 +377,34 @@ anv_surface_get_subresource_layout(struct anv_image
> *image,
>
> layout->offset = surface->offset;
> layout->rowPitch = surface->isl.row_pitch;
> - layout->depthPitch = isl_surf_get_array_pitch(&surface->isl);
> + layout->depthPitch = isl_surf_get_depth_pitch(&device->isl_dev,
> + &surface->isl);
>
We want this to be 0 for lod > 0 on Broadwell and older. Let's not lie
with a number that looks like it could be valid.
> layout->arrayPitch = isl_surf_get_array_pitch(&surface->isl);
>
I think we want this to be 0 for 3D
> layout->size = surface->isl.size;
> }
>
> void anv_GetImageSubresourceLayout(
> - VkDevice device,
> + VkDevice _device,
> VkImage _image,
> const VkImageSubresource* pSubresource,
> VkSubresourceLayout* pLayout)
> {
> + ANV_FROM_HANDLE(anv_device, device, _device);
> ANV_FROM_HANDLE(anv_image, image, _image);
>
> assert(__builtin_popcount(pSubresource->aspectMask) == 1);
>
> switch (pSubresource->aspectMask) {
> case VK_IMAGE_ASPECT_COLOR_BIT:
> - anv_surface_get_subresource_layout(image, &image->color_surface,
> + anv_surface_get_subresource_layout(device, image,
> &image->color_surface,
> pSubresource, pLayout);
> break;
> case VK_IMAGE_ASPECT_DEPTH_BIT:
> - anv_surface_get_subresource_layout(image, &image->depth_surface,
> + anv_surface_get_subresource_layout(device, image,
> &image->depth_surface,
> pSubresource, pLayout);
> break;
> case VK_IMAGE_ASPECT_STENCIL_BIT:
> - anv_surface_get_subresource_layout(image, &image->stencil_surface,
> + anv_surface_get_subresource_layout(device, image,
> &image->stencil_surface,
> pSubresource, pLayout);
> break;
> default:
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161206/cca517ae/attachment.html>
More information about the mesa-dev
mailing list