diff options
author | Jacques Lucke <mail@jlucke.com> | 2019-05-21 18:14:38 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2019-05-21 18:17:56 +0300 |
commit | 6f893d6f05fb90008c8dcdc1ba3bb6b619ad645b (patch) | |
tree | 9115350fe243ff2f0d62aa57cc734651cdfd1322 | |
parent | 03ad013c0a804dfa66720cc89da610ffb8cd8343 (diff) |
GPU: double uniform names buffer size
Adding a constant yields quadratic time complexity which can
have quite a big impact on some scenes.
I used the file from T64901 for testing.
In the test file, the time it took to execute `wm_draw_update`
changed from `0.60s` to `0.51s`.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D4916
-rw-r--r-- | source/blender/draw/intern/draw_manager.h | 1 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager_data.c | 2 |
2 files changed, 1 insertions, 2 deletions
diff --git a/source/blender/draw/intern/draw_manager.h b/source/blender/draw/intern/draw_manager.h index b5dc88205db..8927d2e5927 100644 --- a/source/blender/draw/intern/draw_manager.h +++ b/source/blender/draw/intern/draw_manager.h @@ -45,7 +45,6 @@ #define DRW_DEBUG_USE_UNIFORM_NAME 0 #define DRW_UNIFORM_BUFFER_NAME 64 -#define DRW_UNIFORM_BUFFER_NAME_INC 1024 /* ------------ Profiling --------------- */ diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c index f8ef1bcf065..837b68ccb56 100644 --- a/source/blender/draw/intern/draw_manager_data.c +++ b/source/blender/draw/intern/draw_manager_data.c @@ -142,7 +142,7 @@ static void drw_shgroup_uniform(DRWShadingGroup *shgroup, size_t len = strlen(name) + 1; if (len >= max_len) { - DST.uniform_names.buffer_len += DRW_UNIFORM_BUFFER_NAME_INC; + DST.uniform_names.buffer_len += MAX2(DST.uniform_names.buffer_len, len); DST.uniform_names.buffer = MEM_reallocN(DST.uniform_names.buffer, DST.uniform_names.buffer_len); } |