[Mesa-dev] [PATCH 05/12] anv: Allocate hiz surface
Nanley Chery
nanleychery at gmail.com
Thu Sep 1 03:29:51 UTC 2016
From: Chad Versace <chad.versace at intel.com>
Nanley Chery:
(rebase)
- Use isl_surf_get_hiz_surf()
(amend)
- Only add a HiZ surface onto a depth/stencil attachment
- Add comment above HiZ surface addition
- Hide HiZ behind INTEL_VK_HIZ prior to BDW
- Remove DISABLE_AUX_BIT instead of preventing it from being added
- Remove wip! tag
Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
---
src/intel/vulkan/anv_image.c | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index af6b4ca..dbb3140 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -28,6 +28,7 @@
#include <fcntl.h>
#include "anv_private.h"
+#include "util/debug.h"
#include "vk_format_info.h"
@@ -60,6 +61,7 @@ choose_isl_surf_usage(VkImageUsageFlags vk_usage,
default:
unreachable("bad VkImageAspect");
case VK_IMAGE_ASPECT_DEPTH_BIT:
+ isl_usage &= ~ISL_SURF_USAGE_DISABLE_AUX_BIT;
isl_usage |= ISL_SURF_USAGE_DEPTH_BIT;
break;
case VK_IMAGE_ASPECT_STENCIL_BIT:
@@ -99,6 +101,16 @@ get_surface(struct anv_image *image, VkImageAspectFlags aspect)
}
}
+static void
+add_surface(struct anv_image *image, struct anv_surface *surf)
+{
+ assert(surf->isl.size > 0); /* isl surface must be initialized */
+
+ surf->offset = align_u32(image->size, surf->isl.alignment);
+ image->size = surf->offset + surf->isl.size;
+ image->alignment = MAX(image->alignment, surf->isl.alignment);
+}
+
/**
* Initialize the anv_image::*_surface selected by \a aspect. Then update the
* image's memory requirements (that is, the image's size and alignment).
@@ -160,9 +172,22 @@ make_surface(const struct anv_device *dev,
*/
assert(ok);
- anv_surf->offset = align_u32(image->size, anv_surf->isl.alignment);
- image->size = anv_surf->offset + anv_surf->isl.size;
- image->alignment = MAX(image->alignment, anv_surf->isl.alignment);
+ add_surface(image, anv_surf);
+
+ /* Allow the user to control HiZ enabling. Disable by default on Gen7
+ * because resolves are not currently implmented pre-BDW.
+ */
+ if (!env_var_as_boolean("INTEL_VK_HIZ", dev->info.gen >= 8))
+ return VK_SUCCESS;
+
+ /* Add a HiZ surface to a depth buffer that will be used for rendering.
+ */
+ if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT &&
+ (image->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
+ isl_surf_get_hiz_surf(&dev->isl_dev, &image->depth_surface.isl,
+ &image->hiz_surface.isl);
+ add_surface(image, &image->hiz_surface);
+ }
return VK_SUCCESS;
}
--
2.9.3
More information about the mesa-dev
mailing list