[Mesa-dev] [PATCH 03/11] anv/cmd_buffer: Properly handle render passes with 0 attachments

James Legg jlegg at feralinteractive.com
Mon Jul 17 11:18:19 UTC 2017


On Tue, 2017-07-11 at 17:04 -0700, Jason Ekstrand wrote:
> We were early returning and never created the NULL surface state.
> 
> Cc: mesa-stable at lists.freedesktop.org

This patch fixes a bug that affected me.

Tested-by: James Legg <jlegg at feralinteractive.com>

I submitted a similar patch before seeing this one
(https://patchwork.freedesktop.org/patch/167047/). I'll drop that if
this one is merged.

James

> ---
>  src/intel/vulkan/genX_cmd_buffer.c | 23 +++++++++++------------
>  1 file changed, 11 insertions(+), 12 deletions(-)
> 
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> index 53c58ca..9b3bb10 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -429,19 +429,18 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
>  
>     vk_free(&cmd_buffer->pool->alloc, state->attachments);
>  
> -   if (pass->attachment_count == 0) {
> +   if (pass->attachment_count > 0) {
> +      state->attachments = vk_alloc(&cmd_buffer->pool->alloc,
> +                                    pass->attachment_count *
> +                                         sizeof(state->attachments[0]),
> +                                    8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
> +      if (state->attachments == NULL) {
> +         /* Propagate VK_ERROR_OUT_OF_HOST_MEMORY to vkEndCommandBuffer */
> +         return anv_batch_set_error(&cmd_buffer->batch,
> +                                    VK_ERROR_OUT_OF_HOST_MEMORY);
> +      }
> +   } else {
>        state->attachments = NULL;
> -      return VK_SUCCESS;
> -   }
> -
> -   state->attachments = vk_alloc(&cmd_buffer->pool->alloc,
> -                                 pass->attachment_count *
> -                                      sizeof(state->attachments[0]),
> -                                 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
> -   if (state->attachments == NULL) {
> -      /* Propagate VK_ERROR_OUT_OF_HOST_MEMORY to vkEndCommandBuffer */
> -      return anv_batch_set_error(&cmd_buffer->batch,
> -                                 VK_ERROR_OUT_OF_HOST_MEMORY);
>     }
>  
>     /* Reserve one for the NULL state. */
> -- 
> 2.5.0.400.gff86faf


More information about the mesa-dev mailing list