[Mesa-dev] [PATCH 15/22] anv: Disable HiZ for input attachments
Jason Ekstrand
jason at jlekstrand.net
Thu Jan 12 04:05:00 UTC 2017
On Wed, Jan 11, 2017 at 5:55 PM, Nanley Chery <nanleychery at gmail.com> wrote:
> 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.
> + */
>
>From the 1.0.37 spec:
"An attachment used as an input attachment and depth/stencil attachment must
be in either VK_IMAGE_LAYOUT_GENERAL or
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL."
So it can happen. Since gen8 can texture from HiZ, this shouldn't be a
problem. I think we'll need this for gen7 though.
> + 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
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170111/d0876df8/attachment.html>
More information about the mesa-dev
mailing list