diff options
author | Jason Ekstrand <[email protected]> | 2017-07-11 15:47:36 -0700 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-08-03 00:19:06 +0100 |
commit | 0a0289d73d662364872ec21d0056bb30cc1b6163 (patch) | |
tree | c7ac4251175b019b8480a1c86b0c2eec7696e165 /src/intel | |
parent | dd241abbe0fd2b49aa380d16866e003a875c58d0 (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]
(cherry picked from commit bd41564746ca4f4bd46185b99754eaa012c359e5)
Diffstat (limited to 'src/intel')
-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 697bc52ac45..ddd0fd6849c 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -407,19 +407,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. */ |