mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
radv: propagate VK_ERROR_OUT_OF_HOST_MEMORY to vk{Begin,End}CommandBuffer()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
2bc3d65690
commit
5ba443b246
1 changed files with 17 additions and 7 deletions
|
|
@ -1832,7 +1832,7 @@ radv_cmd_buffer_set_subpass(struct radv_cmd_buffer *cmd_buffer,
|
|||
cmd_buffer->state.dirty |= RADV_CMD_DIRTY_RENDER_TARGETS;
|
||||
}
|
||||
|
||||
static void
|
||||
static VkResult
|
||||
radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer,
|
||||
struct radv_render_pass *pass,
|
||||
const VkRenderPassBeginInfo *info)
|
||||
|
|
@ -1841,7 +1841,7 @@ radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer,
|
|||
|
||||
if (pass->attachment_count == 0) {
|
||||
state->attachments = NULL;
|
||||
return;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
state->attachments = vk_alloc(&cmd_buffer->pool->alloc,
|
||||
|
|
@ -1849,8 +1849,8 @@ radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer,
|
|||
sizeof(state->attachments[0]),
|
||||
8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (state->attachments == NULL) {
|
||||
/* FIXME: Propagate VK_ERROR_OUT_OF_HOST_MEMORY to vkEndCommandBuffer */
|
||||
abort();
|
||||
cmd_buffer->record_result = VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
return cmd_buffer->record_result;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < pass->attachment_count; ++i) {
|
||||
|
|
@ -1887,6 +1887,8 @@ radv_cmd_state_setup_attachments(struct radv_cmd_buffer *cmd_buffer,
|
|||
|
||||
state->attachments[i].current_layout = att->initial_layout;
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult radv_AllocateCommandBuffers(
|
||||
|
|
@ -1980,6 +1982,8 @@ VkResult radv_BeginCommandBuffer(
|
|||
const VkCommandBufferBeginInfo *pBeginInfo)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
VkResult result = VK_SUCCESS;
|
||||
|
||||
radv_reset_cmd_buffer(cmd_buffer);
|
||||
|
||||
memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state));
|
||||
|
|
@ -2008,12 +2012,15 @@ VkResult radv_BeginCommandBuffer(
|
|||
struct radv_subpass *subpass =
|
||||
&cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
|
||||
|
||||
radv_cmd_state_setup_attachments(cmd_buffer, cmd_buffer->state.pass, NULL);
|
||||
result = radv_cmd_state_setup_attachments(cmd_buffer, cmd_buffer->state.pass, NULL);
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
radv_cmd_buffer_set_subpass(cmd_buffer, subpass, false);
|
||||
}
|
||||
|
||||
radv_cmd_buffer_trace_emit(cmd_buffer);
|
||||
return VK_SUCCESS;
|
||||
return result;
|
||||
}
|
||||
|
||||
void radv_CmdBindVertexBuffers(
|
||||
|
|
@ -2642,11 +2649,14 @@ void radv_CmdBeginRenderPass(
|
|||
|
||||
MAYBE_UNUSED unsigned cdw_max = radeon_check_space(cmd_buffer->device->ws,
|
||||
cmd_buffer->cs, 2048);
|
||||
MAYBE_UNUSED VkResult result;
|
||||
|
||||
cmd_buffer->state.framebuffer = framebuffer;
|
||||
cmd_buffer->state.pass = pass;
|
||||
cmd_buffer->state.render_area = pRenderPassBegin->renderArea;
|
||||
radv_cmd_state_setup_attachments(cmd_buffer, pass, pRenderPassBegin);
|
||||
result = radv_cmd_state_setup_attachments(cmd_buffer, pass, pRenderPassBegin);
|
||||
if (result != VK_SUCCESS)
|
||||
cmd_buffer->record_result = result;
|
||||
|
||||
radv_cmd_buffer_set_subpass(cmd_buffer, pass->subpasses, true);
|
||||
assert(cmd_buffer->cs->cdw <= cdw_max);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue