From: Jason Ekstrand Date: Tue, 11 Jul 2017 22:47:36 +0000 (-0700) Subject: anv/cmd_buffer: Properly handle render passes with 0 attachments X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bd41564746ca4f4bd46185b99754eaa012c359e5;p=mesa.git anv/cmd_buffer: Properly handle render passes with 0 attachments We were early returning and never created the NULL surface state. Reviewed-by: Lionel Landwerlin Tested-by: James Legg Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 53c58ca5b35..9b3bb101645 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. */