radv: correctly return oom from the device when failing to create a cs

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25927>
(cherry picked from commit c4283e32e3)
This commit is contained in:
Mike Blumenkrantz 2023-10-26 15:50:06 -04:00 committed by Eric Engestrom
parent e8e6ad5692
commit 2ee4ef998a
5 changed files with 10 additions and 8 deletions

View file

@ -644,7 +644,7 @@
"description": "radv: correctly return oom from the device when failing to create a cs",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -355,7 +355,7 @@ radv_create_cmd_buffer(struct vk_command_pool *pool, struct vk_command_buffer **
cmd_buffer->cs = device->ws->cs_create(device->ws, ring, cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY);
if (!cmd_buffer->cs) {
radv_destroy_cmd_buffer(&cmd_buffer->vk);
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY);
}
vk_object_base_init(&device->vk, &cmd_buffer->meta_push_descriptors.base, VK_OBJECT_TYPE_DESCRIPTOR_SET);
@ -698,7 +698,7 @@ radv_gang_init(struct radv_cmd_buffer *cmd_buffer)
device->ws->cs_create(device->ws, AMD_IP_COMPUTE, cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY);
if (!ace_cs) {
vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY);
vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_DEVICE_MEMORY);
return false;
}

View file

@ -44,7 +44,7 @@ radv_create_shadow_regs_preamble(const struct radv_device *device, struct radv_q
struct radeon_cmdbuf *cs = ws->cs_create(ws, AMD_IP_GFX, false);
if (!cs)
return VK_ERROR_OUT_OF_HOST_MEMORY;
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
radeon_check_space(ws, cs, 256);
@ -131,7 +131,7 @@ radv_init_shadowed_regs_buffer_state(const struct radv_device *device, struct ra
cs = ws->cs_create(ws, AMD_IP_GFX, false);
if (!cs)
return VK_ERROR_OUT_OF_HOST_MEMORY;
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
radeon_check_space(ws, cs, 768);

View file

@ -996,7 +996,7 @@ radv_update_preamble_cs(struct radv_queue_state *queue, struct radv_device *devi
struct radeon_cmdbuf *cs = NULL;
cs = ws->cs_create(ws, radv_queue_family_to_ring(device->physical_device, queue->qf), false);
if (!cs) {
result = VK_ERROR_OUT_OF_HOST_MEMORY;
result = VK_ERROR_OUT_OF_DEVICE_MEMORY;
goto fail;
}
@ -1263,8 +1263,10 @@ radv_create_gang_wait_preambles_postambles(struct radv_queue *queue)
struct radeon_cmdbuf *ace_pre_cs = ws->cs_create(ws, AMD_IP_COMPUTE, false);
struct radeon_cmdbuf *ace_post_cs = ws->cs_create(ws, AMD_IP_COMPUTE, false);
if (!leader_pre_cs || !leader_post_cs || !ace_pre_cs || !ace_post_cs)
if (!leader_pre_cs || !leader_post_cs || !ace_pre_cs || !ace_post_cs) {
r = VK_ERROR_OUT_OF_DEVICE_MEMORY;
goto fail;
}
radeon_check_space(ws, leader_pre_cs, 256);
radeon_check_space(ws, leader_post_cs, 256);

View file

@ -1404,7 +1404,7 @@ radv_init_shader_upload_queue(struct radv_device *device)
struct radv_shader_dma_submission *submission = calloc(1, sizeof(struct radv_shader_dma_submission));
submission->cs = ws->cs_create(ws, AMD_IP_SDMA, false);
if (!submission->cs)
return VK_ERROR_OUT_OF_HOST_MEMORY;
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
list_addtail(&submission->list, &device->shader_dma_submissions);
}