On Thu, Jan 12, 2017 at 06:17:58PM -0800, Jason Ekstrand wrote: > On Thu, Jan 12, 2017 at 5:33 PM, Nanley Chery <nanleych...@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.ch...@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@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev