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

Jason Ekstrand jason at jlekstrand.net
Sat Oct 8 00:34:14 UTC 2016


On Fri, Oct 7, 2016 at 4:45 PM, Nanley Chery <nanleychery at gmail.com> wrote:

> 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()?
>

Because rendering to a subrange of a 3D texture is a thing (and required by
GL).  In Vulkan, things are a bit simpler.


> -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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161007/bd376f6d/attachment.html>


More information about the mesa-dev mailing list