[Mesa-dev] [PATCH 15/22] anv: Disable HiZ for input attachments
Nanley Chery
nanleychery at gmail.com
Thu Jan 12 01:55:01 UTC 2017
Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
---
src/intel/vulkan/anv_image.c | 17 +++++++++++++----
src/intel/vulkan/genX_cmd_buffer.c | 10 ++++------
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index d821629191..f8a21c2982 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -182,6 +182,14 @@ make_surface(const struct anv_device *dev,
*/
if (!(image->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
/* It will never be used as an attachment, HiZ is pointless. */
+ } else if (image->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) {
+ /* It will never have a layout of
+ * VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, so HiZ is
+ * currently pointless. If transfer operations learn to use the HiZ
+ * buffer, we can enable HiZ for VK_IMAGE_LAYOUT_GENERAL and support
+ * input attachments.
+ */
+ anv_finishme("Implement HiZ for input attachments");
} else if (!env_var_as_boolean("INTEL_VK_HIZ", dev->info.gen >= 8)) {
anv_finishme("Implement gen7 HiZ");
} else if (vk_info->mipLevels > 1) {
@@ -529,14 +537,15 @@ anv_CreateImageView(VkDevice _device,
if (surf_usage == ISL_AUX_USAGE_HIZ)
surf_usage = ISL_AUX_USAGE_NONE;
- /* Input attachment surfaces for color or depth are allocated and filled
+ /* Input attachment surfaces for color 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
- * surface from the image view.
+ * Compression is not yet enabled for depth textures and stencil doesn't
+ * allow compression so we can just use the texture surface state from the
+ * view.
*/
if (image->usage & VK_IMAGE_USAGE_SAMPLED_BIT ||
(image->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT &&
- (iview->aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT))) {
+ !(iview->aspect_mask & VK_IMAGE_ASPECT_COLOR_BIT))) {
iview->sampler_surface_state = alloc_surface_state(device);
struct isl_view view = iview->isl;
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index baa932e517..1793c4df26 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -303,11 +303,11 @@ need_input_attachment_state(const struct anv_render_pass_attachment *att)
if (!(att->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT))
return false;
- /* We only allocate input attachment states for color and depth surfaces.
- * Stencil doesn't allow compression so we can just use the texture surface
- * state from the view
+ /* We only allocate input attachment states for color surfaces. Compression
+ * is not yet enabled for depth textures and stencil doesn't allow
+ * compression so we can just use the texture surface state from the view.
*/
- return vk_format_is_color(att->format) || vk_format_has_depth(att->format);
+ return vk_format_is_color(att->format);
}
static enum isl_aux_usage
@@ -518,8 +518,6 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
const struct isl_surf *surf;
if (att_aspects == VK_IMAGE_ASPECT_COLOR_BIT) {
surf = &iview->image->color_surface.isl;
- } else {
- surf = &iview->image->depth_surface.isl;
}
struct isl_view view = iview->isl;
--
2.11.0
More information about the mesa-dev
mailing list