anv/cmd_buffer: Refactor ensure_push_descriptor_set

It's now a function which returns the push descriptor set.  Since we set
the error on the command buffer, returning the error is a little
redundant.  Returning the descriptor set (or NULL on error) is more
convenient.

Tested-by: Józef Kucia <joseph.kucia@gmail.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Cc: "18.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Jason Ekstrand
2017-12-15 12:33:34 -08:00
parent d5592e2fda
commit 90cceaa9dd

View File

@@ -835,8 +835,8 @@ anv_cmd_buffer_get_depth_stencil_view(const struct anv_cmd_buffer *cmd_buffer)
return iview; return iview;
} }
static VkResult static struct anv_push_descriptor_set *
anv_cmd_buffer_ensure_push_descriptor_set(struct anv_cmd_buffer *cmd_buffer, anv_cmd_buffer_get_push_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
uint32_t set) uint32_t set)
{ {
struct anv_push_descriptor_set **push_set = struct anv_push_descriptor_set **push_set =
@@ -848,11 +848,11 @@ anv_cmd_buffer_ensure_push_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (*push_set == NULL) { if (*push_set == NULL) {
anv_batch_set_error(&cmd_buffer->batch, VK_ERROR_OUT_OF_HOST_MEMORY); anv_batch_set_error(&cmd_buffer->batch, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); return NULL;
} }
} }
return VK_SUCCESS; return *push_set;
} }
void anv_CmdPushDescriptorSetKHR( void anv_CmdPushDescriptorSetKHR(
@@ -873,10 +873,11 @@ void anv_CmdPushDescriptorSetKHR(
const struct anv_descriptor_set_layout *set_layout = const struct anv_descriptor_set_layout *set_layout =
layout->set[_set].layout; layout->set[_set].layout;
if (anv_cmd_buffer_ensure_push_descriptor_set(cmd_buffer, _set) != VK_SUCCESS)
return;
struct anv_push_descriptor_set *push_set = struct anv_push_descriptor_set *push_set =
cmd_buffer->state.push_descriptors[_set]; anv_cmd_buffer_get_push_descriptor_set(cmd_buffer, _set);
if (!push_set)
return;
struct anv_descriptor_set *set = &push_set->set; struct anv_descriptor_set *set = &push_set->set;
set->layout = set_layout; set->layout = set_layout;
@@ -964,10 +965,11 @@ void anv_CmdPushDescriptorSetWithTemplateKHR(
const struct anv_descriptor_set_layout *set_layout = const struct anv_descriptor_set_layout *set_layout =
layout->set[_set].layout; layout->set[_set].layout;
if (anv_cmd_buffer_ensure_push_descriptor_set(cmd_buffer, _set) != VK_SUCCESS)
return;
struct anv_push_descriptor_set *push_set = struct anv_push_descriptor_set *push_set =
cmd_buffer->state.push_descriptors[_set]; anv_cmd_buffer_get_push_descriptor_set(cmd_buffer, _set);
if (!push_set)
return;
struct anv_descriptor_set *set = &push_set->set; struct anv_descriptor_set *set = &push_set->set;
set->layout = set_layout; set->layout = set_layout;