From 0591df025bc237de4d7fcb93a5d4dcc8e7946026 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 27 Jun 2017 21:54:20 +0200 Subject: [PATCH] winsys/amdgpu: use 128KB BOs for suballocations of up to 64KB BOs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This decreases the number of BOs, but might also increase memory usage. It's better for small textures. The gameplay is on the far right: https://people.freedesktop.org/~mareko/suballoc.svg Reviewed-by: Nicolai Hähnle --- src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 3 ++- src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index d0d8090..97bbe23 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -502,8 +502,9 @@ struct pb_slab *amdgpu_bo_slab_alloc(void *priv, unsigned heap, if (!slab) return NULL; + unsigned slab_size = 1 << AMDGPU_SLAB_BO_SIZE_LOG2; slab->buffer = amdgpu_winsys_bo(amdgpu_bo_create(&ws->base, - 64 * 1024, 64 * 1024, + slab_size, slab_size, domains, flags)); if (!slab->buffer) goto fail; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h index f011b8e..7cd2f20 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h @@ -41,8 +41,9 @@ struct amdgpu_cs; -#define AMDGPU_SLAB_MIN_SIZE_LOG2 9 -#define AMDGPU_SLAB_MAX_SIZE_LOG2 14 +#define AMDGPU_SLAB_MIN_SIZE_LOG2 9 /* 512 bytes */ +#define AMDGPU_SLAB_MAX_SIZE_LOG2 16 /* 64 KB */ +#define AMDGPU_SLAB_BO_SIZE_LOG2 17 /* 128 KB */ struct amdgpu_winsys { struct radeon_winsys base; -- 2.7.4