[Mesa-dev] [PATCH v2 03/21] anv: Replace anv_image_has_hiz() with ISL_AUX_USAGE_HIZ

Nanley Chery nanleychery at gmail.com
Fri Jan 13 04:32:09 UTC 2017


On Thu, Jan 12, 2017 at 06:17:58PM -0800, Jason Ekstrand wrote:
> On Thu, Jan 12, 2017 at 5:33 PM, Nanley Chery <nanleychery at gmail.com> wrote:
> 
> > The helper doesn't provide additional functionality over the current
> > infrastructure.
> >
> > v2: Add comment to anv_image::aux_usage (Jason Ekstrand)
> >
> > Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> > ---
> >  src/intel/vulkan/anv_blorp.c       |  2 +-
> >  src/intel/vulkan/anv_image.c       | 10 ++++++++--
> >  src/intel/vulkan/anv_private.h     | 15 ++++-----------
> >  src/intel/vulkan/gen8_cmd_buffer.c |  2 +-
> >  src/intel/vulkan/genX_cmd_buffer.c |  2 +-
> >  5 files changed, 15 insertions(+), 16 deletions(-)
> >
> > diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
> > index 7e157b4d26..97ce236fc5 100644
> > --- a/src/intel/vulkan/anv_blorp.c
> > +++ b/src/intel/vulkan/anv_blorp.c
> > @@ -858,7 +858,7 @@ void anv_CmdClearDepthStencilImage(
> >     struct blorp_surf depth, stencil;
> >     if (image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT) {
> >        get_blorp_surf_for_anv_image(image, VK_IMAGE_ASPECT_DEPTH_BIT,
> > -                                   image->aux_usage, &depth);
> > +                                   ISL_AUX_USAGE_NONE, &depth);
> >     } else {
> >        memset(&depth, 0, sizeof(depth));
> >     }
> > diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
> > index f262d8a524..d821629191 100644
> > --- a/src/intel/vulkan/anv_image.c
> > +++ b/src/intel/vulkan/anv_image.c
> > @@ -195,6 +195,7 @@ make_surface(const struct anv_device *dev,
> >           isl_surf_get_hiz_surf(&dev->isl_dev, &image->depth_surface.isl,
> >                                 &image->aux_surface.isl);
> >           add_surface(image, &image->aux_surface);
> > +         image->aux_usage = ISL_AUX_USAGE_HIZ;
> >        }
> >     } else if (aspect == VK_IMAGE_ASPECT_COLOR_BIT && vk_info->samples ==
> > 1) {
> >        if (!unlikely(INTEL_DEBUG & DEBUG_NO_RBC)) {
> > @@ -523,6 +524,11 @@ anv_CreateImageView(VkDevice _device,
> >        iview->isl.usage = 0;
> >     }
> >
> > +   /* Sampling from HiZ is not yet enabled */
> > +   enum isl_aux_usage surf_usage = image->aux_usage;
> > +   if (surf_usage == ISL_AUX_USAGE_HIZ)
> > +      surf_usage = ISL_AUX_USAGE_NONE;
> > +
> >     /* Input attachment surfaces for color or depth are allocated and
> > filled
> >      * out at BeginRenderPass time because they need compression
> > information.
> >      * Stencil image do not support compression so we just use the texture
> > @@ -540,7 +546,7 @@ anv_CreateImageView(VkDevice _device,
> >                            .surf = &surface->isl,
> >                            .view = &view,
> >                            .aux_surf = &image->aux_surface.isl,
> > -                          .aux_usage = image->aux_usage,
> > +                          .aux_usage = surf_usage,
> >                            .mocs = device->default_mocs);
> >
> >        if (!device->info.has_llc)
> > @@ -564,7 +570,7 @@ anv_CreateImageView(VkDevice _device,
> >                               .surf = &surface->isl,
> >                               .view = &view,
> >                               .aux_surf = &image->aux_surface.isl,
> > -                             .aux_usage = image->aux_usage,
> > +                             .aux_usage = surf_usage,
> >                               .mocs = device->default_mocs);
> >        } else {
> >           anv_fill_buffer_surface_state(device,
> > iview->storage_surface_state,
> > diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_
> > private.h
> > index dbc8c3cf68..26f2986005 100644
> > --- a/src/intel/vulkan/anv_private.h
> > +++ b/src/intel/vulkan/anv_private.h
> > @@ -1581,7 +1581,10 @@ struct anv_image {
> >        };
> >     };
> >
> > -   /** The aux usage for this surface when outside a render pass */
> > +   /**
> > +    * The aux usage for this surface when outside a render pass
> > +    * (and inside a render pass for HiZ-enabled depth stencil
> > attachments).
> > +    */
> >
> 
> How about:
> 
> For color images, this is the aux usage for this image when not used as a
> color attachment.
> 
> For depth/stencil images, this is set to ISL_AUX_USAGE_HIZ if the image has
> a HiZ buffer.
> 
> 

Sure. It's much clearer than what I had.

> >     enum isl_aux_usage aux_usage;
> >
> >     struct anv_surface aux_surface;
> > @@ -1642,16 +1645,6 @@ const struct anv_surface *
> >  anv_image_get_surface_for_aspect_mask(const struct anv_image *image,
> >                                        VkImageAspectFlags aspect_mask);
> >
> > -static inline bool
> > -anv_image_has_hiz(const struct anv_image *image)
> > -{
> > -   /* We must check the aspect because anv_image::aux_surface may be used
> > for
> > -    * any type of auxiliary surface, not just HiZ.
> > -    */
> > -   return (image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT) &&
> > -          image->aux_surface.isl.size > 0;
> > -}
> > -
> >  struct anv_buffer_view {
> >     enum isl_format format; /**< VkBufferViewCreateInfo::format */
> >     struct anv_bo *bo;
> > diff --git a/src/intel/vulkan/gen8_cmd_buffer.c
> > b/src/intel/vulkan/gen8_cmd_buffer.c
> > index 3e4aa9bc62..892a035304 100644
> > --- a/src/intel/vulkan/gen8_cmd_buffer.c
> > +++ b/src/intel/vulkan/gen8_cmd_buffer.c
> > @@ -337,7 +337,7 @@ genX(cmd_buffer_emit_hz_op)(struct anv_cmd_buffer
> > *cmd_buffer,
> >     const struct anv_image_view *iview =
> >        anv_cmd_buffer_get_depth_stencil_view(cmd_buffer);
> >
> > -   if (iview == NULL || !anv_image_has_hiz(iview->image))
> > +   if (iview == NULL || iview->image->aux_usage != ISL_AUX_USAGE_HIZ)
> >        return;
> >
> >     /* FINISHME: Implement multi-subpass HiZ */
> > diff --git a/src/intel/vulkan/genX_cmd_buffer.c
> > b/src/intel/vulkan/genX_cmd_buffer.c
> > index 7ff0d3ebba..a372e6420f 100644
> > --- a/src/intel/vulkan/genX_cmd_buffer.c
> > +++ b/src/intel/vulkan/genX_cmd_buffer.c
> > @@ -2087,7 +2087,7 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer
> > *cmd_buffer)
> >        anv_cmd_buffer_get_depth_stencil_view(cmd_buffer);
> >     const struct anv_image *image = iview ? iview->image : NULL;
> >     const bool has_depth = image && (image->aspects &
> > VK_IMAGE_ASPECT_DEPTH_BIT);
> > -   const bool has_hiz = image != NULL && anv_image_has_hiz(image);
> > +   const bool has_hiz = image != NULL && image->aux_usage ==
> > ISL_AUX_USAGE_HIZ;
> >     const bool has_stencil =
> >        image && (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT);
> >
> > --
> > 2.11.0
> >
> > _______________________________________________
> > 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