diff options
author | Jason Ekstrand <[email protected]> | 2017-07-11 15:47:36 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-07-17 08:18:46 -0700 |
commit | bd41564746ca4f4bd46185b99754eaa012c359e5 (patch) | |
tree | 3bb0ba552ba8961d996299c7b023dff799fcef4b | |
parent | c62809171c9593b10c1205ea9bf3484b37245965 (diff) |
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 <[email protected]>
Tested-by: James Legg <[email protected]>
Cc: [email protected]
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 23 |
1 files changed, 11 insertions, 12 deletions
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. */ |