On Mon, Nov 27, 2017 at 07:06:12PM -0800, Jason Ekstrand wrote:
> These are the same as pending clear aspects only for the "load"
> operation.

Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com>

> ---
>  src/intel/vulkan/anv_private.h     |  1 +
>  src/intel/vulkan/genX_cmd_buffer.c | 22 ++++++++++++++++------
>  2 files changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> index b881157..f4b0f90 100644
> --- a/src/intel/vulkan/anv_private.h
> +++ b/src/intel/vulkan/anv_private.h
> @@ -1670,6 +1670,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 e5e0d1c..0915d1a 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -1050,26 +1050,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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to