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:
authorClément Foucault <foucault.clem@gmail.com>2018-03-31 20:32:28 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-03-31 20:43:22 +0300
commitc77870fc78f594411c9831ee77eba2167a702fd7 (patch)
tree8ca99ec3f8745f2b3c4cd1f8e85df8e550ae5534 /source/blender/editors/interface/interface.c
parent4dc0c923fb7f5c9c6f36ce0a63c1d19f241befa2 (diff)
UI: Perf: Batch icons drawcalls together.
For this we use a new shader that gets it's data from a uniform array. Vertex shader position the vertices using these data. Using glUniform is way faster than using imm for that matter. Like BLF rendering, UI icons are always (as far as I know) non occluded and displayed above everything else. They also does not overlap with texts so they can be batched at the same time.
Diffstat (limited to 'source/blender/editors/interface/interface.c')
-rw-r--r--source/blender/editors/interface/interface.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 0050340d842..0c786874180 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -64,6 +64,7 @@
#include "BLT_translation.h"
#include "UI_interface.h"
+#include "UI_interface_icons.h"
#include "IMB_imbuf.h"
@@ -1427,6 +1428,7 @@ void UI_block_draw(const bContext *C, uiBlock *block)
ui_draw_aligned_panel(&style, block, &rect, UI_panel_category_is_visible(ar));
BLF_batch_draw_begin();
+ UI_icon_draw_cache_begin();
/* widgets */
for (but = block->buttons.first; but; but = but->next) {
@@ -1440,6 +1442,7 @@ void UI_block_draw(const bContext *C, uiBlock *block)
}
}
+ UI_icon_draw_cache_end();
BLF_batch_draw_end();
/* restore matrix */