[Mesa-dev] [PATCH 09/14] anv/cmd_buffer: Add a concept of pending load aspects

Nanley Chery nanleychery at gmail.com
Wed Feb 14 00:27:01 UTC 2018


On Mon, Feb 05, 2018 at 02:34:58PM -0800, Jason Ekstrand wrote:
> These are the same as pending clear aspects only for the "load"
> operation.
> ---
>  src/intel/vulkan/anv_private.h     |  1 +
>  src/intel/vulkan/genX_cmd_buffer.c | 22 ++++++++++++++++------
>  2 files changed, 17 insertions(+), 6 deletions(-)
> 

This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>

> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> index 906c6f3..d424498 100644
> --- a/src/intel/vulkan/anv_private.h
> +++ b/src/intel/vulkan/anv_private.h
> @@ -1678,6 +1678,7 @@ struct anv_attachment_state {
>  
>     VkImageLayout                                current_layout;
>     VkImageAspectFlags                           pending_clear_aspects;
> +   VkImageAspectFlags                           pending_load_aspects;
>     bool                                         fast_clear;
>     VkClearValue                                 clear_value;
>     bool                                         clear_color_is_zero_one;
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> index 608f5ee..2590ea3 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -1123,26 +1123,36 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
>           struct anv_render_pass_attachment *att = &pass->attachments[i];
>           VkImageAspectFlags att_aspects = vk_format_aspects(att->format);
>           VkImageAspectFlags clear_aspects = 0;
> +         VkImageAspectFlags load_aspects = 0;
>  
>           if (att_aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) {
>              /* color attachment */
>              if (att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
>                 clear_aspects |= VK_IMAGE_ASPECT_COLOR_BIT;
> +            } else if (att->load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> +               load_aspects |= VK_IMAGE_ASPECT_COLOR_BIT;
>              }
>           } else {
>              /* depthstencil attachment */
> -            if ((att_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) &&
> -                att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> -               clear_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> +            if (att_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) {
> +               if (att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> +                  clear_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> +               } else if (att->load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> +                  load_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> +               }
>              }
> -            if ((att_aspects & VK_IMAGE_ASPECT_STENCIL_BIT) &&
> -                att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> -               clear_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> +            if (att_aspects & VK_IMAGE_ASPECT_STENCIL_BIT) {
> +               if (att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> +                  clear_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> +               } else if (att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> +                  load_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> +               }
>              }
>           }
>  
>           state->attachments[i].current_layout = att->initial_layout;
>           state->attachments[i].pending_clear_aspects = clear_aspects;
> +         state->attachments[i].pending_load_aspects = load_aspects;
>           if (clear_aspects)
>              state->attachments[i].clear_value = begin->pClearValues[i];
>  
> -- 
> 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