Module: Mesa
Branch: main
Commit: 6febec12e444ff8a52eb831361e2055d58b68b0b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6febec12e444ff8a52eb831361e2055d58b68b0b

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Fri Jan 12 16:50:50 2024 +0100

radv: correctly return VK_ERROR_OUT_OF_DEVICE_MEMORY when mapping a BO fails

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27039>

---

 src/amd/vulkan/radv_queue.c                   | 4 +++-
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c
index 3d4382878d1..59183d506bf 100644
--- a/src/amd/vulkan/radv_queue.c
+++ b/src/amd/vulkan/radv_queue.c
@@ -981,8 +981,10 @@ radv_update_preamble_cs(struct radv_queue_state *queue, 
struct radv_device *devi
 
    if (descriptor_bo != queue->descriptor_bo) {
       uint32_t *map = (uint32_t *)ws->buffer_map(descriptor_bo);
-      if (!map)
+      if (!map) {
+         result = VK_ERROR_OUT_OF_DEVICE_MEMORY;
          goto fail;
+      }
 
       radv_fill_shader_rings(device, map, scratch_bo, needs->esgs_ring_size, 
esgs_ring_bo, needs->gsvs_ring_size,
                              gsvs_ring_bo, tess_rings_bo, task_rings_bo, 
mesh_scratch_ring_bo, needs->attr_ring_size,
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c 
b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index e0b642a7829..5f753a2203a 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -265,7 +265,7 @@ radv_amdgpu_cs_get_new_ib(struct radeon_cmdbuf *_cs, 
uint32_t ib_size)
    cs->ib_mapped = cs->ws->base.buffer_map(cs->ib_buffer);
    if (!cs->ib_mapped) {
       cs->ws->base.buffer_destroy(&cs->ws->base, cs->ib_buffer);
-      return VK_ERROR_OUT_OF_HOST_MEMORY;
+      return VK_ERROR_OUT_OF_DEVICE_MEMORY;
    }
 
    cs->ib.ib_mc_address = radv_amdgpu_winsys_bo(cs->ib_buffer)->base.va;
@@ -730,7 +730,7 @@ radv_amdgpu_cs_execute_secondary(struct radeon_cmdbuf 
*_parent, struct radeon_cm
 
          mapped = ws->base.buffer_map(ib->bo);
          if (!mapped) {
-            parent->status = VK_ERROR_OUT_OF_HOST_MEMORY;
+            parent->status = VK_ERROR_OUT_OF_DEVICE_MEMORY;
             return;
          }
 

Reply via email to