[Mesa-dev] [PATCH 2/2] radv/winsys: use alloca() when creating the buffer object list

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu Jul 12 14:26:35 UTC 2018


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index c94c0f339f..e7ad9d7f6b 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -605,11 +605,7 @@ static int radv_amdgpu_create_bo_list(struct radv_amdgpu_winsys *ws,
 
 		pthread_mutex_lock(&ws->global_bo_list_lock);
 
-		handles = malloc(sizeof(handles[0]) * ws->num_buffers);
-		if (!handles) {
-			pthread_mutex_unlock(&ws->global_bo_list_lock);
-			return -ENOMEM;
-		}
+		handles = alloca(sizeof(handles[0]) * ws->num_buffers);
 
 		LIST_FOR_EACH_ENTRY(bo, &ws->global_bo_list, global_list_item) {
 			assert(num < ws->num_buffers);
@@ -619,7 +615,7 @@ static int radv_amdgpu_create_bo_list(struct radv_amdgpu_winsys *ws,
 		r = amdgpu_bo_list_create(ws->dev, ws->num_buffers,
 					  handles, NULL,
 					  bo_list);
-		free(handles);
+
 		pthread_mutex_unlock(&ws->global_bo_list_lock);
 	} else if (count == 1 && !num_extra_bo && !extra_cs && !radv_bo_list &&
 	           !radv_amdgpu_cs(cs_array[0])->num_virtual_buffers) {
@@ -652,11 +648,7 @@ static int radv_amdgpu_create_bo_list(struct radv_amdgpu_winsys *ws,
 			*bo_list = 0;
 			return 0;
 		}
-		amdgpu_bo_handle *handles = malloc(sizeof(amdgpu_bo_handle) * total_buffer_count);
-		if (!handles) {
-			free(handles);
-			return -ENOMEM;
-		}
+		amdgpu_bo_handle *handles = alloca(sizeof(amdgpu_bo_handle) * total_buffer_count);
 
 		for (unsigned i = 0; i < num_extra_bo; i++) {
 			handles[i] = extra_bo_array[i]->bo;
@@ -735,8 +727,6 @@ static int radv_amdgpu_create_bo_list(struct radv_amdgpu_winsys *ws,
 		} else {
 			*bo_list = 0;
 		}
-
-		free(handles);
 	}
 
 	return r;
-- 
2.18.0



More information about the mesa-dev mailing list