[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 01:33:48 UTC 2017
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).
+ */
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
More information about the mesa-dev
mailing list