anv: Replace anv_image_has_hiz() with ISL_AUX_USAGE_HIZ
authorNanley Chery <nanley.g.chery@intel.com>
Sat, 7 Jan 2017 23:10:57 +0000 (15:10 -0800)
committerNanley Chery <nanley.g.chery@intel.com>
Fri, 13 Jan 2017 04:52:19 +0000 (20:52 -0800)
The helper doesn't provide additional functionality over the current
infrastructure.

v2: Add comment to anv_image::aux_usage (Jason Ekstrand)
v3: Clarify comment for aux_usage (Jason Ekstrand)

Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_blorp.c
src/intel/vulkan/anv_image.c
src/intel/vulkan/anv_private.h
src/intel/vulkan/gen8_cmd_buffer.c
src/intel/vulkan/genX_cmd_buffer.c

index 7e157b4d266ecf7c91f91b3a444ca984951fb95b..97ce236fc52f24dd93010731895bc3555e7143b1 100644 (file)
@@ -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));
    }
index f262d8a524011fa4e9e841df70d64cc185005dae..d8216291914b361c0b57b3194ca8e1adcdf38459 100644 (file)
@@ -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,
index dbc8c3cf68ab0c04873db1cca455c8c9f58c33f0..510191bf61a948755f082bb3089636dcc2a75472 100644 (file)
@@ -1581,7 +1581,13 @@ struct anv_image {
       };
    };
 
-   /** The aux usage for this surface when outside a render pass */
+   /**
+    * 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.
+    */
    enum isl_aux_usage aux_usage;
 
    struct anv_surface aux_surface;
@@ -1642,16 +1648,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;
index 3e4aa9bc6234c8d32bc7e0130313f6086a4ed0af..892a035304e4df74250ddf58c8cca5e981b49a77 100644 (file)
@@ -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 */
index 7ff0d3ebba3c2800159c2d4cd958120a66cfd668..a372e6420feb60bb38c08b6bb639576e18b8812c 100644 (file)
@@ -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);