Module: Mesa
Branch: master
Commit: d66bbfbeded04cb728a2d8e4356c8e2b5e67ace1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d66bbfbeded04cb728a2d8e4356c8e2b5e67ace1

Author: Nicolai Hähnle <nicolai.haeh...@amd.com>
Date:   Fri Sep  9 18:50:34 2016 +0200

winsys/radeon: don't pre-allocate the relocations array

It's really not necessary. Switch to an exponential resizing strategy.

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

---

 src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c 
b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index 9de00c2..4f2501e 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -98,19 +98,6 @@ static bool radeon_init_cs_context(struct radeon_cs_context 
*csc,
     int i;
 
     csc->fd = ws->fd;
-    csc->nrelocs = 512;
-    csc->relocs_bo = (struct radeon_bo_item*)
-                     CALLOC(1, csc->nrelocs * sizeof(csc->relocs_bo[0]));
-    if (!csc->relocs_bo) {
-        return false;
-    }
-
-    csc->relocs = (struct drm_radeon_cs_reloc*)
-                  CALLOC(1, csc->nrelocs * sizeof(struct drm_radeon_cs_reloc));
-    if (!csc->relocs) {
-        FREE(csc->relocs_bo);
-        return false;
-    }
 
     csc->chunks[0].chunk_id = RADEON_CHUNK_ID_IB;
     csc->chunks[0].length_dw = 0;
@@ -285,7 +272,7 @@ static unsigned radeon_add_buffer(struct radeon_drm_cs *cs,
     /* New relocation, check if the backing array is large enough. */
     if (csc->crelocs >= csc->nrelocs) {
         uint32_t size;
-        csc->nrelocs += 10;
+        csc->nrelocs = MAX2(csc->nrelocs + 16, (unsigned)(csc->nrelocs * 1.3));
 
         size = csc->nrelocs * sizeof(csc->relocs_bo[0]);
         csc->relocs_bo = realloc(csc->relocs_bo, size);

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to