Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <mail@jlucke.com>2019-05-21 18:14:38 +0300
committerJacques Lucke <mail@jlucke.com>2019-05-21 18:17:56 +0300
commit6f893d6f05fb90008c8dcdc1ba3bb6b619ad645b (patch)
tree9115350fe243ff2f0d62aa57cc734651cdfd1322
parent03ad013c0a804dfa66720cc89da610ffb8cd8343 (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.h1
-rw-r--r--source/blender/draw/intern/draw_manager_data.c2
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);
}