[Mesa-dev] [PATCH 03/13] anv/image: Rework our handling of 3-D image array ranges

Nanley Chery nanleychery at gmail.com
Fri Oct 7 23:45:43 UTC 2016


On Sun, Sep 25, 2016 at 09:59:02AM -0700, Jason Ekstrand wrote:
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  src/intel/vulkan/anv_image.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> index f6e8672..f55c9b6 100644
> --- a/src/intel/vulkan/anv_image.c
> +++ b/src/intel/vulkan/anv_image.c
> @@ -432,6 +432,18 @@ anv_image_view_init(struct anv_image_view *iview,
>        .depth  = anv_minify(image->extent.depth , range->baseMipLevel),
>     };
>  
> +   if (image->type == VK_IMAGE_TYPE_3D &&
> +       usage_mask != VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) {
> +      /* Meta renders to 3D texture slices.  When it does so, it passes
> +       * usage_mask == VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT.  Since meta is the
> +       * only thing that uses a non-zero usage_mask, this lets us easily
> +       * detect the one case where we actually want an array range used for
> +       * 3-D textures.
> +       */
> +      isl_view.base_array_layer = 0;
> +      isl_view.array_len = iview->extent.depth;
> +   }
> +

Any idea why we modify the array_len here instead of just looking up the
depth and miplevel in isl_surf_fill_state()?

-Nanley

>     isl_surf_usage_flags_t cube_usage;
>     if (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_CUBE ||
>         pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) {
> @@ -492,10 +504,6 @@ anv_image_view_init(struct anv_image_view *iview,
>           isl_view.usage = cube_usage | ISL_SURF_USAGE_STORAGE_BIT;
>           isl_view.format = isl_lower_storage_image_format(&device->info,
>                                                            isl_view.format);
> -         if (image->type == VK_IMAGE_TYPE_3D) {
> -            isl_view.base_array_layer = 0;
> -            isl_view.array_len = iview->extent.depth;
> -         }
>           isl_surf_fill_state(&device->isl_dev,
>                               iview->storage_surface_state.map,
>                               .surf = &surface->isl,
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list