DRW: Fix redundant texture creation
authorClément Foucault <foucault.clem@gmail.com>
Tue, 11 Dec 2018 20:25:17 +0000 (21:25 +0100)
committerClément Foucault <foucault.clem@gmail.com>
Tue, 11 Dec 2018 20:25:17 +0000 (21:25 +0100)
source/blender/draw/intern/draw_common.c

index e3fde3d8a5d76937cda40b40d74c0584196167c9..35f060bd3baa6cee5c9ffae66903feaa37b8c50e 100644 (file)
@@ -163,29 +163,28 @@ void DRW_globals_update(void)
 
        DRW_uniformbuffer_update(globals_ubo, &ts);
 
-       ColorBand ramp = {0};
-       float *colors;
-       int col_size;
+       if (!globals_ramp) {
+               ColorBand ramp = {0};
+               float *colors;
+               int col_size;
 
-       ramp.tot = 3;
-       ramp.data[0].a = 1.0f;
-       ramp.data[0].b = 1.0f;
-       ramp.data[0].pos = 0.0f;
-       ramp.data[1].a = 1.0f;
-       ramp.data[1].g = 1.0f;
-       ramp.data[1].pos = 0.5f;
-       ramp.data[2].a = 1.0f;
-       ramp.data[2].r = 1.0f;
-       ramp.data[2].pos = 1.0f;
+               ramp.tot = 3;
+               ramp.data[0].a = 1.0f;
+               ramp.data[0].b = 1.0f;
+               ramp.data[0].pos = 0.0f;
+               ramp.data[1].a = 1.0f;
+               ramp.data[1].g = 1.0f;
+               ramp.data[1].pos = 0.5f;
+               ramp.data[2].a = 1.0f;
+               ramp.data[2].r = 1.0f;
+               ramp.data[2].pos = 1.0f;
 
-       BKE_colorband_evaluate_table_rgba(&ramp, &colors, &col_size);
+               BKE_colorband_evaluate_table_rgba(&ramp, &colors, &col_size);
 
-       if (globals_ramp) {
-               GPU_texture_free(globals_ramp);
-       }
-       globals_ramp = GPU_texture_create_1D(col_size, GPU_RGBA8, colors, NULL);
+               globals_ramp = GPU_texture_create_1D(col_size, GPU_RGBA8, colors, NULL);
 
-       MEM_freeN(colors);
+               MEM_freeN(colors);
+       }
 
        /* Weight Painting color ramp texture */
        bool user_weight_ramp = (U.flag & USER_CUSTOM_RANGE) != 0;