[Mesa-dev] [PATCH 12/14] anv/cmd_buffer: Mark depth/stencil surfaces written in begin_subpass

Nanley Chery nanleychery at gmail.com
Wed Feb 14 00:47:29 UTC 2018


On Mon, Feb 05, 2018 at 02:35:01PM -0800, Jason Ekstrand wrote:
> ---
>  src/intel/vulkan/genX_cmd_buffer.c | 50 ++++++++++++++++++++++----------------
>  1 file changed, 29 insertions(+), 21 deletions(-)
> 
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> index 4eee85a..2d17c28 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -3255,27 +3255,6 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer)
>     isl_emit_depth_stencil_hiz_s(&device->isl_dev, dw, &info);
>  
>     cmd_buffer->state.hiz_enabled = info.hiz_usage == ISL_AUX_USAGE_HIZ;
> -
> -   /* We may be writing depth or stencil so we need to mark the surface.
> -    * Unfortunately, there's no way to know at this point whether the depth or
> -    * stencil tests used will actually write to the surface.
> -    */
> -   if (image && (image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT)) {
> -      genX(cmd_buffer_mark_image_written)(cmd_buffer, image,
> -                                          VK_IMAGE_ASPECT_DEPTH_BIT,
> -                                          info.hiz_usage,
> -                                          info.view->base_level,
> -                                          info.view->base_array_layer,
> -                                          info.view->array_len);
> -   }
> -   if (image && (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT)) {
> -      genX(cmd_buffer_mark_image_written)(cmd_buffer, image,
> -                                          VK_IMAGE_ASPECT_STENCIL_BIT,
> -                                          ISL_AUX_USAGE_NONE,
> -                                          info.view->base_level,
> -                                          info.view->base_array_layer,
> -                                          info.view->array_len);
> -   }
>  }
>  
>  
> @@ -3550,6 +3529,35 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer,
>                                               iview->planes[0].isl.base_level,
>                                               iview->planes[0].isl.base_array_layer,
>                                               fb->layers);
> +      } else if (subpass->attachments[i].usage ==
> +                 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) {
> +         /* We may be writing depth or stencil so we need to mark the surface.
> +          * Unfortunately, there's no way to know at this point whether the
> +          * depth or stencil tests used will actually write to the surface.
> +          *
> +          * Even though stencil may be plane 1, it always shares a base_level
> +          * with depth.
> +          */
> +         const struct isl_view *ds_view = &iview->planes[0].isl;
> +         if (image->aspects & VK_IMAGE_ASPECT_DEPTH_BIT) {

I think this should be iview->aspect_mask.

> +            genX(cmd_buffer_mark_image_written)(cmd_buffer, image,
> +                                                VK_IMAGE_ASPECT_DEPTH_BIT,
> +                                                att_state->aux_usage,
> +                                                ds_view->base_level,
> +                                                ds_view->base_array_layer,
> +                                                fb->layers);
> +         }
> +         if (image->aspects & VK_IMAGE_ASPECT_STENCIL_BIT) {

Same comment as above.

With those two issues fixed, this patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>


> +            /* Even though stencil may be plane 1, it always shares a
> +             * base_level with depth.
> +             */
> +            genX(cmd_buffer_mark_image_written)(cmd_buffer, image,
> +                                                VK_IMAGE_ASPECT_STENCIL_BIT,
> +                                                ISL_AUX_USAGE_NONE,
> +                                                ds_view->base_level,
> +                                                ds_view->base_array_layer,
> +                                                fb->layers);
> +         }
>        }
>  
>        att_state->pending_clear_aspects = 0;
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list