[Bf-blender-cvs] [0feb03e680d] master: Fix T73763: Laggy when zooming a node editor with International Fonts

mano-wii noreply at git.blender.org
Sat Feb 15 16:19:04 CET 2020


Commit: 0feb03e680d680c3b8eba0327f74c4fa1f49c6fa
Author: mano-wii
Date:   Sat Feb 15 12:18:43 2020 -0300
Branches: master
https://developer.blender.org/rB0feb03e680d680c3b8eba0327f74c4fa1f49c6fa

Fix T73763: Laggy when zooming a node editor with International Fonts

Two main reasons for the lag:
- Allocation of memory with transfer to GPU.
- BLF_cache_clear();

The (partial) solution is to avoid memory allocating in some setups
through the `GPU_texture_clear`.

Differential Revision: https://developer.blender.org/D6837

===================================================================

M	source/blender/blenfont/intern/blf_glyph.c

===================================================================

diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 535366b78fa..80d43a49e77 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -265,16 +265,16 @@ static void blf_glyph_cache_texture(FontBLF *font, GlyphCacheBLF *gc)
     gc->p2_height = font->tex_size_max;
   }
 
-  unsigned char *pixels = MEM_callocN((size_t)gc->p2_width * (size_t)gc->p2_height,
-                                      "BLF texture init");
   GPUTexture *tex = GPU_texture_create_nD(
-      gc->p2_width, gc->p2_height, 0, 2, pixels, GPU_R8, GPU_DATA_UNSIGNED_BYTE, 0, false, error);
-  MEM_freeN(pixels);
-  gc->textures[gc->texture_current] = tex;
+      gc->p2_width, gc->p2_height, 0, 2, NULL, GPU_R8, GPU_DATA_UNSIGNED_BYTE, 0, false, error);
+
   GPU_texture_bind(tex, 0);
   GPU_texture_wrap_mode(tex, false);
   GPU_texture_filters(tex, GPU_NEAREST, GPU_LINEAR);
+  GPU_texture_clear(tex, GPU_DATA_UNSIGNED_BYTE, NULL);
   GPU_texture_unbind(tex);
+
+  gc->textures[gc->texture_current] = tex;
 }
 
 GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c)



More information about the Bf-blender-cvs mailing list