Module: Mesa Branch: main Commit: c4283e32e3e8d96987358620aa43483a79eea08b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c4283e32e3e8d96987358620aa43483a79eea08b
Author: Mike Blumenkrantz <michael.blumenkra...@gmail.com> Date: Thu Oct 26 15:50:06 2023 -0400 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> --- src/amd/vulkan/radv_cmd_buffer.c | 4 ++-- src/amd/vulkan/radv_cp_reg_shadowing.c | 4 ++-- src/amd/vulkan/radv_queue.c | 6 ++++-- src/amd/vulkan/radv_shader.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 7315cf12eb9..d8a0ab5caf3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -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; } diff --git a/src/amd/vulkan/radv_cp_reg_shadowing.c b/src/amd/vulkan/radv_cp_reg_shadowing.c index 9f19c68fec9..f846bf51b33 100644 --- a/src/amd/vulkan/radv_cp_reg_shadowing.c +++ b/src/amd/vulkan/radv_cp_reg_shadowing.c @@ -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); diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 3160824d461..abdfae500fe 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -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); diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 19944d3d63e..ddaacee1b58 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -1405,7 +1405,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); }