Module: Mesa Branch: staging/22.3 Commit: 954833d9cb00ae1615c833bcc3f9dad4265f79b2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=954833d9cb00ae1615c833bcc3f9dad4265f79b2
Author: Pierre-Eric Pelloux-Prayer <[email protected]> Date: Tue Jan 17 10:14:52 2023 +0100 vbo: lower VBO_SAVE_BUFFER_SIZE to avoid large VRAM usage The ideal case for performance is to have a single buffer for all display list. The caveat is that large buffers are less likely to be freed because they're refcounted: it only takes 1 user (diplay list) to keep it in VRAM. This lowers VRAM usage when replaying the trace attached of the trace attached to !6140 from 5.5 GB to about 1.8 GB. Viewperf snx performance isn't affected. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6140 Cc: mesa-stable Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20748> (cherry picked from commit 0f5c8c3dc35561f23a5383cb05075898942ce0c5) --- .pick_status.json | 2 +- src/mesa/vbo/vbo_save.h | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index a6c02e3d43b..8915efe9ee7 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -22,7 +22,7 @@ "description": "vbo: lower VBO_SAVE_BUFFER_SIZE to avoid large VRAM usage", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h index 78a6340c196..4c73d92584c 100644 --- a/src/mesa/vbo/vbo_save.h +++ b/src/mesa/vbo/vbo_save.h @@ -111,8 +111,12 @@ _vbo_save_get_stride(const struct vbo_save_vertex_list *node) /* Default size for the buffer holding the vertices and the indices. * A bigger buffer helps reducing the number of draw calls but may * waste memory. + * 1MB was picked because a lower value reduces viewperf snx tests + * performance but larger values cause high VRAM usage (because + * larger buffers will be shared by more display lists which reduces + * the likelyhood of freeing the buffer). */ -#define VBO_SAVE_BUFFER_SIZE (20*1024*1024) +#define VBO_SAVE_BUFFER_SIZE (1024 * 1024) #define VBO_SAVE_PRIM_MODE_MASK 0x3f struct vbo_save_vertex_store {
